As promised here is an update on the status of the reactive API work (both
reactor and container). I'm also adding a 0.9 release status since it is
related. If you don't care about the details of the reactive API work then
skip to the end for the release details.
For the reactive API work, first off I want to reiterate that the reactor
work is intended to complement Gordon's work, not compete with it. What
I've developed in C is essentially a port of the same style of reactor that
Gordon has developed in python. The python Reactor class is the swig
wrapped python binding for the C reactor implementation.
The goal here is that Gordon's Container class can simply extend Reactor
and rely on the C implementation for all the core event processing and
dispatch. This will hopefully simplify the implementation of Container, as
well as allow handlers in C and python to work seamlessly with each other.
This ability actually opens up some very powerful and exciting new
possibilities, but I'll spare you the details for now.
The API and examples Gordon has built out should remain largely (perhaps
entirely) unchanged by all this. Gordon is working a couple of patches to
get this to work as advertised, but I believe we are almost there.
Speaking of examples, I should clarify that my intention with the reactor
examples is to supply a kind of tutorial on how the core event processing
model works, covering things like how to schedule a recurring task, perform
blocking file I/O, integrate external fds into the I/O loop, replacing the
I/O loop, debugging the event stream, and also how to use delegation
between handlers to break up your application into smaller cooperating
components, as well as to leverage our library of existing components. This
category of stuff isn't intended to be the top level "hello world" for
proton, but rather what you would go to after you've got your top level
hello-world up and running and you need build a more complete mental model
of how the core processing works in order to develop/debug your modified
helllo-world into a more comprehensive piece of software.
The way the examples are structured right now might not make this entirely
obvious. I think pulling Gordon's examples up to the top level might help
clarify things a bit, as these are really the first ones I'd expect you'd
want to look at, and then the reactor sub-directory would be where you'd go
for the deeper dive into the sort of stuff I mentioned. This would also be
consistent with Justin's suggestion around removing the term "engine" from
the package namespaces.
My hope is the last few details of all this will drop into place in the
next few days, at which point I think we'll be all set for 0.9 alpha 3.
Hopefully this helps clear up any confusion, but please follow up with any