HOE is a reimplementation (attempt) of the Perl library POE (written by grand master Rocco Caputo). As it stands it's only a partial implementation of the API set forth by POE (really just POE::Kernel.) I may never finish it... it may never work entirely. I'm just having fun.
The current list of good things about HOE are as follows:
- No internal reference counting (uses perl destruction to trigger all cleanup events). This means you can hold on to session references and the kernel will not destruct... I personally love this. This requires a little bit of use of Weakref (when storing the Session ID lists... I think that's all it was for) and as such requires a somewhat modern perl.
- Real SIGCHLD handling, which is good for fast cleanup of Wheel::Run objects. I use this for dispatching my startup scripts on linux in parallel. This requires modern perl (again) and has only been tested on Linux 2.6.
- Faster dispatch, I think. I don't really remember. Maybe I dreamt it. I don't care really (but I certainly think it should be faster, considering how short the code actually is.)
- POE has made me very happy, this may be a side-effect of the treatment though.
The current list of things that I do have working:
- post/yield/call - completely working
- _start and _stop event dispatch, happens at the proper times... I think
- delay() and alarm() and related calls
- sig('chld'... functionality
- signal() dispatching
- file descriptor watching
I dunno, just look at the kernel method coverage
here.
The current list of things not working, that I care to note (and am thinking about):
- IDLE and ZOMBIE signals, regarding when the kernel has fallen victim to boredom.
- Fatal error handling. Sometimes when perl starts global destruction HOE spews tons of warnings about trying to do things with undefined sessions and during kernel activity. Sometimes it even restarts the main dispatch loop and happily continues running despite being in global destruction, how's THAT for plowing through errors :)
- Other signal handling
- fatal signal cleanups
As it stands though, I use the existing API to boot my laptop, run IRC bots, and drive my car (audio). Have a go if you'd like. http://svn.kuiki.net/hoe/trunk
The doctors say I need to put my coat back on now, thanks Rocco :]