To do ban static constructors they'd have to literally ban anything that links the C++ runtime, which is almost literally everything on your system.
Not possible.
C++ static variables can now be annotated with constinit to resolve issues like this: https://en.cppreference.com/w/cpp/language/constinit It basically asks the compiler to enforce that constructor calls can only do trivial things.
`__attribute__((constructor))` is most obviously a hack – like any great hack, it is useful enough to be implemented everywhere, but it will never be standardized because everyone acknowledges that it sucks. I used to use it! But it is extremely limited in its usefulness, and there are always better solutions to the problem.
Any class can implement +load and the runtime will call the method upon loading the class (note, this doesn't require using it at all).
https://developer.apple.com/documentation/objectivec/nsobjec...
The web similarly added the various <link rel=preload, dns-prefetch> tags, so things can be connected and fetched before the JS/CSS code is ready