* fix a perlop fix from debian: http://bugs.debian.org/514814
[p5sagit/p5-mst-13.2.git] / pod / perl584delta.pod
CommitLineData
cba18cd5 1=head1 NAME
2
5b304f34 3perl584delta - what is new for perl v5.8.4
cba18cd5 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