xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/pod/perldelta.pod (revision 0:68f95e015346)
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