python 3.x – How do the loop runners (presumably synchronized) start the loop of asynchronous events?

Where is the implementation interface in Python documented that allows asynchronous loop brokers (trio, asyncio, curio) to start all the shebang?

We know that synchronization functions can not call asynchronous functions, and yet, asynchronous implementations have a magic function that starts the entire event loop, for example:

trio.run (some ... asynchronous ... fun) ...

docstring: except that: func: `run` can (and should) be called from a synchronous context.

Google & # 39; python start an async event loop & # 39; it refers to asyncio documentation, which is a specific implementation.

Are the asyncio / trio / curio loop runners crafted to break the sync-> async wall?