1. s2nek
  2. gevent


gevent / TODO

 - move Semaphore and BoundedSemaphore from coros to another module; deprecate coros
 - fix BoundedSemaphore to behave like standard threading's BoundedSemaphore behaves:
   raise ValueError if upper limit is reached instead of blocking.
 - "raise Timeout" means customizing exception with Timeout(exception=RuntimeError) no longer works
 - grep for XXX and QQQ
 - classes in gevent.core should not crash even if improperly used
 - do not include the standard tests in greentest/; run the standard tests unchanged through monkey patcher
 - initialize libevent in Hub.__init__()
   - support multiple event_bases
   - discourage direct use of gevent.core; put the needed methods back on Hub (timer, read_event, write_event)
 - monkey patch asyncore too? (maybe patch select.poll, so asyncore would work)
 - gevent.sleep(1000000000000000) returns immediatelly instead of raising an error like time.sleep() does
 - streaming version of wsgi.WSGIHandler
 - monkey should hold references and provide access to all the objects it replaced
 - port to stackless
 - figure out http server's tests failures on libevent2
 - split WSGIServer into AsyncWSGIServer (that does not spawn greenlets) and WSGIServer (that does)

 - use libevent 2.x's bufferevent for socket implementation (or for its _fileobject)
 - add threadsafe Queue that can be used to interact with other event loops (e.g. pygtk)