This version was released on 2001-10-22.

I'm tempted to nickname this release "Enterprise", but I'm not gonna.

Rocco applied Tony Cook's documentation patch.

Sungo applied his Preprocessor.pm patch that lets packages inherit macros and constants from other packages. It's another step towards making Session inheritable.

Rocco applied Sky's patch to prevent Filter::HTTPD from mangling newlines in responses' content. Sky's patch also documents how to stream large files.

Rocco applied a patch to Component::Server::TCP so it doesn't generate missing-state warnings.

Rocco applied an experimental patch to Kernel's SIGCHLD code. It slowly polls for child processes to reap (once a second) until some CHLD signal arrives. After that, it polls rapidly until no more are available. Then it goes back into once per second mode.

Ingy noticed that the deprecation warnings for using coderefs as event names in SocketFactory were really confusing. Rocco changed them, hopefully for the better.

may break code: Rocco recombined the event and alarm queues. This is a big internal change to POE::Kernel and POE::Kernel::*, but it doesn't affect public interfaces. It's marked as potential breakage for people who are working in POE's guts.

may break code: Rocco cleaned up POE::Kernel and POE::Kernel::* names. Replace "state transition event" with "event". Replace "state" with "event" when it refers to events. Replace "state" with "event handler" when it refers to code invoked to handle events. Fix up the documentation a little, too. This could potentially break programs that rely on undocumented POE::Kernel internals.

Received reports that Linux's select() will block indefinitely if it's somehow interrupted with a signal when called with a 0s timeout. It's been implicated with the sudden lockup of long-running processes. Rocco worked around it by setting the minimum select() timeout to 1 microsecond on Linux.

Rocco added defined tests to Wheel::Run so that it doesn't generate errors on Ctrl-C.

Rocco added code to POE::Wheel::FollowTail so it can emit a ResetEvent when files it watch have been reset.

Rocco fixed a bug in _alarm_find per Kirill's recommendation. It would die with "internal inconsistency: alarm should have been found" on long alarm queues.

Rocco fixed a bug that Kirill spotted in POE::Kernel::Select's macro substrate_ignore_filehandle. It assumed /$/ was really the end of a string, but /$/ can match before a newline. As a result, select(2) vectors were getting mangled, causing mysterious "select error: Bad file descriptor" or "select error: Unknown error" messages.

may break code: Rocco made it so that posted keep sessions alive. This simplifies inter-session communication greatly, eliminating the need to call() between sessions. Chances are that this won't break many (any?) programs, but it's flagged as such to catch your attention.

Rocco Debugged FollowTail code per freeside's test case.

Rocco fixed a leak in Kernel/Tk.pm. Circular references on filehandles (in Tk?) were preventing them from closing. Stringifying a handle in a strategic place (it was being used as a hash key anyway) broke the reference loop and let handles close properly.

Dieter Pearcey told Rocco to remove an apostrophe from a comment, so he did.

Back to POE CHANGES.