home *** CD-ROM | disk | FTP | other *** search
- =head1 NAME
-
- perldelta - what is new for perl v5.8.4
-
- =head1 DESCRIPTION
-
- This document describes differences between the 5.8.3 release and
- the 5.8.4 release.
-
- =head1 Incompatible Changes
-
- Many minor bugs have been fixed. Scripts which happen to rely on previously
- erroneous behaviour will consider these fixes as incompatible changes :-)
- You are advised to perform sufficient acceptance testing on this release
- to satisfy yourself that this does not affect you, before putting this
- release into production.
-
- The diagnostic output of Carp has been changed slightly, to add a space after
- the comma between arguments. This makes it much easier for tools such as
- web browsers to wrap it, but might confuse any automatic tools which perform
- detailed parsing of Carp output.
-
- The internal dump output has been improved, so that non-printable characters
- such as newline and backspace are output in C<\x> notation, rather than
- octal. This might just confuse non-robust tools which parse the output of
- modules such as Devel::Peek.
-
- =head1 Core Enhancements
-
- =head2 Malloc wrapping
-
- Perl can now be built to detect attempts to assign pathologically large chunks
- of memory. Previously such assignments would suffer from integer wrap-around
- during size calculations causing a misallocation, which would crash perl, and
- could theoretically be used for "stack smashing" attacks. The wrapping
- defaults to enabled on platforms where we know it works (most AIX
- configurations, BSDi, Darwin, DEC OSF/1, FreeBSD, HP/UX, GNU Linux, OpenBSD,
- Solaris, VMS and most Win32 compilers) and defaults to disabled on other
- platforms.
-
- =head2 Unicode Character Database 4.0.1
-
- The copy of the Unicode Character Database included in Perl 5.8 has
- been updated to 4.0.1 from 4.0.0.
-
- =head2 suidperl less insecure
-
- Paul Szabo has analysed and patched C<suidperl> to remove existing known
- insecurities. Currently there are no known holes in C<suidperl>, but previous
- experience shows that we cannot be confident that these were the last. You may
- no longer invoke the set uid perl directly, so to preserve backwards
- compatibility with scripts that invoke #!/usr/bin/suidperl the only set uid
- binary is now C<sperl5.8.>I<n> (C<sperl5.8.4> for this release). C<suidperl>
- is installed as a hard link to C<perl>; both C<suidperl> and C<perl> will
- invoke C<sperl5.8.4> automatically the set uid binary, so this change should
- be completely transparent.
-
- For new projects the core perl team would strongly recommend that you use
- dedicated, single purpose security tools such as C<sudo> in preference to
- C<suidperl>.
-
- =head2 format
-
- In addition to bug fixes, C<format>'s features have been enhanced. See
- L<perlform>
-
- =head1 Modules and Pragmata
-
- The (mis)use of C</tmp> in core modules and documentation has been tidied up.
- Some modules available both within the perl core and independently from CPAN
- ("dual-life modules") have not yet had these changes applied; the changes
- will be integrated into future stable perl releases as the modules are
- updated on CPAN.
-
- =head2 Updated modules
-
- =over 4
-
- =item Attribute::Handlers
-
- =item B
-
- =item Benchmark
-
- =item CGI
-
- =item Carp
-
- =item Cwd
-
- =item Exporter
-
- =item File::Find
-
- =item IO
-
- =item IPC::Open3
-
- =item Local::Maketext
-
- =item Math::BigFloat
-
- =item Math::BigInt
-
- =item Math::BigRat
-
- =item MIME::Base64
-
- =item ODBM_File
-
- =item POSIX
-
- =item Shell
-
- =item Socket
-
- There is experimental support for Linux abstract Unix domain sockets.
-
- =item Storable
-
- =item Switch
-
- Synced with its CPAN version 2.10
-
- =item Sys::Syslog
-
- C<syslog()> can now use numeric constants for facility names and priorities,
- in addition to strings.
-
- =item Term::ANSIColor
-
- =item Time::HiRes
-
- =item Unicode::UCD
-
- =item Win32
-
- Win32.pm/Win32.xs has moved from the libwin32 module to core Perl
-
- =item base
-
- =item open
-
- =item threads
-
- Detached threads are now also supported on Windows.
-
- =item utf8
-
- =back
-
- =head1 Performance Enhancements
-
- =over 4
-
- =item *
-
- Accelerated Unicode case mappings (C</i>, C<lc>, C<uc>, etc).
-
- =item *
-
- In place sort optimised (eg C<@a = sort @a>)
-
- =item *
-
- Unnecessary assignment optimised away in
-
- my $s = undef;
- my @a = ();
- my %h = ();
-
- =item *
-
- Optimised C<map> in scalar context
-
- =back
-
- =head1 Utility Changes
-
- The Perl debugger (F<lib/perl5db.pl>) can now save all debugger commands for
- sourcing later, and can display the parent inheritance tree of a given class.
-
- =head1 Installation and Configuration Improvements
-
- The build process on both VMS and Windows has had several minor improvements
- made. On Windows Borland's C compiler can now compile perl with PerlIO and/or
- USE_LARGE_FILES enabled.
-
- C<perl.exe> on Windows now has a "Camel" logo icon. The use of a camel with
- the topic of Perl is a trademark of O'Reilly and Associates Inc., and is used
- with their permission (ie distribution of the source, compiling a Windows
- executable from it, and using that executable locally). Use of the supplied
- camel for anything other than a perl executable's icon is specifically not
- covered, and anyone wishing to redistribute perl binaries I<with> the icon
- should check directly with O'Reilly beforehand.
-
- Perl should build cleanly on Stratus VOS once more.
-
- =head1 Selected Bug Fixes
-
- More utf8 bugs fixed, notably in how C<chomp>, C<chop>, C<send>, and
- C<syswrite> and interact with utf8 data. Concatenation now works correctly
- when C<use bytes;> is in scope.
-
- Pragmata are now correctly propagated into (?{...}) constructions in regexps.
- Code such as
-
- my $x = qr{ ... (??{ $x }) ... };
-
- will now (correctly) fail under use strict. (As the inner C<$x> is and
- has always referred to C<$::x>)
-
- The "const in void context" warning has been suppressed for a constant in an
- optimised-away boolean expression such as C<5 || print;>
-
- C<perl -i> could C<fchmod(stdin)> by mistake. This is serious if stdin is
- attached to a terminal, and perl is running as root. Now fixed.
-
- =head1 New or Changed Diagnostics
-
- C<Carp> and the internal diagnostic routines used by C<Devel::Peek> have been
- made clearer, as described in L</Incompatible Changes>
-
- =head1 Changed Internals
-
- Some bugs have been fixed in the hash internals. Restricted hashes and
- their place holders are now allocated and deleted at slightly different times,
- but this should not be visible to user code.
-
- =head1 Future Directions
-
- Code freeze for the next maintenance release (5.8.5) will be on 30th June
- 2004, with release by mid July.
-
- =head1 Platform Specific Problems
-
- This release is known not to build on Windows 95.
-
- =head1 Reporting Bugs
-
- If you find what you think is a bug, you might check the articles
- recently posted to the comp.lang.perl.misc newsgroup and the perl
- bug database at http://bugs.perl.org. There may also be
- information at http://www.perl.org, the Perl Home Page.
-
- If you believe you have an unreported bug, please run the B<perlbug>
- program included with your release. Be sure to trim your bug down
- to a tiny but sufficient test case. Your bug report, along with the
- output of C<perl -V>, will be sent off to perlbug@perl.org to be
- analysed by the Perl porting team. You can browse and search
- the Perl 5 bugs at http://bugs.perl.org/
-
- =head1 SEE ALSO
-
- The F<Changes> file for exhaustive details on what changed.
-
- The F<INSTALL> file for how to build Perl.
-
- The F<README> file for general stuff.
-
- The F<Artistic> and F<Copying> files for copyright information.
-
- =cut
-