[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]