This version was released on 2001-07-21.

POE::Filter::HTTPD would corrupt long requests (ones which need to be read by more than one get() call). Anton Berezin spotted the problem and patched it.

Added POE::Session::ASSERT_DEFAULT (see POE::Kernel::ASSERT_DEFAULT for an explanation), and POE::Session::ASSERT_STATES. The STATES assertion turns on "debug" options for POE::Session instances by default. With one assertion, misspelled state names are caught in an entire program. ASSERT_STATES isn't necessary for POE::NFA because that variation of POE::Session dies on bad events.

Fixed Solaris 8 test results in README. Thanks, dynweb!

Documented in TODO: An alternative design for signal propagation and handling.

Documented in TODO: An alternative to yield().

Fixed ARG0..ARG9 offsets so they match in POE::Session and POE::NFA, which they must do or bad things happen.

Removed an extra _stop in samples/preforkedserver.perl.

The following Windows fixes are in response to some fine testing by Philip Gwyn and Mike Wilkinson.

Wrap Wheel::Run's getpriority() and setpriority() calls in eval, and check their return values. Hopefully Wheel::Run won't die terribly on systems that don't support these calls.

Update the README with more detailed Windows testing information.

Change Pipe::(One|Two)Way to always use IO::Socket::INET on Windows systems. I suspect socketpair() is succeeding under Windows but creating "sockets" which select() doesn't recognize as sockets.

Fix t/01_sessions.t to skip its signals tests on Windows. Windows' signals support is, erm, lacking at this time.

Add Windows compatibility constants to the symbols which need to be cleaned out from POE::Kernel's namespace in t/08_errors.t.

Make runtime errors in macros point to the absolute line in the file where the macro was defined, rather than the offset into the macro itself. Developers can jump directly to the offending code in the file rather than count lines in the macro.

Turn const and enum constants in POE::Session and POE::NFA back into constant subs. This is a step towards inheritable sessions, now that @ISA and method calls aren't real slow anymore. There may still be a performance hit in legacy versions of Perl, but the code will still work there.

Turn DEB_DESTROY into TRACE_DESTROY in POE::Session and POE::NFA, so it's more like all the rest. I didn't actually document it, though. :)

Tweak lib/deptest.perl to print a more useful diagnostic message for not finding a module in %INC although it loaded okay.

Fix test 18's skips for unsupported compiled regexps in older perl versions (namely 5.004_05).

Add get_one_start() and get_one() to the following filters: Block, Grep, Line, Map, RecordBlock, Reference, and Stream. Switching between these filters should be robust now.

Add support for get_one_start() and get_one() to Wheel::ReadWrite. It only uses these methods if the input wheel supports them. Otherwise it falls back to the older, faster, but more dangerous get().

Tweak language for existing deprecations in TODO, so the schedule of changes is more explicit. Please don't misunderstand.

Develop the ideas for fixing filter changing in TODO. Set up a checklist, and actually begin implementing stuff.

Tested error conditions in several modules, prompting some changes.

Made the errors for Session->new() parameters a little more descriptive.

Made misuse of Filter::HTTPD->get_pending() croak instead of warn.

Made bad constructor parameters in POE::Wheel::Run fatal.

Added a test for Component::Server::TCP's "shutdown" event handler.

Added get_one_start() and get_one() tests for Filter::Block.

Added get_one_start() and get_pending() tests for Filter::Reference.

Added get_one_start(), get_one(), and get_pending() tests for Filter::Map and Filter::Grep.

Added tests for Filter::Stackable's filter stack management methods.

Back to POE CHANGES.