Correctly if I'm wrong, but IIRC low-level futures are very dependent on executor? I think you actually told me that, but that was back in futures 0.1 era.
You're probably thinking of IO streams that ultimately have their wakers woken via epoll - they do this by expecting there to be some IO reactor running the epoll loop that they can register their fd+waker with. They don't directly depend on a specific executor, just on the presence of a specific IO reactor. For something specific like tokio's IO streams, it would require tokio to provide its IO reactor as a standalone thing that could be run independent of using its `Runtime` executor.
“Leaf” futures often are, yes. This term (coming from like, a tree) is a tad more descriptive than “low level” IMHO. We have yet to achieve a fully agnostic solution everywhere. That’s part of what work in this area is trying to figure out, as I understand it.
> That’s part of what work in this area is trying to figure out, as I understand it.
Yes, there have been a couple of ideas floating around, and a couple of older RFCs that needed more revision, such as boat's `#[global_executor]`, and discussion about an extension to task::Context that would allow futures to interact with their environment (timers, etc). There is a lot of work going on in this area, but nothing concrete yet.