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