[Originally sent 4 August, but I don't know if it ever reached the list.]

First, POE has achieved "four nines", at least in version number. Aheh. If you're on IRC you've probably already heard that joke. Moving right along....

Well, most obviously is the fact that we can't avoid a 1.0000 release without adding more precision. I'm not inclined to go there, so the next release will be that magical version. Meanwhile we're on an informal feature freeze. That is, I'm going to reject new features whenever possible and focus on bug and doc fixes for the big one-oh. As usual, your patches are highly welcome. :)

But what's changed in 0.9999, you ask:

We've eliminated the nasty install-time filter for "use bytes". Now we use Phil Harvey's technique to conditionally use bytes.pm if it's available. Without resorting to source-filter shenanigans. Way to go! This has plagued the code for years.

Marlon Bailey found a bug in POE::Filter::HTTPD. Mixed-case methods would throw errors. Now they don't.

Shevek suggested using Fcntl for the non-blocking ioctl() constants. It seemed harmless (and perhaps more robust) to do so, so now we do.

Now POE::Wheel::ReadWrite provides accessors to get the filehandle back out. In case you ever need it again.

Yuval Kogman discovered that sig_child() events were not being fired after a second POE::Kernel->run() in the same program. Signal initializations were moved from compile to run time, and it all became good.

STRO and Eric Hacker provided fixes for IPv6 support in POE::Wheel::SocketFactory. Those patches were dutifully applied.

Philip Gwyn discovered a reference count inconsistency in filehandle management. Shame on me! Anyway, his patch fixes it right up.

One of the examples in Mark Jason Dominus' _Higher-Order_Perl_ is a function to maintain an ordered array by inserting new items in their proper places. This was very much like POE::Queue::Array, only a lot less code. In Perl, less code often means faster, so I benched it against the existing queue code. It was generally faster, especially with queues 4+ events deep. So I used his algorithm instead of mine. 94 lines removed, things should use a little less CPU, and all tests continue to pass. Fun all 'round!

Resolved some race conditions in the test suite. Transient failures should be reduced or eliminated. I'm crossing my fingers.

Gareth provided a patch for an option to make POE::Wheel::ReadWrite::put() flush immediately, and I applied it because all the tests passed. But note, this is experimental. If it becomes a problem, I won't hesitate to back the sucker out and leave y'all hanging. So if you do report an issue, try to include a test case and a patch. I'll be much more likely to fix it that way. :) Oh, and I solved the problem where POE::Loop::Tk was sucking CPU while POE was idle.

... and if that wasn't enough detail, you can always find the original commit notices in the distribution's CHANGES file. And the repository's publicly available at SourceForge. And scads of great stuff!

Finally, thanks for using my code. It's warm and tingly knowing that people find it useful, and I'm sure other contributors feel the same way.

Speaking of contributors, mega-maxithanks to you all. POE rises on the shoulders of great people. That's you.

--
Rocco Caputo - [EMAIL PROTECTED]


Reply via email to