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