I don't know whether we want to have it converted on process launch, but my idea about an ntdll scheduling facility would allow something like that. The initialization would happen lazily, as soon as a unix module needs to use that facility. On macOS that would be backed by CFRunLoopRun and it would be initialized as needed. It doesn't seem necessary to have it on process launch, and it would better match what other platform have to do if we (pretend we) spawn a thread lazily.
Thinking about this more, it seems to me like it really should be done at process launch. Unlike on other platforms the Mac main thread is always running a run loop, and this is a core OS API (not something library-specific). It seems awkward that the main thread can sometimes make Wine calls and sometimes not. winemac is the primary user of the main thread, but it's not the only one. winecoreaudio will likely have a use for it soon too. I'd like to tinker with this more, but it seems like this could/should be done entirely in ntdll without any changes to winemac. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11333#note_148987