This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
2d5c50784bd8dfa252450d774ddbdffcdc88ab5f
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.19.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.3 release and the 5.19.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.19.2, first read
16 L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head1 Security
31
32 XXX Any security-related notices go here.  In particular, any security
33 vulnerabilities closed should be noted here rather than in the
34 L</Selected Bug Fixes> section.
35
36 [ List each security issue as a =head2 entry ]
37
38 =head1 Incompatible Changes
39
40 =head2 Locale decimal point character no longer leaks outside of
41 S<C<use locale>> scope (with the exception of C<$!>)
42
43 This is actually a bug fix, but some code has come to rely on the bug being
44 present, so this change is listed here.  The current locale that the program is
45 running under is not supposed to be visible to Perl code except within the
46 scope of a S<C<use locale>>.  However, until now under certain circumstances,
47 the character used for a decimal point (often a comma) leaked outside the
48 scope.
49
50 This continues the work released in Perl 5.19.1.  It turns out that that did
51 not catch all the leaks, including C<printf> and C<sprintf> not respecting
52 S<C<use locale>>.  If your code is affected by this change, simply add a
53 S<C<use locale>>.
54
55 Now, the only known place where C<'use locale'> is not respected is in the
56 stringification of L<$!|perlvar/$!>.
57
58 =head1 Deprecations
59
60 XXX Any deprecated features, syntax, modules etc. should be listed here.
61
62 =head2 Module removals
63
64 XXX Remove this section if inapplicable.
65
66 The following modules will be removed from the core distribution in a
67 future release, and will at that time need to be installed from CPAN.
68 Distributions on CPAN which require these modules will need to list them as
69 prerequisites.
70
71 The core versions of these modules will now issue C<"deprecated">-category
72 warnings to alert you to this fact.  To silence these deprecation warnings,
73 install the modules in question from CPAN.
74
75 Note that these are (with rare exceptions) fine modules that you are encouraged
76 to continue to use.  Their disinclusion from core primarily hinges on their
77 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
78 not usually on concerns over their design.
79
80 =over
81
82 XXX Note that deprecated modules should be listed here even if they are listed
83 as an updated module in the L</Modules and Pragmata> section.
84
85 =back
86
87 [ List each other deprecation as a =head2 entry ]
88
89 =head1 Performance Enhancements
90
91 =over 4
92
93 =item *
94
95 The trie performance enhancement for regular expressions has now been extended
96 to those compiled under C</iaa>.
97
98 =back
99
100 =head1 Modules and Pragmata
101
102 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
103 go here.  If Module::CoreList is updated, generate an initial draft of the
104 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
105 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
106 below.  A paragraph summary for important changes should then be added by hand.
107 In an ideal world, dual-life modules would have a F<Changes> file that could be
108 cribbed.
109
110 [ Within each section, list entries as a =item entry ]
111
112 =head2 New Modules and Pragmata
113
114 =over 4
115
116 =item *
117
118 XXX
119
120 =back
121
122 =head2 Updated Modules and Pragmata
123
124 =over 4
125
126 =item *
127
128 L<B> has been upgraded from version 1.45 to 1.46.
129
130 The fix for [perl #118525] introduced a regression in the behaviour of
131 C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
132 C<NULL> C<CvGV> to C<undef>.  C<B::CV::GV> again returns a C<B::SPECIAL>
133 object in this case. [perl #119351]
134
135 =item *
136
137 L<B::Concise> has been upgraded from version 0.98 to 0.99.
138
139 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
140
141 =item *
142
143 L<Carp> has been upgraded from version 1.31 to 1.32.
144
145 =over 4
146
147 =item *
148
149 In stack traces, subroutine arguments that are strings are now quoted in a
150 consistent manner, regardless of what characters they contain and how they're
151 internally represented.
152
153 =item *
154
155 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
156 C<overload> stash.
157
158 =item *
159
160 C<Carp> now avoids some unwanted Unicode warnings on older Perls.  This doesn't
161 affect behaviour with current Perl.
162
163 =item *
164
165 C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
166 message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
167 expects C<Carp::Heavy> to provide subroutines.
168
169 =back
170
171 =item *
172
173 L<charnames> has been upgraded from version 1.38 to 1.39.
174
175 This module now works on EBCDIC platforms.
176
177 =item *
178
179 L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
180
181 No changes have been made to the installed code other than the version bump to
182 keep in sync with the latest CPAN release.
183
184 =item *
185
186 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
187
188 This upgrade is part of a larger change to make the array interface 64-bit safe
189 by using SSize_t instead of I32 for array indices.
190
191 =item *
192
193 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
194
195 This upgrade is part of a larger change to preserve referential identity when
196 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
197 nonexistent array elements.
198
199 =item *
200
201 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
202
203 The documentation now makes it clear, as has always been the case, that
204 C<dl_unload_file> is only called automatically to unload all loaded shared
205 objects if the perl interpreter was built with the C macro
206 DL_UNLOAD_ALL_AT_EXIT defined.  Support for GNU DLD has also been removed.
207
208 =item *
209
210 L<Encode> has been upgraded from version 2.52 to 2.54.
211
212 An erroneous early return in C<decode_utf8> has been removed, and a bug in
213 C<_utf8_on> under COW has been fixed.
214
215 =item *
216
217 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
218
219 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
220 full details.
221
222 =item *
223
224 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
225
226 No changes have been made other than the version bump to keep in sync with the
227 latest CPAN release.
228
229 =item *
230
231 L<File::Glob> has been upgraded from version 1.20 to 1.21.
232
233 C<glob()> now warns in the context of C<use warnings "syscalls";> if the
234 supplied pattern has an internal NUL (C<"\0">) character.
235
236 =item *
237
238 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
239
240 Bosnian has now joined Croatian and Serbian in the lists of mutually
241 intelligible Slavic languages. [perl #72594]
242
243 =item *
244
245 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
246
247 This upgrade is part of a larger change to preserve referential identity when
248 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
249 nonexistent array elements.
250
251 =item *
252
253 L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
254
255 New codes have been added and the (deprecated) set of FIPS-10 country codes has
256 been removed.
257
258 =item *
259
260 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
261
262 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
263 consistent with other perl documentation. [perl #86686]
264
265 Added a bint() method for rounding towards zero. [perl #85296]
266
267 =item *
268
269 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
270
271 This upgrade is part of a larger change to make the array interface 64-bit safe
272 by using SSize_t instead of I32 for array indices.
273
274 =item *
275
276 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
277
278 The list of Perl versions covered has been updated.
279
280 =item *
281
282 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
283
284 C<requires> has been made more robust. [cpan #83728]
285
286 =item *
287
288 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000016.
289
290 The module's DESCRIPTION has been re-worded regarding safety/security to
291 satisfy CVE-2013-1437.
292
293 =item *
294
295 L<mro> has been upgraded from version 1.13 to 1.14.
296
297 This upgrade is part of a larger change to make the array interface 64-bit safe
298 by using SSize_t instead of I32 for array indices.
299
300 =item *
301
302 L<parent> has been upgraded from version 0.226 to 0.227.
303
304 No changes have been made to the installed code other than the version bump to
305 keep in sync with the latest CPAN release.
306
307 =item *
308
309 L<Perl::OSType> has been upgraded from version 1.003 to 1.004.
310
311 The Unix OSType 'bitrig' has been added.
312
313 =item *
314
315 L<re> has been upgraded from version 0.25 to 0.26.
316
317 A function signature has been corrected in the XS implementation.
318
319 =item *
320
321 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
322
323 The documentation of C<blessed> has been improved to mention the fact that
324 package "0" is defined but false.
325
326 =item *
327
328 L<Socket> has been upgraded from version 2.011 to 2.012.
329
330 Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
331
332 =item *
333
334 L<Storable> has been upgraded from version 2.46 to 2.47.
335
336 This upgrade is part of a larger change to preserve referential identity when
337 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
338 nonexistent array elements.
339
340 =item *
341
342 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
343
344 Day of year parsing (like "%y%j") has been fixed.
345
346 =item *
347
348 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
349
350 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
351 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
352 20.  When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
353 overridden.
354
355 =item *
356
357 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
358
359 This module now works on EBCDIC platforms.
360
361 =item *
362
363 L<version> has been upgraded from version 0.9903 to 0.9904.
364
365 No changes have been made to the installed code other than the version bump to
366 keep in sync with the latest CPAN release.
367
368 =item *
369
370 L<warnings> has been upgraded from version 1.18 to 1.19.
371
372 The C<syscalls> warnings category has been added to check for embedded NUL
373 (C<"\0">) characters in pathnames and string arguments to other system calls.
374
375 =item *
376
377 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
378
379 =back
380
381 =head2 Removed Modules and Pragmata
382
383 =over 4
384
385 =item *
386
387 XXX
388
389 =back
390
391 =head1 Documentation
392
393 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
394 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
395
396 =head2 New Documentation
397
398 XXX Changes which create B<new> files in F<pod/> go here.
399
400 =head3 L<XXX>
401
402 XXX Description of the purpose of the new file here
403
404 =head2 Changes to Existing Documentation
405
406 XXX Changes which significantly change existing files in F<pod/> go here.
407 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
408 section.
409
410 =head3 L<XXX>
411
412 =over 4
413
414 =item *
415
416 XXX Description of the change here
417
418 =back
419
420 =head1 Diagnostics
421
422 The following additions or changes have been made to diagnostic output,
423 including warnings and fatal error messages.  For the complete list of
424 diagnostic messages, see L<perldiag>.
425
426 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
427 include any changes in L<perldiag> that reconcile it to the C<C> code.
428
429 =head2 New Diagnostics
430
431 XXX Newly added diagnostic messages go under here, separated into New Errors
432 and New Warnings
433
434 =head3 New Errors
435
436 =over 4
437
438 =item *
439
440 XXX L<message|perldiag/"message">
441
442 =back
443
444 =head3 New Warnings
445
446 =over 4
447
448 =item *
449
450 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
451
452 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
453 produce a warning as of 5.20. The parts after the \0 were formerly ignored by
454 system calls.
455
456 =back
457
458 =head2 Changes to Existing Diagnostics
459
460 XXX Changes (i.e. rewording) of diagnostic messages go here
461
462 =over 4
463
464 =item *
465
466 XXX Describe change here
467
468 =back
469
470 =head1 Utility Changes
471
472 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
473 Most of these are built within the directories F<utils> and F<x2p>.
474
475 [ List utility changes as a =head3 entry for each utility and =item
476 entries for each change
477 Use L<XXX> with program names to get proper documentation linking. ]
478
479 =head3 L<find2perl>
480
481 =over 4
482
483 =item *
484
485 L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
486
487 =back
488
489 =head1 Configuration and Compilation
490
491 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
492 go here.  Any other changes to the Perl build process should be listed here.
493 However, any platform-specific changes should be listed in the
494 L</Platform Support> section, instead.
495
496 [ List changes as a =item entry ].
497
498 =over 4
499
500 =item *
501
502 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
503 avoids a race condition during parallel makes, which could cause the build to
504 fail.  This is the last known parallel make problem (on *nix platforms), and
505 therefore we believe that a parallel make should now always be error free.
506
507 =for comment
508
509 Strictly only for a build where build files such as F<Makefile.SH> have not
510 been updated by C<git> in an already configured and built tree.
511
512 =back
513
514 =head1 Testing
515
516 XXX Any significant changes to the testing of a freshly built perl should be
517 listed here.  Changes which create B<new> files in F<t/> go here as do any
518 large changes to the testing harness (e.g. when parallel testing was added).
519 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
520 that they represent may be covered elsewhere.
521
522 [ List each test improvement as a =item entry ]
523
524 =over 4
525
526 =item *
527
528 The test script F<t/bigmem/regexp.t> has been added to test that regular
529 expression matches on very large strings now succeed as expected.
530
531 =item *
532
533 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
534 now tested by the new test script F<t/op/rt119311.t>.
535
536 =item *
537
538 The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
539 preserved across signal handlers by the Win32 signal emulation code.
540
541 =item *
542
543 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
544 program on platforms where it is practical to do so.
545
546 =back
547
548 =head1 Platform Support
549
550 XXX Any changes to platform support should be listed in the sections below.
551
552 [ Within the sections, list each platform as a =item entry with specific
553 changes as paragraphs below it. ]
554
555 =head2 New Platforms
556
557 XXX List any platforms that this version of perl compiles on, that previous
558 versions did not.  These will either be enabled by new files in the F<hints/>
559 directories, or new subdirectories and F<README> files at the top level of the
560 source tree.
561
562 =over 4
563
564 =item Bitrig
565
566 Compile support has been added for Bitrig, a fork of OpenBSD
567
568 =back
569
570 =head2 Discontinued Platforms
571
572 XXX List any platforms that this version of perl no longer compiles on.
573
574 Configure hints and conditional code for several very old platforms
575 has been removed.  We have not received reports for these in many years,
576 typically not since perl-5.6.0.
577
578 =over 4
579
580 =item AT&T 3b1
581
582 Configure support for the 3b1, also known as the AT&T Unix PC (and the
583 similar AT&T 7300), has been removed.
584
585 =back
586
587 =head2 Platform-Specific Notes
588
589 XXX List any changes for specific platforms.  This could include configuration
590 and compilation changes or changes in portability/compatibility.  However,
591 changes within modules for platforms should generally be listed in the
592 L</Modules and Pragmata> section.
593
594 =over 4
595
596 =item WinCE
597
598 The building of XS modules has largely been restored. Several still cannot
599 (yet) be built but it is now possible to build Perl on WinCE with only a couple
600 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
601 incorporated soon.
602
603 =back
604
605 =head1 Internal Changes
606
607 XXX Changes which affect the interface available to C<XS> code go here.  Other
608 significant internal changes for future core maintainers should be noted as
609 well.
610
611 [ List each change as a =item entry ]
612
613 =over 4
614
615 =item *
616
617 The internal representation has changed for the match variables C<$1>, C<$2>
618 I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
619 C<${^POSTMATCH>.  It uses slightly less memory, avoids string comparisons
620 and numeric conversions during lookup, and uses 23 fewer lines of C.  This
621 change should not affect any external code.
622
623 =back
624
625 =head1 Selected Bug Fixes
626
627 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
628 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
629
630 [ List each fix as a =item entry ]
631
632 =over 4
633
634 =item *
635
636 The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
637
638 =back
639
640 =head1 Known Problems
641
642 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
643 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
644 platform specific bugs also go here.
645
646 [ List each fix as a =item entry ]
647
648 =over 4
649
650 =item *
651
652 XXX
653
654 =back
655
656 =head1 Obituary
657
658 XXX If any significant core contributor has died, we've added a short obituary
659 here.
660
661 =head1 Acknowledgements
662
663 XXX Generate this with:
664
665   perl Porting/acknowledgements.pl v5.19.3..HEAD
666
667 =head1 Reporting Bugs
668
669 If you find what you think is a bug, you might check the articles recently
670 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
671 http://rt.perl.org/perlbug/ .  There may also be information at
672 http://www.perl.org/ , the Perl Home Page.
673
674 If you believe you have an unreported bug, please run the L<perlbug> program
675 included with your release.  Be sure to trim your bug down to a tiny but
676 sufficient test case.  Your bug report, along with the output of C<perl -V>,
677 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
678
679 If the bug you are reporting has security implications, which make it
680 inappropriate to send to a publicly archived mailing list, then please send it
681 to perl5-security-report@perl.org.  This points to a closed subscription
682 unarchived mailing list, which includes all the core committers, who will be
683 able to help assess the impact of issues, figure out a resolution, and help
684 co-ordinate the release of patches to mitigate or fix the problem across all
685 platforms on which Perl is supported.  Please only use this address for
686 security issues in the Perl core, not for modules independently distributed on
687 CPAN.
688
689 =head1 SEE ALSO
690
691 The F<Changes> file for an explanation of how to view exhaustive details on
692 what changed.
693
694 The F<INSTALL> file for how to build Perl.
695
696 The F<README> file for general stuff.
697
698 The F<Artistic> and F<Copying> files for copyright information.
699
700 =cut