I don't think #[no_std] has any effect here, other that guaranteeing that know runtime-using functions are called (by not linking in any runtime at all).
I believe you can also just start runtimes in each call into Rust. Obviously it won't be particularly efficient.
Would it be possible to lazily start libnative if a call into the runtime is made but there's none there, but then keep it running for that thread for subsequent calls?
Maybe? The current design is starting a runtime is a blocking call, though, i.e. I think you'd call `native::run`[1] and run anything needing a runtime inside that (I haven't experimented with this part of our FFI in detail).
I believe you can also just start runtimes in each call into Rust. Obviously it won't be particularly efficient.