This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
more perldiag grammar/punctuation tweaks
[perl5.git] / pod / perl587delta.pod
CommitLineData
315ba985
NC
1=head1 NAME
2
70693193 3perl587delta - what is new for perl v5.8.7
315ba985
NC
4
5=head1 DESCRIPTION
6
7This document describes differences between the 5.8.6 release and
8the 5.8.7 release.
9
10=head1 Incompatible Changes
11
12There are no changes incompatible with 5.8.6.
13
14=head1 Core Enhancements
15
16=head2 Unicode Character Database 4.1.0
17
18The copy of the Unicode Character Database included in Perl 5.8 has
19been updated to 4.1.0 from 4.0.1. See
20L<http://www.unicode.org/versions/Unicode4.1.0/#NotableChanges> for the
21notable changes.
22
23=head2 suidperl less insecure
24
25A pair of exploits in C<suidperl> involving debugging code have been closed.
26
27For new projects the core perl team strongly recommends that you use
28dedicated, single purpose security tools such as C<sudo> in preference to
29C<suidperl>.
30
31=head2 Optional site customization script
32
33The perl interpreter can be built to allow the use of a site customization
34script. By default this is not enabled, to be consistent with previous perl
35releases. To use this, add C<-Dusesitecustomize> to the command line flags
36when running the C<Configure> script. See also L<perlrun/-f>.
37
38=head2 C<Config.pm> is now much smaller.
39
40C<Config.pm> is now about 3K rather than 32K, with the infrequently used
41code and C<%Config> values loaded on demand. This is transparent to the
42programmer, but means that most code will save parsing and loading 29K of
43script (for example, code that uses C<File::Find>).
44
45=head1 Modules and Pragmata
46
47=over 4
48
49=item *
50
51B upgraded to version 1.09
52
53=item *
54
55base upgraded to version 2.07
56
57=item *
58
59bignum upgraded to version 0.17
60
61=item *
62
63bytes upgraded to version 1.02
64
65=item *
66
67Carp upgraded to version 1.04
68
69=item *
70
71CGI upgraded to version 3.10
72
73=item *
74
75Class::ISA upgraded to version 0.33
76
77=item *
78
79Data::Dumper upgraded to version 2.121_02
80
81=item *
82
83DB_File upgraded to version 1.811
84
85=item *
86
87Devel::PPPort upgraded to version 3.06
88
89=item *
90
91Digest upgraded to version 1.10
92
93=item *
94
95Encode upgraded to version 2.10
96
97=item *
98
99FileCache upgraded to version 1.05
100
101=item *
102
103File::Path upgraded to version 1.07
104
105=item *
106
107File::Temp upgraded to version 0.16
108
109=item *
110
111IO::File upgraded to version 1.11
112
113=item *
114
115IO::Socket upgraded to version 1.28
116
117=item *
118
119Math::BigInt upgraded to version 1.77
120
121=item *
122
123Math::BigRat upgraded to version 0.15
124
125=item *
126
127overload upgraded to version 1.03
128
129=item *
130
131PathTools upgraded to version 3.05
132
133=item *
134
135Pod::HTML upgraded to version 1.0503
136
137=item *
138
139Pod::Perldoc upgraded to version 3.14
140
141=item *
142
143Pod::LaTeX upgraded to version 0.58
144
145=item *
146
147Pod::Parser upgraded to version 1.30
148
149=item *
150
151Symbol upgraded to version 1.06
152
153=item *
154
155Term::ANSIColor upgraded to version 1.09
156
157=item *
158
159Test::Harness upgraded to version 2.48
160
161=item *
162
163Test::Simple upgraded to version 0.54
164
165=item *
166
167Text::Wrap upgraded to version 2001.09293, to fix a bug when wrap() was
168called with a non-space separator.
169
170=item *
171
172threads::shared upgraded to version 0.93
173
174=item *
175
176Time::HiRes upgraded to version 1.66
177
178=item *
179
180Time::Local upgraded to version 1.11
181
182=item *
183
184Unicode::Normalize upgraded to version 0.32
185
186=item *
187
188utf8 upgraded to version 1.05
189
190=item *
191
192Win32 upgraded to version 0.24, which provides Win32::GetFileVersion
193
194=back
195
196=head1 Utility Changes
197
198=head2 find2perl enhancements
199
200C<find2perl> has new options C<-iname>, C<-path> and C<-ipath>.
201
202=head1 Performance Enhancements
203
204The internal pointer mapping hash used during ithreads cloning now uses an
205arena for memory allocation. In tests this reduced ithreads cloning time by
206about 10%.
207
208=head1 Installation and Configuration Improvements
209
210=over 4
211
212=item *
213
214The Win32 "dmake" makefile.mk has been updated to make it compatible
215with the latest versions of dmake.
216
217=item *
218
219C<PERL_MALLOC>, C<DEBUG_MSTATS>, C<PERL_HASH_SEED_EXPLICIT> and C<NO_HASH_SEED>
220should now work in Win32 makefiles.
221
222=back
223
224=head1 Selected Bug Fixes
225
226=over 4
227
228=item *
229
230The socket() function on Win32 has been fixed so that it is able to use
231transport providers which specify a protocol of 0 (meaning any protocol
232is allowed) once more. (This was broken in 5.8.6, and typically caused
233the use of ICMP sockets to fail.)
234
235=item *
236
237Another obscure bug involving C<substr> and UTF-8 caused by bad internal
238offset caching has been identified and fixed.
239
240=item *
241
242A bug involving the loading of UTF-8 tables by the regexp engine has been
243fixed - code such as C<"\x{100}" =~ /[[:print:]]/> will no longer give
244corrupt results.
245
246=item *
247
248Case conversion operations such as C<uc> on a long Unicode string could
249exhaust memory. This has been fixed.
250
251=item *
252
253C<index>/C<rindex> were buggy for some combinations of Unicode and
254non-Unicode data. This has been fixed.
255
256=item *
257
258C<read> (and presumably C<sysread>) would expose the UTF-8 internals when
259reading from a byte oriented file handle into a UTF-8 scalar. This has
260been fixed.
261
262=item *
263
264Several C<pack>/C<unpack> bug fixes:
265
266=over 4
267
268=item *
269
270Checksums with C<b> or C<B> formats were broken.
271
272=item *
273
274C<unpack> checksums could overflow with the C<C> format.
275
276=item *
277
278C<U0> and C<C0> are now scoped to C<()> C<pack> sub-templates.
279
280=item *
281
282Counted length prefixes now don't change C<C0>/C<U0> mode.
283
284=item *
285
286C<pack> C<Z0> used to destroy the preceding character.
287
288=item *
289
290C<P>/C<p> C<pack> formats used to only recognise literal C<undef>
291
292=back
293
294=item *
295
296Using closures with ithreads could cause perl to crash. This was due to
297failure to correctly lock internal OP structures, and has been fixed.
298
299=item *
300
301The return value of C<close> now correctly reflects any file errors that
302occur while flushing the handle's data, instead of just giving failure if
303the actual underlying file close operation failed.
304
305=item *
306
307C<not() || 1> used to segfault. C<not()> now behaves like C<not(0)>, which was
308the pre 5.6.0 behaviour.
309
310=item *
311
312C<h2ph> has various enhancements to cope with constructs in header files that
313used to result in incorrect or invalid output.
314
315=back
316
317=head1 New or Changed Diagnostics
318
319There is a new taint error, "%ENV is aliased to %s". This error is thrown
320when taint checks are enabled and when C<*ENV> has been aliased, so that
321C<%ENV> has no env-magic anymore and hence the environment cannot be verified
322as taint-free.
323
324The internals of C<pack> and C<unpack> have been updated. All legitimate
325templates should work as before, but there may be some changes in the error
326reported for complex failure cases. Any behaviour changes for non-error cases
327are bugs, and should be reported.
328
329=head1 Changed Internals
330
331There has been a fair amount of refactoring of the C<C> source code, partly to
332make it tidier and more maintainable. The resulting object code and the
333C<perl> binary may well be smaller than 5.8.6, and hopefully faster in some
334cases, but apart from this there should be no user-detectable changes.
335
336C<${^UTF8LOCALE}> has been added to give perl space access to C<PL_utf8locale>.
337
338The size of the arenas used to allocate SV heads and most SV bodies can now
339be changed at compile time. The old size was 1008 bytes, the new default size
340is 4080 bytes.
341
342=head1 Known Problems
343
344Unicode strings returned from overloaded operators can be buggy. This is a
345long standing bug reported since 5.8.6 was released, but we do not yet have
346a suitable fix for it.
347
348=head1 Platform Specific Problems
349
350On UNICOS, lib/Math/BigInt/t/bigintc.t hangs burning CPU.
351ext/B/t/bytecode.t and ext/Socket/t/socketpair.t both fail tests.
352These are unlikely to be resolved, as our valiant UNICOS porter's last
353Cray is being decommissioned.
354
355=head1 Reporting Bugs
356
357If you find what you think is a bug, you might check the articles
358recently posted to the comp.lang.perl.misc newsgroup and the perl
359bug database at http://bugs.perl.org. There may also be
360information at http://www.perl.org, the Perl Home Page.
361
362If you believe you have an unreported bug, please run the B<perlbug>
363program included with your release. Be sure to trim your bug down
364to a tiny but sufficient test case. Your bug report, along with the
365output of C<perl -V>, will be sent off to perlbug@perl.org to be
366analysed by the Perl porting team. You can browse and search
367the Perl 5 bugs at http://bugs.perl.org/
368
369=head1 SEE ALSO
370
371The F<Changes> file for exhaustive details on what changed.
372
373The F<INSTALL> file for how to build Perl.
374
375The F<README> file for general stuff.
376
377The F<Artistic> and F<Copying> files for copyright information.
378
379=cut