This version was released on 2000-06-07.

This version was placed on the web site, but a-mused and ignatz found bugs SocketFactory right away. As a result, I held off announcing it to the mailing list until a fix could be included.

Added t/12_signals_ev.t to test Event's SIGCHLD handler. It's pretty much the same as t/11_signals_poe.t, but using Event or skipping itself if Event is not available.

Increased the time that t/11_signals_poe.t waits to reap children. On memory- and cpu-challenged systems, swap times could delay process exits, causing false failures when the test program timed out.

Fimmtiu discovered why it's bad to post _start yourself, and I decided it would be best for everyone to document it.

Philip Gwyn patched POE::Kernel to unwind SIGCHLD reaping loops. This greatly reduces the amount of work done in POE's stock $SIG{CHLD} handlers which in turn reduces the probability that SIGCHLD will segfault Perl. Note, however, that the chance of this occurring will remain nonzero as long as Perl is not signal safe. (Also, the patch wouldn't apply and I sort of redid the code as I spliced it into the the Kernel. I'll know when Philip tests it whether I've broken his algorithm.)

may break code: $kernel->fork() was broken during the SIGCHLD revision.

Tweaked postbacks. Older Perl versions were not doing the right things with \@_ in POE::Session's postback() method. Replaced it with [ @_ ] instead.

Expanded t/02_alarms.t to test the big-queue binary search and insert code. Previous tests didn't expand the alarm queue past the maximum threshhold for linear insertion.

Macro-ized some of the redundant bits between the Tk and Event code.

Normalized the names of some functions; added leading underscores here and there.

Added test coverage information to the README.

Added t/09_wheels_unix.t to test Wheel::ReadWrite and Wheel::SocketFactory against UNIX domain sockets. This will fail terribly wherever UNIX sockets aren't supported; I should skip it on platforms where people complain about its failure.

Added t/10_wheels_tcp.t to test Wheel::ReadWrite and Wheel::SocketFactory against INET/TCP sockets.

Added t/11_signals_poe.t to test POE's stock signal handlers. These are Perl's own signal handlers, and all the caveats apply.

Added Exporter; TestSetup exports its functions now. TestSetup use syntax changed, so I added &test_setup to set things up instead of &import.

Added &ok, &not_ok and &results to buffer and report on the results of tests that occur in indeterminate orders.

Added TestSetup functions stderr_pause() and stderr_resume() to turn STDERR off and back on when testing code known to show diagsonstics.

Added ID resolution tests to t/03_aliases.t.

Added the kernel's ID to its ID-to-session lookup table, so that $kernel->ID_id_to_session($kernel->ID) would return $kernel. It's silly but complete now.

Added t/08_errors.t to test error conditions, something that the other tests never covered.

Added lib/Devel/Trace.pm. This is a custom debugging module (used with -d:Trace) that collects information about runnable Perl statements and the ones actually called. It's only used for reporting on test coverage during development and isn't installed.

Added lib/coverage.perl. This program runs t/*.t with -d:Trace to collect coverage statistics; then it gathers up the results and writes a report.

Added t/00_coverage.t to load every "released" module so that the test coverage report can learn the set of all testable modules.

Philip Gwyn pointed out that waitpid() returns 0 on some platforms to indicate outstanding child processes that haven't yet exited. I was treating 0 as a valid PID. The waitpid() return value checks are fixed now.

Fletch found all sorts of badness in POE::Kernel's fork() method and related polling loop. It boiled down to bad assumptions about $SIG{CHLD} = 'IGNORE' and a stupid use of keys() without scalar().

may break code: Revised the Changes for 0.0906, dated 2000.02.20 to note an interface change in Wheel::ReadWrite's put() method. This Changes change isn't a compatibility issue, but the original change is.

POE::Preprocessor adds "# line" directives so that macro expansions don't break line numbers in warnings and errors. Unfortunately, this badly breaks -d modules, such as the debugger and various profilers. So now POE::Preprocessor omits "# line" directives when -d is used. This'll let you see everything being run, at the expense of correct line numbers.

Added a rudimentary signals test to t/01_sessions.t, which uses POE's own event loop.

Added a rudimentary signals test to t/07_event.t, which uses Event's event loop.

Will not add a signals test to t/06_tk.t. Tk does not have its own signal watchers, so this would only test POE's.

Made minor revisions to the tiny and relatively new POE::Preprocessor documentation.

Back to POE CHANGES.