On Thursday, 16 June 2022 at 16:19:22 UTC, Ali Çehreli wrote:
pragma (crt_constructor)

You have to be pretty careful about this since it might not run in the order you expect. If there's two things in the program with a equal-priority crt constructor, they are run in arbitrary order. In a shared lib, there's also the possibility that loader locks are in place, and if it runs rt_init specifically, that can run D module constructors... which might load other libraries.

Similar concerns apply to doing rt_init in DllMain.

This is why an explicit initialization call is the preferred method - there, the time it is called is well-defined by the user after initial loading is complete.

Reply via email to