perl 5.7.3 Available

pudge on 2002-03-05T12:28:59

perl 5.7.3 is available. This is the last developer release before the major release of 5.8.0 in April or May, so if ever you wanted to help do some testing, now is the time, so go download it, read and follow the instructions closely, and, as the pumpking says, have appropriate amounts of fun.

Update: 03/05 17:53 GMT by P : Check out the mirror at SourceForge.net if you're having trouble from www.cpan.org.


Safe Signals...

Trey on 2002-03-06T04:26:39

Safe Signals
Perl used to be fragile in that signals arriving at inopportune moments could corrupt Perl's internal state. Now Perl postpones handling of signals until it's safe (between opcodes).

This change may have surprising side effects because signals no longer interrupt Perl instantly. Perl will now first finish whatever it was doing, like finishing an internal operation (like sort()) or an external operation (like an I/O operation), and only then look at any arrived signals (and before starting the next operation). No more corrupt internal state since the current operation is always finished first, but the signal may take more time to get heard.
-- from perldelta.pod

Does this mean that the common trick of using an alarm inside an eval to interrupt system calls with undesirably long timeouts, like network operations, will no longer work? I use this constantly!

Re:Safe Signals...

djberg96 on 2002-03-06T13:43:36

I'm curious myself. I'm also curious if this means they've fixed the $SIG{__WARN__} and $SIG{__DIE__} problems in conjunction with 'eval'.

Hopefully, this will also eliminate the plethora of "bad file descriptor" warnings that inexplicably crop up.

Re:Safe Signals...

jhi on 2002-03-06T17:16:07

Maybe the section needs to be reworded to be less alarming.

kosh:/tmp/jhi/perl ; ./perl -le '$SIG{ALRM}=sub{print time;die"alarm"};alarm 3;print time;<>' 1015434624
1015434627
alarm at -e line 1.
kosh:/tmp/jhi/perl ;

The STDIN read timeouts just fine. If you could give an example of how you use alarm? (Better yet, if you could try your code with 5.7.3, since my plate is quite full.)