Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
34dc2ec0 DM |
5 | [ this is a template for a new perldelta file. Any text flagged as |
6 | XXX needs to be processed before release. ] | |
c71a852f | 7 | |
34dc2ec0 | 8 | perldelta - what is new for perl v5.15.0 |
6e925ecb | 9 | |
34dc2ec0 | 10 | =head1 DESCRIPTION |
a27ff1be | 11 | |
34dc2ec0 DM |
12 | This document describes differences between the 5.15.0 release and |
13 | the 5.14.0 release. | |
a27ff1be | 14 | |
34dc2ec0 DM |
15 | If you are upgrading from an earlier release such as 5.YYY.YYY, first read |
16 | L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and | |
17 | 5.YYY.YYY. | |
a27ff1be | 18 | |
760696b8 FC |
19 | Some of the changes have been included in Perl 5.14.1. These are |
20 | indicated with a "(5.14.1)" marker. | |
21 | ||
bdab33d1 DG |
22 | XXX compare this perldelta to 5.14.1 and double check the notation |
23 | ||
34dc2ec0 | 24 | =head1 Notice |
a27ff1be | 25 | |
34dc2ec0 | 26 | XXX Any important notices here |
a27ff1be | 27 | |
34dc2ec0 | 28 | =head1 Core Enhancements |
a27ff1be | 29 | |
34dc2ec0 DM |
30 | XXX New core language features go here. Summarise user-visible core language |
31 | enhancements. Particularly prominent performance optimisations could go | |
32 | here, but most should go in the L</Performance Enhancements> section. | |
a27ff1be | 33 | |
34dc2ec0 | 34 | [ List each enhancement as a =head2 entry ] |
a27ff1be | 35 | |
9dcb8368 FC |
36 | =head2 C<CORE::> works on all keywords |
37 | ||
38 | The C<CORE::> prefix can now be used on keywords enabled by | |
39 | L<feature.pm|feature>, even outside the scope of C<use feature>. | |
40 | ||
34dc2ec0 | 41 | =head1 Security |
a27ff1be | 42 | |
34dc2ec0 DM |
43 | XXX Any security-related notices go here. In particular, any security |
44 | vulnerabilities closed should be noted here rather than in the | |
45 | L</Selected Bug Fixes> section. | |
a27ff1be | 46 | |
34dc2ec0 | 47 | [ List each security issue as a =head2 entry ] |
a27ff1be | 48 | |
34dc2ec0 | 49 | =head1 Incompatible Changes |
9a5a48b7 | 50 | |
34dc2ec0 | 51 | [ List each incompatible change as a =head2 entry ] |
9a5a48b7 | 52 | |
bdab33d1 DG |
53 | =head2 C<$$> no longer caches PID |
54 | ||
55 | Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perls | |
56 | notion of C<$$> could go out of sync with what getpid() returns. By always | |
57 | fetching the value of C<$$> via getpid(), this potential bug is eliminated. | |
58 | Code that depends on the caching behavior will break. | |
59 | ||
34dc2ec0 | 60 | =head1 Deprecations |
cdc10f43 | 61 | |
34dc2ec0 DM |
62 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
63 | In particular, deprecated modules should be listed here even if they are | |
64 | listed as an updated module in the L</Modules and Pragmata> section. | |
cdc10f43 | 65 | |
34dc2ec0 | 66 | [ List each deprecation as a =head2 entry ] |
9a5a48b7 | 67 | |
34dc2ec0 | 68 | =head1 Performance Enhancements |
9a5a48b7 | 69 | |
34dc2ec0 DM |
70 | XXX Changes which enhance performance without changing behaviour go here. There |
71 | may well be none in a stable release. | |
9a5a48b7 | 72 | |
34dc2ec0 | 73 | [ List each enhancement as a =item entry ] |
9a5a48b7 | 74 | |
34dc2ec0 | 75 | =over 4 |
c8c13991 | 76 | |
5076a392 FC |
77 | =item * |
78 | ||
34dc2ec0 | 79 | XXX |
e8e35311 FC |
80 | |
81 | =back | |
82 | ||
34dc2ec0 | 83 | =head1 Modules and Pragmata |
c8c13991 | 84 | |
34dc2ec0 DM |
85 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
86 | go here. If Module::CoreList is updated, generate an initial draft of the | |
87 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
88 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
89 | below. A paragraph summary for important changes should then be added by hand. | |
90 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
91 | cribbed. | |
f00d3350 | 92 | |
34dc2ec0 | 93 | [ Within each section, list entries as a =item entry ] |
e9784f55 | 94 | |
34dc2ec0 | 95 | =head2 New Modules and Pragmata |
d430b8e7 | 96 | |
34dc2ec0 | 97 | =over 4 |
d430b8e7 | 98 | |
31ecc2aa FC |
99 | =item * |
100 | ||
34dc2ec0 | 101 | XXX |
31ecc2aa | 102 | |
e9784f55 | 103 | =back |
c34a735e | 104 | |
34dc2ec0 | 105 | =head2 Updated Modules and Pragmata |
24b164a5 | 106 | |
34dc2ec0 | 107 | =over 4 |
2c389f6c | 108 | |
9780b8fa FC |
109 | =item * |
110 | ||
bdab33d1 DG |
111 | L<constant> has been updated from version 1.21 to 1.22. |
112 | ||
113 | =item * | |
114 | ||
1c861f7c CBW |
115 | L<Archive::Extract> has been upgraded from version 0.48 to version 0.52 |
116 | ||
117 | Includes a fix for FreeBSD to only use C<unzip> if it is located in | |
118 | C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in | |
119 | C</usr/bin>. | |
120 | ||
121 | =item * | |
122 | ||
bdab33d1 DG |
123 | L<Attribute::Handlers> updated from version 0.88 to 0.91 |
124 | ||
125 | =item * | |
126 | ||
daca484d NC |
127 | L<B> has been upgraded from version 1.29 to version 1.30. |
128 | ||
129 | =item * | |
130 | ||
760696b8 FC |
131 | L<B::Deparse> has been upgraded from version 1.03 to 1.05. |
132 | ||
133 | It addresses two regressions in Perl 5.14.0: | |
134 | ||
135 | =over | |
136 | ||
137 | =item * | |
138 | ||
139 | Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now | |
140 | works again [RT #90898] (5.14.1). | |
141 | ||
142 | =item * | |
143 | ||
144 | The presence of subroutines named C<::::> or C<::::::> no longer causes | |
145 | B::Deparse to hang (5.14.1). | |
146 | ||
147 | =back | |
148 | ||
6693394d FC |
149 | It also fixes deparsing of C<keys>, C<each> and C<value> with a scalar |
150 | argument (RT #91008) and C<readpipe> followed by a complex expression (as | |
151 | opposed to a simple scalar variable). | |
152 | ||
153 | It now puts C<CORE::> in front of overridable core keywords if they | |
154 | conflict with user-defined subroutines. | |
760696b8 FC |
155 | |
156 | =item * | |
157 | ||
1c861f7c CBW |
158 | L<CGI> has been upgraded from version 3.52 to version 3.54 |
159 | ||
160 | The DELETE HTTP verb is now supported. | |
161 | ||
162 | =item * | |
163 | ||
164 | L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035 | |
165 | ||
166 | =item * | |
167 | ||
168 | L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035 | |
169 | ||
170 | =item * | |
171 | ||
172 | L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035 | |
173 | ||
174 | =item * | |
175 | ||
176 | L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930 | |
177 | ||
1c861f7c CBW |
178 | =item * |
179 | ||
180 | L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105 | |
181 | ||
182 | Now understands specifying modules to install in the format 'Module/Type.pm' | |
183 | ||
184 | =item * | |
185 | ||
186 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56 | |
187 | ||
188 | =item * | |
189 | ||
bdab33d1 DG |
190 | L<Data::Dumper> has been upgraded from version 2.128 to 2.131. |
191 | ||
192 | =item * | |
193 | ||
1c861f7c CBW |
194 | L<DB_File> has been upgraded from version 1.821 to version 1.822 |
195 | ||
196 | Warnings are now in sync with perl's | |
197 | ||
198 | =item * | |
199 | ||
200 | L<Digest::SHA> has been upgraded from version 5.61 to version 5.62 | |
201 | ||
202 | No longer loads L<MIME::Base64> as this was unnecessary. | |
203 | ||
204 | =item * | |
205 | ||
975dff8c FC |
206 | L<Devel::Peek> has been upgraded from version 1.07 to 1.08. |
207 | ||
208 | Its C<fill_mstats> function no longer refuses to write to copy-on-write | |
209 | scalars. | |
210 | ||
211 | =item * | |
212 | ||
1c861f7c CBW |
213 | L<Encode> has been upgraded from version 2.42 to version 2.43 |
214 | ||
215 | Missing aliases added, a deep recursion error fixed and various | |
216 | documentation updates. | |
217 | ||
218 | =item * | |
219 | ||
bdab33d1 DG |
220 | L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204. The new version |
221 | append CFLAGS and LDFLAGS to their Config.pm counterparts. | |
222 | ||
223 | =item * | |
224 | ||
1c861f7c CBW |
225 | L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39 |
226 | ||
227 | C<decrypt> fixed to work with v5.14.0 | |
228 | ||
229 | =item * | |
230 | ||
bdab33d1 DG |
231 | L<Filter::Simple> updated from version 0.85 to 0.87 |
232 | ||
233 | =item * | |
234 | ||
235 | L<FindBin> updated from version 1.50 to 1.51. | |
236 | ||
6693394d FC |
237 | It no longer returns a wrong result if a script of the same name as the |
238 | current one exists in the path and is executable. | |
239 | ||
bdab33d1 DG |
240 | =item * |
241 | ||
1c861f7c CBW |
242 | L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200 |
243 | ||
244 | Fixed C<incr_parse> decoding string more correctly. | |
245 | ||
246 | =item * | |
247 | ||
76fadaa8 LB |
248 | L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36. |
249 | ||
250 | Fix broken URLs for RFCs. | |
251 | ||
252 | =item * | |
253 | ||
031f91ce NC |
254 | L<IPC::Open3> has been upgraded from version 1.10 to version 1.11. |
255 | ||
256 | =over 4 | |
257 | ||
258 | =item * | |
259 | ||
260 | Fixes a bug which prevented use of open3 on Windows when *STDIN, *STDOUT or | |
261 | *STDERR had been localized. | |
262 | ||
9f3ee5ee NC |
263 | =item * |
264 | ||
265 | Fixes a bug which prevented duplicating numeric file descriptors on Windows. | |
266 | ||
031f91ce NC |
267 | =back |
268 | ||
269 | =item * | |
270 | ||
f95396b3 | 271 | L<Math::Complex> has been upgraded from version 1.56 to version 1.57. |
3194a40a Z |
272 | |
273 | Correct copy constructor usage. | |
274 | Fix polarwise formatting with numeric format specifier. | |
275 | More stable C<great_circle_direction> algorithm. | |
276 | ||
277 | =item * | |
278 | ||
6693394d FC |
279 | L<Module::CoreList> has been upgraded from version 2.49 to 2.50. |
280 | ||
281 | Updated for v5.12.4. | |
bdab33d1 DG |
282 | |
283 | =item * | |
284 | ||
b43aaa67 LB |
285 | L<mro> has been updated to remove two broken URLs in the documentation. |
286 | ||
287 | =item * | |
288 | ||
1c861f7c CBW |
289 | L<Object::Accessor> has been upgraded from version 0.38 to version 0.42 |
290 | ||
291 | Eliminated use of C<exists> on array elements which has been deprecated. | |
292 | ||
293 | =item * | |
294 | ||
e5904012 NC |
295 | L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15 |
296 | ||
297 | =item * | |
298 | ||
975dff8c FC |
299 | L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12. |
300 | ||
301 | It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if | |
302 | C<$scalar> is a copy-on-write scalar. | |
303 | ||
304 | =item * | |
305 | ||
760696b8 FC |
306 | XXX If any changes are made, the version will need to be bumped again. |
307 | What blead has is currently (as of a9d1f3db, 7th of June) identical to | |
308 | 5.14.1's version. | |
309 | ||
310 | L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04. | |
311 | ||
312 | It corrects the search paths on VMS [RT #90640]. | |
313 | ||
314 | =item * | |
315 | ||
daca484d NC |
316 | L<Storable> has been upgraded from version 2.27 to version 2.28. |
317 | ||
975dff8c FC |
318 | It no longer turns copy-on-write scalars into read-only scalars when |
319 | freezing and thawing. | |
320 | ||
daca484d NC |
321 | =item * |
322 | ||
1c861f7c CBW |
323 | L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29 |
324 | ||
325 | Large number of Request Tickets resolved. | |
326 | ||
327 | =item * | |
328 | ||
f95396b3 | 329 | L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722. |
91a2e9f6 Z |
330 | |
331 | Portability fix, and avoiding some compiler warnings. | |
332 | ||
333 | =item * | |
334 | ||
1c861f7c CBW |
335 | L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76 |
336 | ||
337 | Updated to CLDR 1.9.1 | |
338 | ||
339 | =item * | |
340 | ||
341 | L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12 | |
342 | ||
343 | Fixes for the removal of C<unicore/CompositionExclusions.txt> from core. | |
344 | ||
345 | =item * | |
346 | ||
347 | L<XSLoader> has been upgraded from version 0.13 to version 0.15 | |
348 | ||
349 | Integrated changes from bleadperl | |
350 | ||
351 | =item * | |
352 | ||
34dc2ec0 | 353 | XXX |
9780b8fa | 354 | |
e8e35311 FC |
355 | =back |
356 | ||
34dc2ec0 | 357 | =head2 Removed Modules and Pragmata |
bdb0cce8 | 358 | |
34dc2ec0 | 359 | =over 4 |
44691e6f | 360 | |
5076a392 | 361 | =item * |
44691e6f | 362 | |
34dc2ec0 | 363 | XXX |
e8e35311 FC |
364 | |
365 | =back | |
366 | ||
34dc2ec0 | 367 | =head1 Documentation |
44691e6f | 368 | |
34dc2ec0 DM |
369 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
370 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
6d96b0fe | 371 | |
34dc2ec0 | 372 | =head2 New Documentation |
6d96b0fe | 373 | |
34dc2ec0 | 374 | XXX Changes which create B<new> files in F<pod/> go here. |
6d96b0fe | 375 | |
34dc2ec0 | 376 | =head3 L<XXX> |
e8e35311 | 377 | |
34dc2ec0 | 378 | XXX Description of the purpose of the new file here |
6d96b0fe | 379 | |
34dc2ec0 | 380 | =head2 Changes to Existing Documentation |
b7188eb5 | 381 | |
34dc2ec0 DM |
382 | XXX Changes which significantly change existing files in F<pod/> go here. |
383 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
384 | section. | |
b7188eb5 | 385 | |
bdab33d1 DG |
386 | =head3 L<perlfork> |
387 | ||
388 | =over | |
389 | ||
390 | =item * | |
391 | ||
392 | Added portability caveats related to using kill on forked process. | |
393 | ||
394 | =back | |
395 | ||
760696b8 FC |
396 | =head3 L<perlfunc> |
397 | ||
398 | =over | |
399 | ||
400 | =item * | |
401 | ||
402 | C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1). | |
403 | ||
6693394d FC |
404 | =item * |
405 | ||
406 | The examples for the C<select> function no longer use strings for file | |
407 | handles. | |
408 | ||
760696b8 FC |
409 | =back |
410 | ||
411 | =head3 L<perllol> | |
412 | ||
413 | =over | |
414 | ||
415 | =item * | |
416 | ||
417 | L<perllol> has been expanded with examples using the new C<push $scalar> | |
418 | syntax introduced in Perl 5.14.0 (5.14.1). | |
419 | ||
420 | =back | |
421 | ||
6693394d FC |
422 | =head3 L<perlmod> |
423 | ||
424 | =over | |
425 | ||
426 | =item * | |
427 | ||
428 | L<perlmod> now states explicitly that some types of explicit symbol table | |
429 | manipulation are not supported. This codifies what was effectively already | |
430 | the case [RT #78074]. | |
431 | ||
432 | =back | |
433 | ||
760696b8 | 434 | =head3 L<perlop> |
b7188eb5 | 435 | |
34dc2ec0 | 436 | =over 4 |
e8e35311 | 437 | |
2c389f6c FC |
438 | =item * |
439 | ||
760696b8 FC |
440 | The explanation of bitwise operators has been expanded to explain how they |
441 | work on Unicode strings (5.14.1). | |
442 | ||
443 | =item * | |
444 | ||
445 | The section on the triple-dot or yada-yada operator has been moved up, as | |
446 | it used to separate two closely related sections about the comma operator | |
447 | (5.14.1). | |
448 | ||
449 | =item * | |
450 | ||
451 | More examples for C<m//g> have been added (5.14.1). | |
452 | ||
453 | =item * | |
454 | ||
455 | The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1). | |
456 | ||
457 | =back | |
458 | ||
6693394d FC |
459 | =head3 L<perlpodstyle> |
460 | ||
461 | =over 4 | |
462 | ||
463 | =item * | |
464 | ||
465 | The tips on which formatting codes to use have been corrected and greatly | |
466 | expanded. | |
467 | ||
468 | =item * | |
469 | ||
470 | There are now a couple of example one-liners for previewing POD files after | |
471 | they have been edited. | |
472 | ||
473 | =back | |
474 | ||
475 | =head3 L<perlre> | |
476 | ||
477 | =over | |
478 | ||
479 | =item * | |
480 | ||
481 | The C<(*COMMIT)> directive is now listed in the right section | |
482 | (L<Verbs without an argument|perlre/Verbs without an argument>). | |
483 | ||
484 | =back | |
485 | ||
760696b8 FC |
486 | =head3 L<perlrun> |
487 | ||
488 | =over | |
489 | ||
490 | =item * | |
491 | ||
492 | L<perlrun> has undergone a significant clean-up. Most notably, the | |
493 | B<-0x...> form of the B<-0> flag has been clarified, and the final section | |
494 | on environment variables has been corrected and expanded (5.14.1). | |
2c389f6c | 495 | |
e8e35311 FC |
496 | =back |
497 | ||
6693394d FC |
498 | =head3 L<POSIX> |
499 | ||
500 | =over | |
501 | ||
502 | =item * | |
503 | ||
504 | The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>, | |
505 | C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been | |
506 | corrected (5.14.1). | |
507 | ||
508 | =back | |
509 | ||
34dc2ec0 | 510 | =head1 Diagnostics |
b7188eb5 | 511 | |
34dc2ec0 DM |
512 | The following additions or changes have been made to diagnostic output, |
513 | including warnings and fatal error messages. For the complete list of | |
514 | diagnostic messages, see L<perldiag>. | |
44691e6f | 515 | |
34dc2ec0 DM |
516 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
517 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
6c9cd4a1 | 518 | |
34dc2ec0 | 519 | [ Within each section, list entries as a =item entry ] |
6c9cd4a1 | 520 | |
34dc2ec0 | 521 | =head2 New Diagnostics |
44691e6f | 522 | |
34dc2ec0 | 523 | XXX Newly added diagnostic messages go here |
44691e6f | 524 | |
bdab33d1 DG |
525 | =head3 New Warnings |
526 | ||
34dc2ec0 | 527 | =over 4 |
44691e6f | 528 | |
bdab33d1 | 529 | =item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary"> |
44691e6f | 530 | |
bdab33d1 DG |
531 | Assigning to a temporary returned from an XS lvalue subroutine now produces a |
532 | warning [RT #31946]. | |
2c389f6c FC |
533 | |
534 | =back | |
535 | ||
34dc2ec0 | 536 | =head2 Changes to Existing Diagnostics |
b7188eb5 | 537 | |
34dc2ec0 | 538 | XXX Changes (i.e. rewording) of diagnostic messages go here |
b7188eb5 | 539 | |
34dc2ec0 | 540 | =over 4 |
b7188eb5 | 541 | |
5076a392 | 542 | =item * |
b7188eb5 | 543 | |
34dc2ec0 | 544 | XXX |
b7188eb5 | 545 | |
e8e35311 | 546 | =back |
5076a392 | 547 | |
34dc2ec0 | 548 | =head1 Utility Changes |
5076a392 | 549 | |
34dc2ec0 DM |
550 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
551 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
5076a392 | 552 | |
34dc2ec0 DM |
553 | [ List utility changes as a =head3 entry for each utility and =item |
554 | entries for each change | |
555 | Use L<XXX> with program names to get proper documentation linking. ] | |
5076a392 | 556 | |
34dc2ec0 | 557 | =head3 L<XXX> |
5076a392 | 558 | |
34dc2ec0 | 559 | =over 4 |
5076a392 FC |
560 | |
561 | =item * | |
562 | ||
34dc2ec0 | 563 | XXX |
5076a392 | 564 | |
2c389f6c | 565 | =back |
e8e35311 | 566 | |
34dc2ec0 | 567 | =head1 Configuration and Compilation |
5076a392 | 568 | |
34dc2ec0 DM |
569 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
570 | go here. Any other changes to the Perl build process should be listed here. | |
571 | However, any platform-specific changes should be listed in the | |
572 | L</Platform Support> section, instead. | |
2c389f6c | 573 | |
34dc2ec0 | 574 | [ List changes as a =item entry ]. |
2c389f6c | 575 | |
34dc2ec0 | 576 | =over 4 |
5076a392 | 577 | |
e8e35311 | 578 | =item * |
5076a392 | 579 | |
760696b8 FC |
580 | F<regexp.h> has been modified for compatibility with GCC's B<-Werror> |
581 | option, as used by some projects that include perl's header files (5.14.1). | |
5076a392 | 582 | |
bdab33d1 DG |
583 | =item * |
584 | ||
585 | USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V | |
586 | as they have affect the behaviour of the interpreter binary (albeit only | |
587 | in a small area). | |
588 | ||
34dc2ec0 | 589 | =back |
5076a392 | 590 | |
34dc2ec0 | 591 | =head1 Testing |
5076a392 | 592 | |
34dc2ec0 DM |
593 | XXX Any significant changes to the testing of a freshly built perl should be |
594 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
595 | large changes to the testing harness (e.g. when parallel testing was added). | |
596 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
597 | that they represent may be covered elsewhere. | |
5076a392 | 598 | |
34dc2ec0 | 599 | [ List each test improvement as a =item entry ] |
5076a392 | 600 | |
34dc2ec0 | 601 | =over 4 |
5076a392 FC |
602 | |
603 | =item * | |
604 | ||
34dc2ec0 | 605 | XXX |
e8e35311 | 606 | |
34dc2ec0 | 607 | =back |
5076a392 | 608 | |
34dc2ec0 | 609 | =head1 Platform Support |
5076a392 | 610 | |
34dc2ec0 | 611 | XXX Any changes to platform support should be listed in the sections below. |
5076a392 | 612 | |
34dc2ec0 DM |
613 | [ Within the sections, list each platform as a =item entry with specific |
614 | changes as paragraphs below it. ] | |
5076a392 | 615 | |
34dc2ec0 | 616 | =head2 New Platforms |
5076a392 | 617 | |
34dc2ec0 DM |
618 | XXX List any platforms that this version of perl compiles on, that previous |
619 | versions did not. These will either be enabled by new files in the F<hints/> | |
620 | directories, or new subdirectories and F<README> files at the top level of the | |
621 | source tree. | |
cdc10f43 | 622 | |
34dc2ec0 | 623 | =over 4 |
cdc10f43 | 624 | |
bdab33d1 | 625 | =item GNU/Hurd |
d430b8e7 | 626 | |
bdab33d1 DG |
627 | =over |
628 | ||
629 | =item * | |
630 | ||
631 | No longer overrides possible extra $ccflags values given to Configure | |
632 | on GNU/Hurd. C.f. Bug-Debian: http://bugs.debian.org/587901 | |
633 | ||
634 | =back | |
635 | ||
636 | =item Mac OS X | |
637 | ||
638 | Clarified apple developer tools requirements in README.macosx | |
639 | ||
640 | =item MSWin32 | |
641 | ||
642 | Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32 | |
643 | updated accordingly. [RT #91354] | |
644 | ||
645 | =item Solaris | |
646 | ||
647 | Updated the list of required packages for building perl to reflect Solaris 9 | |
648 | and 10 in README.solaris [RT #90850] | |
d430b8e7 | 649 | |
2c389f6c | 650 | =back |
5076a392 | 651 | |
34dc2ec0 | 652 | =head2 Discontinued Platforms |
5076a392 | 653 | |
34dc2ec0 | 654 | XXX List any platforms that this version of perl no longer compiles on. |
5076a392 | 655 | |
34dc2ec0 | 656 | =over 4 |
e8e35311 | 657 | |
34dc2ec0 | 658 | =item XXX-some-platform |
e8e35311 | 659 | |
34dc2ec0 | 660 | XXX |
1e463951 | 661 | |
c71a852f | 662 | =back |
b7188eb5 | 663 | |
34dc2ec0 | 664 | =head2 Platform-Specific Notes |
42a91c97 | 665 | |
34dc2ec0 DM |
666 | XXX List any changes for specific platforms. This could include configuration |
667 | and compilation changes or changes in portability/compatibility. However, | |
668 | changes within modules for platforms should generally be listed in the | |
669 | L</Modules and Pragmata> section. | |
42a91c97 | 670 | |
6693394d FC |
671 | =head3 Ubuntu Linux |
672 | ||
34dc2ec0 | 673 | =over 4 |
42a91c97 | 674 | |
6693394d | 675 | =item * |
42a91c97 | 676 | |
6693394d FC |
677 | The L<ODBM_File> installation process has been updated with the new library |
678 | paths on Ubuntu natty [RT #90106]. | |
679 | ||
680 | =item * | |
681 | ||
682 | I<h2ph> now gets the include paths from gcc correctly. This stopped | |
683 | working when Ubuntu switched to a "multiarch" setup [RT #90122]. | |
42a91c97 | 684 | |
34dc2ec0 | 685 | =back |
42a91c97 | 686 | |
34dc2ec0 | 687 | =head1 Internal Changes |
42a91c97 | 688 | |
34dc2ec0 DM |
689 | XXX Changes which affect the interface available to C<XS> code go here. |
690 | Other significant internal changes for future core maintainers should | |
691 | be noted as well. | |
42a91c97 | 692 | |
34dc2ec0 | 693 | =over 4 |
42a91c97 | 694 | |
2c389f6c FC |
695 | =item * |
696 | ||
c13a5c80 NC |
697 | When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY |
698 | field is no longer temporarily zeroed. Any destructors called on the freed | |
699 | elements see the remaining elements. Thus, %h=() becomes more like C<delete | |
700 | $h{$_} for keys %h>. | |
701 | ||
702 | =item * | |
703 | ||
74e0ddf7 NC |
704 | The compiled representation of formats is now stored via the mg_ptr of |
705 | their PERL_MAGIC_fm. Previously it was stored in the string buffer, | |
706 | beyond SvLEN(), the regular end of the string. SvCOMPILED() and | |
707 | SvCOMPILED_{on,off}() now exist solely for compatibility for XS code. | |
708 | The first is always 0, the other two now no-ops. | |
cdc10f43 | 709 | |
bdab33d1 DG |
710 | =item * |
711 | ||
c13a5c80 NC |
712 | Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now |
713 | stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with | |
714 | the tables stored in the string buffer, beyond SvLEN(). This eliminates the | |
715 | last place where the core stores data beyond SvLEN(). | |
bdab33d1 | 716 | |
34dc2ec0 | 717 | =back |
cdc10f43 | 718 | |
34dc2ec0 | 719 | =head1 Selected Bug Fixes |
cdc10f43 | 720 | |
34dc2ec0 DM |
721 | XXX Important bug fixes in the core language are summarised here. |
722 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
723 | L</Modules and Pragmata>. | |
cdc10f43 | 724 | |
34dc2ec0 | 725 | [ List each fix as a =item entry ] |
d430b8e7 | 726 | |
bdab33d1 DG |
727 | =head2 Regular expressions and character classes |
728 | ||
34dc2ec0 | 729 | =over 4 |
d430b8e7 FC |
730 | |
731 | =item * | |
732 | ||
f7a45dff KW |
733 | The new (in 5.14.0) regular expression modifier C</a> when repeated like |
734 | C</aa> forbids the characters outside the ASCII range that match | |
735 | characters inside that range from matching under C</i>. This did not | |
736 | work under some circumstances, all involving alternation, such as: | |
737 | ||
738 | "\N{KELVIN SIGN}" =~ /k|foo/iaa; | |
739 | ||
6693394d | 740 | succeeded inappropriately. This is now fixed. |
f7a45dff KW |
741 | |
742 | =item * | |
743 | ||
744 | 5.14.0 introduced some memory leaks in regular expression character | |
bdab33d1 | 745 | classes such as C<[\w\s]>, which have now been fixed |
f7a45dff KW |
746 | |
747 | =item * | |
748 | ||
749 | An edge case in regular expression matching could potentially loop. | |
750 | This happened only under C</i> in bracketed character classes that have | |
751 | characters with multi-character folds, and the target string to match | |
752 | against includes the first portion of the fold, followed by another | |
753 | character that has a multi-character fold that begins with the remaining | |
754 | portion of the fold, plus some more. | |
755 | ||
756 | "s\N{U+DF}" =~ /[\x{DF}foo]/i | |
757 | ||
bdab33d1 | 758 | is one such case. C<\xDF> folds to C<"ss"> |
f7a45dff KW |
759 | |
760 | =item * | |
761 | ||
762 | A few characters in regular expression pattern matches did not | |
763 | match correctly in some circumstances, all involving C</i>. The | |
764 | affected characters are: | |
765 | COMBINING GREEK YPOGEGRAMMENI, | |
766 | GREEK CAPITAL LETTER IOTA, | |
767 | GREEK CAPITAL LETTER UPSILON, | |
768 | GREEK PROSGEGRAMMENI, | |
769 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA, | |
770 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS, | |
771 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA, | |
772 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS, | |
773 | LATIN SMALL LETTER LONG S, | |
774 | LATIN SMALL LIGATURE LONG S T, | |
775 | and | |
776 | LATIN SMALL LIGATURE ST. | |
d430b8e7 | 777 | |
2fbb14a0 DG |
778 | =item * |
779 | ||
bdab33d1 DG |
780 | Fixed memory leak regression in regular expression compilation |
781 | under threading | |
782 | ||
783 | =back | |
784 | ||
785 | =head2 Formats | |
786 | ||
787 | A number of edge cases have been fixed with formats and formline; | |
2fbb14a0 DG |
788 | in particular, where the format itself is potentially variable (such as |
789 | with ties and overloading), and where the format and data differ in their | |
790 | encoding. In both these cases, it used to possible for the output to be | |
791 | corrupted. | |
792 | ||
bdab33d1 | 793 | =head2 Copy-on-write scalars |
975dff8c | 794 | |
6693394d FC |
795 | Copy-on-write scalars were introduced in 5.6.0, but most Perl code |
796 | did not encounter them (they were used mostly internally). Perl | |
797 | 5.10.0 extended them, such that assigning C<__PACKAGE__> or a | |
798 | hash key to a scalar would make it copy-on-write. Several parts | |
bdab33d1 | 799 | of Perl were not updated to account for them, but have now been fixed. |
975dff8c FC |
800 | |
801 | =over | |
802 | ||
803 | =item * | |
804 | ||
805 | C<utf8::decode> had a nasty bug that would modify copy-on-write scalars' | |
806 | string buffers in place (i.e., skipping the copy). This could result in | |
807 | hashes having two elements with the same key [RT #91834]. | |
808 | ||
809 | =item * | |
810 | ||
811 | Lvalue subroutines were not allowing COW scalars to be returned. This was | |
812 | fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context | |
813 | was not fixed until this release. | |
814 | ||
815 | =item * | |
816 | ||
817 | Elements of restricted hashes (see the L<fields> pragma) containing | |
818 | copy-on-write values couldn't be deleted, nor could such hashes be cleared | |
819 | (C<%hash = ()>). | |
820 | ||
821 | =item * | |
822 | ||
823 | Localising a tied variable used to make it read-only if it contained a | |
824 | copy-on-write string. | |
825 | ||
826 | =item * | |
827 | ||
828 | L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems. | |
829 | See L</Updated Modules and Pragmata>, above. | |
830 | ||
831 | =back | |
832 | ||
bdab33d1 | 833 | =head2 lvalue subroutines |
975dff8c | 834 | |
bdab33d1 | 835 | There have been various fixes to lvalue subroutines. |
975dff8c FC |
836 | |
837 | =over | |
838 | ||
839 | =item * | |
840 | ||
841 | Explicit return now returns the actual argument passed to return, instead | |
842 | of copying it [RT #72724]. | |
843 | ||
844 | =item * | |
845 | ||
846 | Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on | |
847 | the left-hand side of C<=>) for the last statement and the arguments to | |
848 | return. Since lvalue subroutines are not always called in lvalue context, | |
849 | this restriction has been lifted. | |
850 | ||
851 | =item * | |
852 | ||
853 | Lvalue subroutines are less restrictive as to what values can be returned. | |
854 | It used to croak on values returned by C<shift> and C<delete> and from | |
855 | other subroutines, but no longer does so. | |
856 | ||
857 | =item * | |
858 | ||
859 | Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list | |
860 | context. In fact, all subroutines used to, but regular subs were fixed in | |
861 | Perl 5.8.2. Now lvalue subroutines have been likewise fixed. | |
862 | ||
863 | =item * | |
864 | ||
865 | Lvalue subroutines used to copy their return values in rvalue context. Not | |
866 | only was this a waste of CPU cycles, but it also caused bugs. A C<($)> | |
867 | prototype would cause an lvalue sub to copy its return value [RT #62498], | |
868 | and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly | |
869 | [RT #78680]. | |
870 | ||
871 | =item * | |
872 | ||
873 | Autovivification now works on values returned from lvalue subroutines | |
874 | [RT #7946]. | |
875 | ||
876 | =item * | |
877 | ||
bdab33d1 DG |
878 | When called in pass-by-reference context (e.g., subroutine arguments or a list |
879 | passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind | |
880 | the arrays (or hashes) to scalar variables--something that is not supposed to | |
881 | happen. This could result in "Bizzare copy of ARRAY" errors or C<print> | |
882 | ignoring its arguments. It also made non-sensical code like C<@{\$_}> "work". | |
883 | This was fixed in 5.14.0 if an array were the first thing returned from the | |
884 | subroutine (but not for C<$scalar, @array> or hashes being returned). Now a | |
885 | more general fix has been applied [RT #23790]. | |
975dff8c | 886 | |
fad4a2e4 FC |
887 | =item * |
888 | ||
889 | Assignment to C<keys> returned from an lvalue sub used not to work, but now | |
890 | it does. | |
891 | ||
975dff8c FC |
892 | =back |
893 | ||
6693394d | 894 | =head2 Fixes related to hashes |
bdab33d1 DG |
895 | |
896 | =over | |
897 | ||
898 | =item * | |
899 | ||
900 | A bug has been fixed that would cause a "Use of freed value in iteration" | |
901 | error if the next two hash elements that would be iterated over are | |
6693394d FC |
902 | deleted [RT #85026]. |
903 | ||
904 | =item * | |
905 | ||
906 | Freeing deeply nested hashes no longer crashes [RT #44225]. | |
907 | ||
908 | =item * | |
909 | ||
910 | Deleting the current hash iterator (the hash element that would be returend | |
911 | by the next call to C<each>) in void context used not to free it. The hash | |
912 | would continue to reference it until the next iteration. This has been | |
913 | fixed [RT #85026]. | |
914 | ||
915 | =back | |
916 | ||
917 | =head2 Other notable fixes | |
918 | ||
919 | =over | |
bdab33d1 DG |
920 | |
921 | =item * | |
922 | ||
923 | Passing the same constant subroutine to both C<index> and C<formline> no | |
924 | longer causes one or the other to fail [RT #89218]. | |
925 | ||
f5d1ed10 FC |
926 | =item * |
927 | ||
928 | List assignment to lexical variables declared with attributes in the same | |
929 | statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0. | |
930 | It has now been fixed. | |
931 | ||
bdab33d1 DG |
932 | =item * |
933 | ||
6693394d FC |
934 | Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of |
935 | a pack template equivalent to "U0" if the input string was empty. This has | |
936 | been fixed [RT #90160]. | |
937 | ||
938 | =item * | |
939 | ||
940 | Destructors on objects were not called during global destruction on objects | |
941 | that were not referenced by any scalars. This could happen if an array | |
942 | element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a | |
943 | blessed variable (C<bless \my @a; sub foo { @a }>). | |
944 | ||
945 | Now there is an extra pass during global destruction to fire destructors on | |
946 | any objects that might be left after the usual passes that check for | |
947 | objects referenced by scalars [RT #36347]. | |
948 | ||
949 | This bug fix was added in Perl 5.13.9, but caused problems with some CPAN | |
950 | modules that were relying on the bug. Since it was so close to Perl | |
951 | 5.14.0, the fix was reverted in 5.13.10, to allow more time for the modules | |
952 | to adapt. Hopefully they will be fixed soon (see L</Known Problems>, | |
953 | below). | |
954 | ||
955 | =item * | |
956 | ||
957 | C<given> was not calling set-magic on the implicit lexical C<$_> that it | |
958 | uses. This meant, for example, that C<pos> would be remembered from one | |
959 | execution of the same C<given> block to the next, even if the input were a | |
960 | different variable [RT #84526]. | |
961 | ||
962 | =item * | |
963 | ||
964 | The "R" command for restarting a debugger session has been fixed to work on | |
965 | Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant | |
966 | [RT #87740]. | |
967 | ||
968 | =item * | |
969 | ||
970 | Fixed a case where it was possible that a freed buffer may have been read | |
971 | from when parsing a here document [RT #90128]. | |
972 | ||
973 | =item * | |
974 | ||
975 | The C<study> function could become confused if fed a string longer than | |
976 | 2**31 characters. Now it simply skips such strings. | |
977 | ||
978 | =item * | |
979 | ||
980 | C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>, | |
981 | inside a C<when> condition [RT #90888]. | |
bdab33d1 | 982 | |
42a91c97 FC |
983 | =back |
984 | ||
bdab33d1 DG |
985 | =head2 Additional fixes by ticket number |
986 | ||
987 | XXX Prefix these with "\n=item *\n" once the list is final | |
988 | ||
bdab33d1 DG |
989 | Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl |
990 | Fixed RT #89896: Locale::Maketext test failure | |
bdab33d1 DG |
991 | Fixed RT #91032: formline: bugs with non-string formats |
992 | Fixed RT #91880: C<$_> refcounting problems in @INC filters | |
993 | Fixed RT #92258: <$fh> hangs on a glob copy | |
6693394d FC |
994 | |
995 | XXX Comments from FC: I do not think #88822 and #89896 are necessary. | |
bdab33d1 | 996 | |
c71a852f | 997 | =head1 Known Problems |
44691e6f | 998 | |
34dc2ec0 DM |
999 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
1000 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
1001 | they were specific to a particular platform (see below). | |
cdc10f43 | 1002 | |
34dc2ec0 DM |
1003 | This is a list of some significant unfixed bugs, which are regressions |
1004 | from either 5.XXX.XXX or 5.XXX.XXX. | |
cdc10f43 | 1005 | |
34dc2ec0 | 1006 | [ List each fix as a =item entry ] |
ca767864 | 1007 | |
34dc2ec0 | 1008 | =over 4 |
cf5da40b CB |
1009 | |
1010 | =item * | |
1011 | ||
6693394d FC |
1012 | The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some |
1013 | systems [RT #82542]. | |
cf5da40b | 1014 | |
c71a852f | 1015 | =back |
014fb485 | 1016 | |
c71a852f | 1017 | =head1 Obituary |
014fb485 | 1018 | |
34dc2ec0 DM |
1019 | XXX If any significant core contributor has died, we've added a short obituary |
1020 | here. | |
44691e6f | 1021 | |
44691e6f AB |
1022 | =head1 Acknowledgements |
1023 | ||
34dc2ec0 | 1024 | XXX The list of people to thank goes here. |
29cf780c | 1025 | |
44691e6f AB |
1026 | =head1 Reporting Bugs |
1027 | ||
1028 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 1029 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
1030 | bug database at http://rt.perl.org/perlbug/ . There may also be |
1031 | information at http://www.perl.org/ , the Perl Home Page. | |
1032 | ||
1033 | If you believe you have an unreported bug, please run the L<perlbug> | |
1034 | program included with your release. Be sure to trim your bug down | |
1035 | to a tiny but sufficient test case. Your bug report, along with the | |
1036 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
1037 | analysed by the Perl porting team. | |
1038 | ||
1039 | If the bug you are reporting has security implications, which make it | |
1040 | inappropriate to send to a publicly archived mailing list, then please send | |
34dc2ec0 | 1041 | it to perl5-security-report@perl.org. This points to a closed subscription |
44691e6f AB |
1042 | unarchived mailing list, which includes all the core committers, who be able |
1043 | to help assess the impact of issues, figure out a resolution, and help | |
1044 | co-ordinate the release of patches to mitigate or fix the problem across all | |
34dc2ec0 DM |
1045 | platforms on which Perl is supported. Please only use this address for |
1046 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
1047 | distributed on CPAN. |
1048 | ||
1049 | =head1 SEE ALSO | |
1050 | ||
1051 | The F<Changes> file for an explanation of how to view exhaustive details | |
1052 | on what changed. | |
1053 | ||
1054 | The F<INSTALL> file for how to build Perl. | |
1055 | ||
1056 | The F<README> file for general stuff. | |
1057 | ||
1058 | The F<Artistic> and F<Copying> files for copyright information. | |
1059 | ||
1060 | =cut |