On May 30, 2011, at 7:25 AM, Laurens Van Houtven wrote:
> Hi!
>
> I've just been in contact with Jim Fulton, who was previously mentioned in
> the context of developing this PEP, and he's okay with us taking over.
>
> IIUC the PEP involves a few things:
> A sane reactor abstraction/interface (although they probably won't like
> pulling in z.i.I) in the standard library which everything should be able to
> implement -- essentially twisted.loop's interface. This probably includes a
> Protocol abstraction too
Yes. Practically speaking these will have to be ABCs to fit into the Python
stdlib idiom.
> A simple, potentially insane implementation for it in the stdlib -- ideally
> twisted.loop, but probably something like
> asyncore-except-slightly-less-terrible
Yes.
> A way to write code for it, probably involving @inlineCallbacks/monocle style
> yields
No.
In the interests of keeping the scope here as tight as possible, this is *not*
a PEP about Deferreds or any of their equivalents, which are substantially more
controversial. It is _just_ about an asynchronous networking API.
The most important parts are IProtocol/ITransport/IConsumer/IProducer. In
order to do anything with these, of course, you need something somewhat like
IReactorTCP/IReactorTime, but I would like to have those specified separately
in the PEP, because the main interesting thing is just getting event-driven
protocol logic based on a common API. The IReactorTCP analogue would just be a
stub to get started, not a complete specification of every connection mode you
might want. At the very least, there's SSL. Plus, even in TCP, there's a lot
of complexity there which you need to modify if you want to have different
connection/listening options (just look at the mess on the IPv6 ticket if you
think this stuff is simple).
Convenience APIs like coroutine scheduling are definitely out of scope.
> The idea here, as Glyph told me at Pycon, I believe, is that people can just
> write code that works on most backends. When they figure out the stdlib thing
> suck^H^H^H^Hdoesn't satisfy their requirements, we can just say "hey, it's
> okay, you can just replace the reactor reactor you have now with the twisted
> one and you will get all sorts of wonderful magic to play with".
In addition, it would be a way for the stdlib to gradually start evolving
towards protocol implementations which parse chunks that are fed to them rather
than calling recv() and expecting to block.
> Am I completely wrong here already or does that sound like a sane problem
> definition?
Close enough :).
> Either way I'm planning to put the PEP draft up on github (actually, I
> already have). Whether you like github or not, I think this feature:
> https://github.com/blog/844-forking-with-the-edit-button is just too amazing
> for writing a PEP as a community process to let pass.
Cool, glad to see the project is online somewhere, finally :).
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python