Good morning. POE 0.28 is released to the CPAN. This release may have installation problems related to my recent upgrade to Perl 5.8.2.
The biggest problem is a bogus META.yml file. The tools to generate META.yml expect a distribution's modules to be in a certain place that I've been using for something else. I'm reorganizing the distribution directories to align POE with the rest of CPAN. Specifically: The lib directory is being renamed to mylib. A new lib directory is being created, and POE.pm and the POE directory are being moved there. Library and tool paths throughout the distribution are being updated. This may break your testing environments. You'll no longer be able to run tests from the distribution's main directory without modification. The workaround will be to change into the lib subdirectory, or to include it in your libpath. Sorry for the inconvenience. Version 0.29 will be released shortly after the reorganization is complete. Change highlights in 0.28. First the breakage: Broken META.yml. Hurrrrrrr! A lot of POSIX errno constants were replaced by Errno ones. A lot of Windows workarounds for missing POSIX errno constants went away. This breaks POE for ActivePerl 5.6.1, circa build 633. Test::More is now an absolute requirement. This brings the total to two. It also opens the door for phasing out our four-year-old test library for modern technology. We'll be looking for people who like to write tests (both of you) to port tests to Test::More once we're done designing the new test plan. Now the features and fixes: Actual tests and fixes for POE::Filter::HTTPD! It should be a little happier all around. The tests bring our coverage report 1/25% over the magic 70% mark. I'm excited, anyway. Major doc patches here and there. The documentation for POE::Wheel::ReadWrite's put() was totally wrong about its parameters. I'm shocked nobody noticed sooner. POE.pm's POD was mostly rewritten in a freak editor accident. POE::Filter::Block was given the ability to customize how block lengths are encoded. Alexander Zangerl wanted to use more C friendly block lengths instead of parsing strings and dealing with chr(0) as a field separator. Nick Williams sent in the beginnings of a performance and status monitoring system. It's designed to have no impact unless TRACE_STATISTICS is turned on. This will surprise him, as will the file name his module has settled into. :) We're pretty sure its statistics are meaningless, but they're a great start. Gerald Richter contributed code that lets POE::Wheel::Run propagate the terminal's window size to children's pseudo TTYs. As if by magic, it even works when STDIN isn't a terminal. POE::Wheel::ReadLine has given up relying solely on Term::Cap for keystroke definitions. Instead we've hardcoded a bunch of common ones, so the vagaraties of /etc/termcap matter less. Oh, and you should be able to use your arrow keys now. MacOS X's IO::Poll doesn't export POLLRDBAND. We though ActivePerl was the only platform that has constants but refuses to export them. We were wrong. To atone, POE::Loop::Poll defines its own when needed. Graham Barr patched POE::Kernel here and there so it runs better as an Apache handler. The POE::Loop class loader has been rewritten so that their classes aren't hardcoded in POE::Kernel anymore. We still don't have a good version of dynamic loading for the POE::Resource classes, in case someone's interested there. However, we have opened the door for POE::XS versions of both POE::Loop and POE::Resource classes. The loaders for both... classes... of class will look for POE::XS versions before the plain perl ones. This lets us start writing and distributing high-performance replacements for POE's hotspots independent of the base distribution. Scott Beck contributed an experimental stop() method for POE::Kernel. Now you can halt a program dead, with caveats outlined in the docs. At least two obscure reference count leaks were found and fixed. All the $VERSION numbers have been fixed. Specifically fixed to four decimal places. This means a lot of the distribution's modules went retrograde (POE::Component 1.5 becomes 1.006, for example). This should clear itself up in another release or two. Added a shutdown_stdin() method to POE::Wheel::Run, so you can trigger a child process' EOF on STDIN. Some programs wait for the EOF before they return any data. Added Dan McCormick's callback(). This works like postback() but it immediately invokes an event handler. Some callback-based systems rely on synchrony, and they change state after calling a callback. Applied Eric's patch to allow different input and output filters for POE::Component::Server::TCP. Also applied Damir Dzeko's patch to support UNIX sockets. It would be better for the server code to be abstracted into a base class, and proper TCP and UNIX components to customize that. Fixed aliases in POE::Component::Client::TCP when reconnecting. Enhanced and documented TRACE_DESTROY. Removed the SOMAXCONN limit for Wheel::SocketFactory's listen queue. Some operating systems set SOMAXCONN to far lower than they support. Repaired missing Disconnect callbacks in Client::TCP and Server::TCP. Disconnections should be reported reliably now. Whew! -- Rocco Caputo - [EMAIL PROTECTED] - http://poe.perl.org/
