1*43890927Smillert=head1 NAME 2*43890927Smillert 3*43890927Smillertperl584delta - what is new for perl v5.8.4 4*43890927Smillert 5*43890927Smillert=head1 DESCRIPTION 6*43890927Smillert 7*43890927SmillertThis document describes differences between the 5.8.3 release and 8*43890927Smillertthe 5.8.4 release. 9*43890927Smillert 10*43890927Smillert=head1 Incompatible Changes 11*43890927Smillert 12*43890927SmillertMany minor bugs have been fixed. Scripts which happen to rely on previously 13*43890927Smillerterroneous behaviour will consider these fixes as incompatible changes :-) 14*43890927SmillertYou are advised to perform sufficient acceptance testing on this release 15*43890927Smillertto satisfy yourself that this does not affect you, before putting this 16*43890927Smillertrelease into production. 17*43890927Smillert 18*43890927SmillertThe diagnostic output of Carp has been changed slightly, to add a space after 19*43890927Smillertthe comma between arguments. This makes it much easier for tools such as 20*43890927Smillertweb browsers to wrap it, but might confuse any automatic tools which perform 21*43890927Smillertdetailed parsing of Carp output. 22*43890927Smillert 23*43890927SmillertThe internal dump output has been improved, so that non-printable characters 24*43890927Smillertsuch as newline and backspace are output in C<\x> notation, rather than 25*43890927Smillertoctal. This might just confuse non-robust tools which parse the output of 26*43890927Smillertmodules such as Devel::Peek. 27*43890927Smillert 28*43890927Smillert=head1 Core Enhancements 29*43890927Smillert 30*43890927Smillert=head2 Malloc wrapping 31*43890927Smillert 32*43890927SmillertPerl can now be built to detect attempts to assign pathologically large chunks 33*43890927Smillertof memory. Previously such assignments would suffer from integer wrap-around 34*43890927Smillertduring size calculations causing a misallocation, which would crash perl, and 35*43890927Smillertcould theoretically be used for "stack smashing" attacks. The wrapping 36*43890927Smillertdefaults to enabled on platforms where we know it works (most AIX 37*43890927Smillertconfigurations, BSDi, Darwin, DEC OSF/1, FreeBSD, HP/UX, GNU Linux, OpenBSD, 38*43890927SmillertSolaris, VMS and most Win32 compilers) and defaults to disabled on other 39*43890927Smillertplatforms. 40*43890927Smillert 41*43890927Smillert=head2 Unicode Character Database 4.0.1 42*43890927Smillert 43*43890927SmillertThe copy of the Unicode Character Database included in Perl 5.8 has 44*43890927Smillertbeen updated to 4.0.1 from 4.0.0. 45*43890927Smillert 46*43890927Smillert=head2 suidperl less insecure 47*43890927Smillert 48*43890927SmillertPaul Szabo has analysed and patched C<suidperl> to remove existing known 49*43890927Smillertinsecurities. Currently there are no known holes in C<suidperl>, but previous 50*43890927Smillertexperience shows that we cannot be confident that these were the last. You may 51*43890927Smillertno longer invoke the set uid perl directly, so to preserve backwards 52*43890927Smillertcompatibility with scripts that invoke #!/usr/bin/suidperl the only set uid 53*43890927Smillertbinary is now C<sperl5.8.>I<n> (C<sperl5.8.4> for this release). C<suidperl> 54*43890927Smillertis installed as a hard link to C<perl>; both C<suidperl> and C<perl> will 55*43890927Smillertinvoke C<sperl5.8.4> automatically the set uid binary, so this change should 56*43890927Smillertbe completely transparent. 57*43890927Smillert 58*43890927SmillertFor new projects the core perl team would strongly recommend that you use 59*43890927Smillertdedicated, single purpose security tools such as C<sudo> in preference to 60*43890927SmillertC<suidperl>. 61*43890927Smillert 62*43890927Smillert=head2 format 63*43890927Smillert 64*43890927SmillertIn addition to bug fixes, C<format>'s features have been enhanced. See 65*43890927SmillertL<perlform> 66*43890927Smillert 67*43890927Smillert=head1 Modules and Pragmata 68*43890927Smillert 69*43890927SmillertThe (mis)use of C</tmp> in core modules and documentation has been tidied up. 70*43890927SmillertSome modules available both within the perl core and independently from CPAN 71*43890927Smillert("dual-life modules") have not yet had these changes applied; the changes 72*43890927Smillertwill be integrated into future stable perl releases as the modules are 73*43890927Smillertupdated on CPAN. 74*43890927Smillert 75*43890927Smillert=head2 Updated modules 76*43890927Smillert 77*43890927Smillert=over 4 78*43890927Smillert 79*43890927Smillert=item Attribute::Handlers 80*43890927Smillert 81*43890927Smillert=item B 82*43890927Smillert 83*43890927Smillert=item Benchmark 84*43890927Smillert 85*43890927Smillert=item CGI 86*43890927Smillert 87*43890927Smillert=item Carp 88*43890927Smillert 89*43890927Smillert=item Cwd 90*43890927Smillert 91*43890927Smillert=item Exporter 92*43890927Smillert 93*43890927Smillert=item File::Find 94*43890927Smillert 95*43890927Smillert=item IO 96*43890927Smillert 97*43890927Smillert=item IPC::Open3 98*43890927Smillert 99*43890927Smillert=item Local::Maketext 100*43890927Smillert 101*43890927Smillert=item Math::BigFloat 102*43890927Smillert 103*43890927Smillert=item Math::BigInt 104*43890927Smillert 105*43890927Smillert=item Math::BigRat 106*43890927Smillert 107*43890927Smillert=item MIME::Base64 108*43890927Smillert 109*43890927Smillert=item ODBM_File 110*43890927Smillert 111*43890927Smillert=item POSIX 112*43890927Smillert 113*43890927Smillert=item Shell 114*43890927Smillert 115*43890927Smillert=item Socket 116*43890927Smillert 117*43890927SmillertThere is experimental support for Linux abstract Unix domain sockets. 118*43890927Smillert 119*43890927Smillert=item Storable 120*43890927Smillert 121*43890927Smillert=item Switch 122*43890927Smillert 123*43890927SmillertSynced with its CPAN version 2.10 124*43890927Smillert 125*43890927Smillert=item Sys::Syslog 126*43890927Smillert 127*43890927SmillertC<syslog()> can now use numeric constants for facility names and priorities, 128*43890927Smillertin addition to strings. 129*43890927Smillert 130*43890927Smillert=item Term::ANSIColor 131*43890927Smillert 132*43890927Smillert=item Time::HiRes 133*43890927Smillert 134*43890927Smillert=item Unicode::UCD 135*43890927Smillert 136*43890927Smillert=item Win32 137*43890927Smillert 138*43890927SmillertWin32.pm/Win32.xs has moved from the libwin32 module to core Perl 139*43890927Smillert 140*43890927Smillert=item base 141*43890927Smillert 142*43890927Smillert=item open 143*43890927Smillert 144*43890927Smillert=item threads 145*43890927Smillert 146*43890927SmillertDetached threads are now also supported on Windows. 147*43890927Smillert 148*43890927Smillert=item utf8 149*43890927Smillert 150*43890927Smillert=back 151*43890927Smillert 152*43890927Smillert=head1 Performance Enhancements 153*43890927Smillert 154*43890927Smillert=over 4 155*43890927Smillert 156*43890927Smillert=item * 157*43890927Smillert 158*43890927SmillertAccelerated Unicode case mappings (C</i>, C<lc>, C<uc>, etc). 159*43890927Smillert 160*43890927Smillert=item * 161*43890927Smillert 162*43890927SmillertIn place sort optimised (eg C<@a = sort @a>) 163*43890927Smillert 164*43890927Smillert=item * 165*43890927Smillert 166*43890927SmillertUnnecessary assignment optimised away in 167*43890927Smillert 168*43890927Smillert my $s = undef; 169*43890927Smillert my @a = (); 170*43890927Smillert my %h = (); 171*43890927Smillert 172*43890927Smillert=item * 173*43890927Smillert 174*43890927SmillertOptimised C<map> in scalar context 175*43890927Smillert 176*43890927Smillert=back 177*43890927Smillert 178*43890927Smillert=head1 Utility Changes 179*43890927Smillert 180*43890927SmillertThe Perl debugger (F<lib/perl5db.pl>) can now save all debugger commands for 181*43890927Smillertsourcing later, and can display the parent inheritance tree of a given class. 182*43890927Smillert 183*43890927Smillert=head1 Installation and Configuration Improvements 184*43890927Smillert 185*43890927SmillertThe build process on both VMS and Windows has had several minor improvements 186*43890927Smillertmade. On Windows Borland's C compiler can now compile perl with PerlIO and/or 187*43890927SmillertUSE_LARGE_FILES enabled. 188*43890927Smillert 189*43890927SmillertC<perl.exe> on Windows now has a "Camel" logo icon. The use of a camel with 190*43890927Smillertthe topic of Perl is a trademark of O'Reilly and Associates Inc., and is used 191*43890927Smillertwith their permission (ie distribution of the source, compiling a Windows 192*43890927Smillertexecutable from it, and using that executable locally). Use of the supplied 193*43890927Smillertcamel for anything other than a perl executable's icon is specifically not 194*43890927Smillertcovered, and anyone wishing to redistribute perl binaries I<with> the icon 195*43890927Smillertshould check directly with O'Reilly beforehand. 196*43890927Smillert 197*43890927SmillertPerl should build cleanly on Stratus VOS once more. 198*43890927Smillert 199*43890927Smillert=head1 Selected Bug Fixes 200*43890927Smillert 201*43890927SmillertMore utf8 bugs fixed, notably in how C<chomp>, C<chop>, C<send>, and 202*43890927SmillertC<syswrite> and interact with utf8 data. Concatenation now works correctly 203*43890927Smillertwhen C<use bytes;> is in scope. 204*43890927Smillert 205*43890927SmillertPragmata are now correctly propagated into (?{...}) constructions in regexps. 206*43890927SmillertCode such as 207*43890927Smillert 208*43890927Smillert my $x = qr{ ... (??{ $x }) ... }; 209*43890927Smillert 210*43890927Smillertwill now (correctly) fail under use strict. (As the inner C<$x> is and 211*43890927Smillerthas always referred to C<$::x>) 212*43890927Smillert 213*43890927SmillertThe "const in void context" warning has been suppressed for a constant in an 214*43890927Smillertoptimised-away boolean expression such as C<5 || print;> 215*43890927Smillert 216*43890927SmillertC<perl -i> could C<fchmod(stdin)> by mistake. This is serious if stdin is 217*43890927Smillertattached to a terminal, and perl is running as root. Now fixed. 218*43890927Smillert 219*43890927Smillert=head1 New or Changed Diagnostics 220*43890927Smillert 221*43890927SmillertC<Carp> and the internal diagnostic routines used by C<Devel::Peek> have been 222*43890927Smillertmade clearer, as described in L</Incompatible Changes> 223*43890927Smillert 224*43890927Smillert=head1 Changed Internals 225*43890927Smillert 226*43890927SmillertSome bugs have been fixed in the hash internals. Restricted hashes and 227*43890927Smillerttheir place holders are now allocated and deleted at slightly different times, 228*43890927Smillertbut this should not be visible to user code. 229*43890927Smillert 230*43890927Smillert=head1 Future Directions 231*43890927Smillert 232*43890927SmillertCode freeze for the next maintenance release (5.8.5) will be on 30th June 233*43890927Smillert2004, with release by mid July. 234*43890927Smillert 235*43890927Smillert=head1 Platform Specific Problems 236*43890927Smillert 237*43890927SmillertThis release is known not to build on Windows 95. 238*43890927Smillert 239*43890927Smillert=head1 Reporting Bugs 240*43890927Smillert 241*43890927SmillertIf you find what you think is a bug, you might check the articles 242*43890927Smillertrecently posted to the comp.lang.perl.misc newsgroup and the perl 243*43890927Smillertbug database at http://bugs.perl.org. There may also be 244*43890927Smillertinformation at http://www.perl.org, the Perl Home Page. 245*43890927Smillert 246*43890927SmillertIf you believe you have an unreported bug, please run the B<perlbug> 247*43890927Smillertprogram included with your release. Be sure to trim your bug down 248*43890927Smillertto a tiny but sufficient test case. Your bug report, along with the 249*43890927Smillertoutput of C<perl -V>, will be sent off to perlbug@perl.org to be 250*43890927Smillertanalysed by the Perl porting team. You can browse and search 251*43890927Smillertthe Perl 5 bugs at http://bugs.perl.org/ 252*43890927Smillert 253*43890927Smillert=head1 SEE ALSO 254*43890927Smillert 255*43890927SmillertThe F<Changes> file for exhaustive details on what changed. 256*43890927Smillert 257*43890927SmillertThe F<INSTALL> file for how to build Perl. 258*43890927Smillert 259*43890927SmillertThe F<README> file for general stuff. 260*43890927Smillert 261*43890927SmillertThe F<Artistic> and F<Copying> files for copyright information. 262*43890927Smillert 263*43890927Smillert=cut 264