3 perl587delta - what is new for perl v5.8.7
7 This document describes differences between the 5.8.6 release and
10 =head1 Incompatible Changes
12 There are no changes incompatible with 5.8.6.
14 =head1 Core Enhancements
16 =head2 Unicode Character Database 4.1.0
18 The copy of the Unicode Character Database included in Perl 5.8 has
19 been updated to 4.1.0 from 4.0.1. See
20 L<http://www.unicode.org/versions/Unicode4.1.0/#NotableChanges> for the
23 =head2 suidperl less insecure
25 A pair of exploits in C<suidperl> involving debugging code have been closed.
27 For new projects the core perl team strongly recommends that you use
28 dedicated, single purpose security tools such as C<sudo> in preference to
31 =head2 Optional site customization script
33 The perl interpreter can be built to allow the use of a site customization
34 script. By default this is not enabled, to be consistent with previous perl
35 releases. To use this, add C<-Dusesitecustomize> to the command line flags
36 when running the C<Configure> script. See also L<perlrun/-f>.
38 =head2 C<Config.pm> is now much smaller.
40 C<Config.pm> is now about 3K rather than 32K, with the infrequently used
41 code and C<%Config> values loaded on demand. This is transparent to the
42 programmer, but means that most code will save parsing and loading 29K of
43 script (for example, code that uses C<File::Find>).
45 =head1 Modules and Pragmata
51 B upgraded to version 1.09
55 base upgraded to version 2.07
59 bignum upgraded to version 0.17
63 bytes upgraded to version 1.02
67 Carp upgraded to version 1.04
71 CGI upgraded to version 3.10
75 Class::ISA upgraded to version 0.33
79 Data::Dumper upgraded to version 2.121_02
83 DB_File upgraded to version 1.811
87 Devel::PPPort upgraded to version 3.06
91 Digest upgraded to version 1.10
95 Encode upgraded to version 2.10
99 FileCache upgraded to version 1.05
103 File::Path upgraded to version 1.07
107 File::Temp upgraded to version 0.16
111 IO::File upgraded to version 1.11
115 IO::Socket upgraded to version 1.28
119 Math::BigInt upgraded to version 1.77
123 Math::BigRat upgraded to version 0.15
127 overload upgraded to version 1.03
131 PathTools upgraded to version 3.05
135 Pod::HTML upgraded to version 1.0503
139 Pod::Perldoc upgraded to version 3.14
143 Pod::LaTeX upgraded to version 0.58
147 Pod::Parser upgraded to version 1.30
151 Symbol upgraded to version 1.06
155 Term::ANSIColor upgraded to version 1.09
159 Test::Harness upgraded to version 2.48
163 Test::Simple upgraded to version 0.54
167 Text::Wrap upgraded to version 2001.09293, to fix a bug when wrap() was
168 called with a non-space separator.
172 threads::shared upgraded to version 0.93
176 Time::HiRes upgraded to version 1.66
180 Time::Local upgraded to version 1.11
184 Unicode::Normalize upgraded to version 0.32
188 utf8 upgraded to version 1.05
192 Win32 upgraded to version 0.24, which provides Win32::GetFileVersion
196 =head1 Utility Changes
198 =head2 find2perl enhancements
200 C<find2perl> has new options C<-iname>, C<-path> and C<-ipath>.
202 =head1 Performance Enhancements
204 The internal pointer mapping hash used during ithreads cloning now uses an
205 arena for memory allocation. In tests this reduced ithreads cloning time by
208 =head1 Installation and Configuration Improvements
214 The Win32 "dmake" makefile.mk has been updated to make it compatible
215 with the latest versions of dmake.
219 C<PERL_MALLOC>, C<DEBUG_MSTATS>, C<PERL_HASH_SEED_EXPLICIT> and C<NO_HASH_SEED>
220 should now work in Win32 makefiles.
224 =head1 Selected Bug Fixes
230 The socket() function on Win32 has been fixed so that it is able to use
231 transport providers which specify a protocol of 0 (meaning any protocol
232 is allowed) once more. (This was broken in 5.8.6, and typically caused
233 the use of ICMP sockets to fail.)
237 Another obscure bug involving C<substr> and UTF-8 caused by bad internal
238 offset caching has been identified and fixed.
242 A bug involving the loading of UTF-8 tables by the regexp engine has been
243 fixed - code such as C<"\x{100}" =~ /[[:print:]]/> will no longer give
248 Case conversion operations such as C<uc> on a long Unicode string could
249 exhaust memory. This has been fixed.
253 C<index>/C<rindex> were buggy for some combinations of Unicode and
254 non-Unicode data. This has been fixed.
258 C<read> (and presumably C<sysread>) would expose the UTF-8 internals when
259 reading from a byte oriented file handle into a UTF-8 scalar. This has
264 Several C<pack>/C<unpack> bug fixes:
270 Checksums with C<b> or C<B> formats were broken.
274 C<unpack> checksums could overflow with the C<C> format.
278 C<U0> and C<C0> are now scoped to C<()> C<pack> sub-templates.
282 Counted length prefixes now don't change C<C0>/C<U0> mode.
286 C<pack> C<Z0> used to destroy the preceding character.
290 C<P>/C<p> C<pack> formats used to only recognise literal C<undef>
296 Using closures with ithreads could cause perl to crash. This was due to
297 failure to correctly lock internal OP structures, and has been fixed.
301 The return value of C<close> now correctly reflects any file errors that
302 occur while flushing the handle's data, instead of just giving failure if
303 the actual underlying file close operation failed.
307 C<not() || 1> used to segfault. C<not()> now behaves like C<not(0)>, which was
308 the pre 5.6.0 behaviour.
312 C<h2ph> has various enhancements to cope with constructs in header files that
313 used to result in incorrect or invalid output.
317 =head1 New or Changed Diagnostics
319 There is a new taint error, "%ENV is aliased to %s". This error is thrown
320 when taint checks are enabled and when C<*ENV> has been aliased, so that
321 C<%ENV> has no env-magic anymore and hence the environment cannot be verified
324 The internals of C<pack> and C<unpack> have been updated. All legitimate
325 templates should work as before, but there may be some changes in the error
326 reported for complex failure cases. Any behaviour changes for non-error cases
327 are bugs, and should be reported.
329 =head1 Changed Internals
331 There has been a fair amount of refactoring of the C<C> source code, partly to
332 make it tidier and more maintainable. The resulting object code and the
333 C<perl> binary may well be smaller than 5.8.6, and hopefully faster in some
334 cases, but apart from this there should be no user-detectable changes.
336 C<${^UTF8LOCALE}> has been added to give perl space access to C<PL_utf8locale>.
338 The size of the arenas used to allocate SV heads and most SV bodies can now
339 be changed at compile time. The old size was 1008 bytes, the new default size
342 =head1 Known Problems
344 Unicode strings returned from overloaded operators can be buggy. This is a
345 long standing bug reported since 5.8.6 was released, but we do not yet have
346 a suitable fix for it.
348 =head1 Platform Specific Problems
350 On UNICOS, lib/Math/BigInt/t/bigintc.t hangs burning CPU.
351 ext/B/t/bytecode.t and ext/Socket/t/socketpair.t both fail tests.
352 These are unlikely to be resolved, as our valiant UNICOS porter's last
353 Cray is being decommissioned.
355 =head1 Reporting Bugs
357 If you find what you think is a bug, you might check the articles
358 recently posted to the comp.lang.perl.misc newsgroup and the perl
359 bug database at http://bugs.perl.org. There may also be
360 information at http://www.perl.org, the Perl Home Page.
362 If you believe you have an unreported bug, please run the B<perlbug>
363 program included with your release. Be sure to trim your bug down
364 to a tiny but sufficient test case. Your bug report, along with the
365 output of C<perl -V>, will be sent off to perlbug@perl.org to be
366 analysed by the Perl porting team. You can browse and search
367 the Perl 5 bugs at http://bugs.perl.org/
371 The F<Changes> file for exhaustive details on what changed.
373 The F<INSTALL> file for how to build Perl.
375 The F<README> file for general stuff.
377 The F<Artistic> and F<Copying> files for copyright information.