I love you.
The idea comes up from some subjective complaint (or confusion) of gevent:
- does gevent take advantages of timerfd and signalfd on Linux?
- does gevent make use of self-pipe trick to greenify Queue?
- does gevent conform to pep-3156?
- is gevent too obtrusive as a nonblocking IO patching library?
To be clear, all above is about my subjective taste and poor judgement, so please shut up if you have comments.
That's to say, APIs provides by gevent as followed won't exist here:
- gevent.pool
- gevent.queue
- gevent.spawn
- gevent.timeout
- gevent.server (ridiculous...)
Concerns are understood, but any code other than monkey.patch_all()
shall be smelly due to intensive coupling.
Some issues will be taken care later.
Linux kernel is masterpiece which exposes massive APIs to compose high proformance works, but community persist to be blind.
Following APIs will be used broadly:
- timerfd
- signalfd
- eventfd
- epoll
This will cover:
- thread-safe queue
- join (real or greenified) thread
Though I doubt what BDFL promotes for general async IO resolution, asyncio, but PEP 3156 is indeed awesome and I'd be happy to be a zealot.
Of course.