This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for a7162bf74f38
[perl5.git] / pod / perl587delta.pod
1 =head1 NAME
2
3 perl587delta - what is new for perl v5.8.7
4
5 =head1 DESCRIPTION
6
7 This document describes differences between the 5.8.6 release and
8 the 5.8.7 release.
9
10 =head1 Incompatible Changes
11
12 There are no changes incompatible with 5.8.6.
13
14 =head1 Core Enhancements
15
16 =head2 Unicode Character Database 4.1.0
17
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
21 notable changes.
22
23 =head2 suidperl less insecure
24
25 A pair of exploits in C<suidperl> involving debugging code have been closed.
26
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
29 C<suidperl>.
30
31 =head2 Optional site customization script
32
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>.
37
38 =head2 C<Config.pm> is now much smaller.
39
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>).
44
45 =head1 Modules and Pragmata
46
47 =over 4
48
49 =item *
50
51 B upgraded to version 1.09
52
53 =item *
54
55 base upgraded to version 2.07
56
57 =item *
58
59 bignum upgraded to version 0.17
60
61 =item *
62
63 bytes upgraded to version 1.02
64
65 =item *
66
67 Carp upgraded to version 1.04
68
69 =item *
70
71 CGI upgraded to version 3.10
72
73 =item *
74
75 Class::ISA upgraded to version 0.33
76
77 =item *
78
79 Data::Dumper upgraded to version 2.121_02
80
81 =item *
82
83 DB_File upgraded to version 1.811
84
85 =item *
86
87 Devel::PPPort upgraded to version 3.06
88
89 =item *
90
91 Digest upgraded to version 1.10
92
93 =item *
94
95 Encode upgraded to version 2.10
96
97 =item *
98
99 FileCache upgraded to version 1.05
100
101 =item *
102
103 File::Path upgraded to version 1.07
104
105 =item *
106
107 File::Temp upgraded to version 0.16
108
109 =item *
110
111 IO::File upgraded to version 1.11
112
113 =item *
114
115 IO::Socket upgraded to version 1.28
116
117 =item *
118
119 Math::BigInt upgraded to version 1.77
120
121 =item *
122
123 Math::BigRat upgraded to version 0.15
124
125 =item *
126
127 overload upgraded to version 1.03
128
129 =item *
130
131 PathTools upgraded to version 3.05
132
133 =item *
134
135 Pod::HTML upgraded to version 1.0503
136
137 =item *
138
139 Pod::Perldoc upgraded to version 3.14
140
141 =item *
142
143 Pod::LaTeX upgraded to version 0.58
144
145 =item *
146
147 Pod::Parser upgraded to version 1.30
148
149 =item *
150
151 Symbol upgraded to version 1.06
152
153 =item *
154
155 Term::ANSIColor upgraded to version 1.09
156
157 =item *
158
159 Test::Harness upgraded to version 2.48
160
161 =item *
162
163 Test::Simple upgraded to version 0.54
164
165 =item *
166
167 Text::Wrap upgraded to version 2001.09293, to fix a bug when wrap() was
168 called with a non-space separator.
169
170 =item *
171
172 threads::shared upgraded to version 0.93
173
174 =item *
175
176 Time::HiRes upgraded to version 1.66
177
178 =item *
179
180 Time::Local upgraded to version 1.11
181
182 =item *
183
184 Unicode::Normalize upgraded to version 0.32
185
186 =item *
187
188 utf8 upgraded to version 1.05
189
190 =item *
191
192 Win32 upgraded to version 0.24, which provides Win32::GetFileVersion
193
194 =back
195
196 =head1 Utility Changes
197
198 =head2 find2perl enhancements
199
200 C<find2perl> has new options C<-iname>, C<-path> and C<-ipath>.
201
202 =head1 Performance Enhancements
203
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
206 about 10%.
207
208 =head1 Installation and Configuration Improvements
209
210 =over 4
211
212 =item *
213
214 The Win32 "dmake" makefile.mk has been updated to make it compatible
215 with the latest versions of dmake.
216
217 =item *
218
219 C<PERL_MALLOC>, C<DEBUG_MSTATS>, C<PERL_HASH_SEED_EXPLICIT> and C<NO_HASH_SEED>
220 should now work in Win32 makefiles.
221
222 =back
223
224 =head1 Selected Bug Fixes
225
226 =over 4
227
228 =item *
229
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.)
234
235 =item *
236
237 Another obscure bug involving C<substr> and UTF-8 caused by bad internal
238 offset caching has been identified and fixed.
239
240 =item *
241
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
244 corrupt results.
245
246 =item *
247
248 Case conversion operations such as C<uc> on a long Unicode string could
249 exhaust memory. This has been fixed.
250
251 =item *
252
253 C<index>/C<rindex> were buggy for some combinations of Unicode and
254 non-Unicode data. This has been fixed.
255
256 =item *
257
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
260 been fixed.
261
262 =item *
263
264 Several C<pack>/C<unpack> bug fixes:
265
266 =over 4
267
268 =item *
269
270 Checksums with C<b> or C<B> formats were broken.
271
272 =item *
273
274 C<unpack> checksums could overflow with the C<C> format.
275
276 =item *
277
278 C<U0> and C<C0> are now scoped to C<()> C<pack> sub-templates.
279
280 =item *
281
282 Counted length prefixes now don't change C<C0>/C<U0> mode.
283
284 =item *
285
286 C<pack> C<Z0> used to destroy the preceding character.
287
288 =item *
289
290 C<P>/C<p> C<pack> formats used to only recognise literal C<undef> 
291
292 =back
293
294 =item *
295
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.
298
299 =item *
300
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.
304
305 =item *
306
307 C<not() || 1> used to segfault. C<not()> now behaves like C<not(0)>, which was
308 the pre 5.6.0 behaviour.
309
310 =item *
311
312 C<h2ph> has various enhancements to cope with constructs in header files that
313 used to result in incorrect or invalid output.
314
315 =back
316
317 =head1 New or Changed Diagnostics
318
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
322 as taint-free.
323
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.
328
329 =head1 Changed Internals
330
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.
335
336 C<${^UTF8LOCALE}> has been added to give perl space access to C<PL_utf8locale>.
337
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
340 is 4080 bytes.
341
342 =head1 Known Problems
343
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.
347
348 =head1 Platform Specific Problems
349
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.
354
355 =head1 Reporting Bugs
356
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.
361
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/
368
369 =head1 SEE ALSO
370
371 The F<Changes> file for exhaustive details on what changed.
372
373 The F<INSTALL> file for how to build Perl.
374
375 The F<README> file for general stuff.
376
377 The F<Artistic> and F<Copying> files for copyright information.
378
379 =cut