"state's monopoly on violence" means that a state's power to enforce its rules is rooted in its ability to use violence on those that refuse. Putting someone in jail is not physical violence, but what keeps them there (and why they even showed up to court) is the near guarantee of violence if they refuse.
I see, so the author resents that EULAs are enforced by the same theoretical possibility of violence which ensures the rule of law? Still seems a weird point but I'll grudgingly reduce my general level of disapproval. Thanks for the explanation.
LLVM does this on x86 because partial register writes don't break dependency chains in many cases, meaning that you can get stalls due to false dependencies.
There's nothing in LLVM itself that makes it use larger sizes, it just depends on the ABI and what's fastest when ABI doesn't matter.
In C++ there's actually a lot more freedom. You can access non-atomic non-volatile-std :: sig_atomic_t variables as long as you don't violate the data race rules.
Not really. The two languages are similar on this. The 'volatile' before 'sig_atomic_t' is still required in C++ for the same reasons as C. You can access non-volatile sig_atomic_t variables in C too, but in both languages that's not enough for the signalling that type exists for, so you have to use 'volatile sig_atomic_t', in C and C++.
An example of scenario 1) is the loop below. The 'volatile' is required in C++ the same as in C. If you interrupt the loop below in C++ with a signal handler that updates 'flag', the loop is not guaranteed to exit unless 'flag' is declared volatile.
You can test this easily. Just now I compiled the C++ code below with Clang/LLVM with -O on a Mac, and GCC with -O on Linux. On both systems and compilers, Control-C fails to stop the process if 'volatile' is not used. If compiled without -O, Control-C always interrupts the process, but you can't rely on behaviour of disabled optimisations.
#include <signal.h>
#if 0
volatile
#endif
sig_atomic_t flag = 0;
void handler(int sig) {
flag = 1;
}
int main(void) {
signal(SIGINT, handler);
while (!flag) { /* Spin waiting for flag */ }
return 0;
}
In C++ this violates the data race rules both with and without volatile, but because it's sig_atomic_t it has a special carve out _only_ if it's volatile. See https://eel.is/c++draft/basic#intro.races-22
C however states :
> When the processing of the abstract machine is interrupted by receipt of a signal, the values of objects that are neither lock-free atomic objects nor of type volatile sig_atomic_t are unspecified, [...] The representation of any object modified by the handler that is neither a lock-free atomic object nor of type volatile sig_atomic_t becomes indeterminate when the handler exits.
This wording is not present in C++, as it instead defines how signal handlers fit into the memory model.
This means that (with adjustments for C atomics):
int val = 0;
std::atomic<bool> flag{false};
void handler(int sig) {
if (!set) {
val = 1;
flag = true;
}
}
int main(void) {
signal(SIGINT, handler);
while (!flag) { /* Spin waiting for flag */ }
return val;
}
The LAION dataset, which SD was trained on, is just a list of URLs and textual descriptions. There's no illegal copying going on when StabilityAI trained SD. It's also not illegal for you to do the same thing.
There's lots of overnight street parking in the bay area, but there are lots of other opportunities to charge. The actual hard case is someone that drives a significant amount during the day, doesn't have charging at work, and can't have charging overnight. Here really the only option is DC fast charging.
However, this is a reasonable rare circumstance, and it's only getting easier to charge.
One potential source of traffic in LA that will be tough to meet with an EV solution as currently offered is the 'handyman' persona. Either legitimate businessmen such as plumbers or landscapers and what not, or those people who extend their truck beds with plywood to stack the scrap as high as the freeway bridges will let them, either way all of these groups of people are driving all day, at all hours, to oddball places all over the place, and are in need of cargo space. The job site of the day might not have reliable drinking water let alone a supercharger for you to tap into.
There are many cases of UB that would be cheap to check, but there are many more that are incredibly expensive to check.