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