This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
a0954424e2e4488f7390ce45124da4adee9c9252
[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> has been upgraded from version 2.132140 to 2.132510.
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<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
187
188 No changes have been made to the installed code other than the version bump to
189 keep in sync with the latest CPAN release.
190
191 =item *
192
193 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
194
195 This upgrade is part of a larger change to make the array interface 64-bit safe
196 by using SSize_t instead of I32 for array indices.
197
198 In addition, an EBCDIC fix has been applied.
199
200 =item *
201
202 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
203
204 This upgrade is part of a larger change to preserve referential identity when
205 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
206 nonexistent array elements.
207
208 In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
209 fixed.
210
211 =item *
212
213 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
214
215 The documentation now makes it clear, as has always been the case, that
216 C<dl_unload_file> is only called automatically to unload all loaded shared
217 objects if the perl interpreter was built with the C macro
218 DL_UNLOAD_ALL_AT_EXIT defined.  Support for GNU DLD has also been removed.
219
220 =item *
221
222 L<Encode> has been upgraded from version 2.52 to 2.54.
223
224 An erroneous early return in C<decode_utf8> has been removed, and a bug in
225 C<_utf8_on> under COW has been fixed.
226
227 =item *
228
229 L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
230
231 No changes have been made to the installed code other than the version bump to
232 keep in sync with the latest CPAN release.
233
234 =item *
235
236 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
237
238 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
239 full details.
240
241 =item *
242
243 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
244
245 No changes have been made other than the version bump to keep in sync with the
246 latest CPAN release.
247
248 =item *
249
250 L<File::Glob> has been upgraded from version 1.20 to 1.21.
251
252 C<glob()> now warns in the context of C<use warnings "syscalls";> if the
253 supplied pattern has an internal NUL (C<"\0">) character.
254
255 =item *
256
257 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
258
259 Bosnian has now joined Croatian and Serbian in the lists of mutually
260 intelligible Slavic languages. [perl #72594]
261
262 =item *
263
264 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
265
266 This upgrade is part of a larger change to preserve referential identity when
267 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
268 nonexistent array elements.
269
270 =item *
271
272 L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
273
274 New codes have been added and the (deprecated) set of FIPS-10 country codes has
275 been removed.
276
277 =item *
278
279 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
280
281 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
282 consistent with other perl documentation. [perl #86686]
283
284 Added a bint() method for rounding towards zero. [perl #85296]
285
286 =item *
287
288 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
289
290 This upgrade is part of a larger change to make the array interface 64-bit safe
291 by using SSize_t instead of I32 for array indices.
292
293 =item *
294
295 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
296
297 The list of Perl versions covered has been updated.
298
299 =item *
300
301 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
302
303 C<requires> has been made more robust. [cpan #83728]
304
305 =item *
306
307 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000016.
308
309 The module's DESCRIPTION has been re-worded regarding safety/security to
310 satisfy CVE-2013-1437.
311
312 =item *
313
314 L<mro> has been upgraded from version 1.13 to 1.14.
315
316 This upgrade is part of a larger change to make the array interface 64-bit safe
317 by using SSize_t instead of I32 for array indices.
318
319 =item *
320
321 L<parent> has been upgraded from version 0.226 to 0.227.
322
323 No changes have been made to the installed code other than the version bump to
324 keep in sync with the latest CPAN release.
325
326 =item *
327
328 L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
329
330 No changes have been made to the installed code other than the version bump to
331 keep in sync with the latest CPAN release.
332
333 =item *
334
335 L<Perl::OSType> has been upgraded from version 1.003 to 1.004.
336
337 The Unix OSType 'bitrig' has been added.
338
339 =item *
340
341 L<re> has been upgraded from version 0.25 to 0.26.
342
343 A function signature has been corrected in the XS implementation.
344
345 =item *
346
347 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
348
349 The documentation of C<blessed> has been improved to mention the fact that
350 package "0" is defined but false.
351
352 =item *
353
354 L<Socket> has been upgraded from version 2.011 to 2.012.
355
356 Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
357
358 =item *
359
360 L<Storable> has been upgraded from version 2.46 to 2.47.
361
362 This upgrade is part of a larger change to preserve referential identity when
363 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
364 nonexistent array elements.
365
366 =item *
367
368 L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
369
370 Term::ReadLine::EditLine support has been added.
371
372 =item *
373
374 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
375
376 Day of year parsing (like "%y%j") has been fixed.
377
378 =item *
379
380 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
381
382 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
383 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
384 20.  When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
385 overridden.
386
387 =item *
388
389 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
390
391 This module now works on EBCDIC platforms.
392
393 =item *
394
395 L<version> has been upgraded from version 0.9903 to 0.9904.
396
397 No changes have been made to the installed code other than the version bump to
398 keep in sync with the latest CPAN release.
399
400 =item *
401
402 L<warnings> has been upgraded from version 1.18 to 1.19.
403
404 The C<syscalls> warnings category has been added to check for embedded NUL
405 (C<"\0">) characters in pathnames and string arguments to other system calls.
406
407 =item *
408
409 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
410
411 =back
412
413 =head2 Removed Modules and Pragmata
414
415 =over 4
416
417 =item *
418
419 XXX
420
421 =back
422
423 =head1 Documentation
424
425 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
426 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
427
428 =head2 New Documentation
429
430 XXX Changes which create B<new> files in F<pod/> go here.
431
432 =head3 L<XXX>
433
434 XXX Description of the purpose of the new file here
435
436 =head2 Changes to Existing Documentation
437
438 XXX Changes which significantly change existing files in F<pod/> go here.
439 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
440 section.
441
442 =head3 L<XXX>
443
444 =over 4
445
446 =item *
447
448 XXX Description of the change here
449
450 =back
451
452 =head1 Diagnostics
453
454 The following additions or changes have been made to diagnostic output,
455 including warnings and fatal error messages.  For the complete list of
456 diagnostic messages, see L<perldiag>.
457
458 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
459 include any changes in L<perldiag> that reconcile it to the C<C> code.
460
461 =head2 New Diagnostics
462
463 XXX Newly added diagnostic messages go under here, separated into New Errors
464 and New Warnings
465
466 =head3 New Errors
467
468 =over 4
469
470 =item *
471
472 XXX L<message|perldiag/"message">
473
474 =back
475
476 =head3 New Warnings
477
478 =over 4
479
480 =item *
481
482 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
483
484 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
485 produce a warning as of 5.20. The parts after the \0 were formerly ignored by
486 system calls.
487
488 =back
489
490 =head2 Changes to Existing Diagnostics
491
492 XXX Changes (i.e. rewording) of diagnostic messages go here
493
494 =over 4
495
496 =item *
497
498 XXX Describe change here
499
500 =back
501
502 =head1 Utility Changes
503
504 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
505 Most of these are built within the directories F<utils> and F<x2p>.
506
507 [ List utility changes as a =head3 entry for each utility and =item
508 entries for each change
509 Use L<XXX> with program names to get proper documentation linking. ]
510
511 =head3 L<find2perl>
512
513 =over 4
514
515 =item *
516
517 L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
518
519 =back
520
521 =head1 Configuration and Compilation
522
523 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
524 go here.  Any other changes to the Perl build process should be listed here.
525 However, any platform-specific changes should be listed in the
526 L</Platform Support> section, instead.
527
528 [ List changes as a =item entry ].
529
530 =over 4
531
532 =item *
533
534 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
535 avoids a race condition during parallel makes, which could cause the build to
536 fail.  This is the last known parallel make problem (on *nix platforms), and
537 therefore we believe that a parallel make should now always be error free.
538
539 =for comment
540
541 Strictly only for a build where build files such as F<Makefile.SH> have not
542 been updated by C<git> in an already configured and built tree.
543
544 =back
545
546 =head1 Testing
547
548 XXX Any significant changes to the testing of a freshly built perl should be
549 listed here.  Changes which create B<new> files in F<t/> go here as do any
550 large changes to the testing harness (e.g. when parallel testing was added).
551 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
552 that they represent may be covered elsewhere.
553
554 [ List each test improvement as a =item entry ]
555
556 =over 4
557
558 =item *
559
560 The test script F<t/bigmem/regexp.t> has been added to test that regular
561 expression matches on very large strings now succeed as expected.
562
563 =item *
564
565 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
566 now tested by the new test script F<t/op/rt119311.t>.
567
568 =item *
569
570 The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
571 preserved across signal handlers by the Win32 signal emulation code.
572
573 =item *
574
575 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
576 program on platforms where it is practical to do so.
577
578 =back
579
580 =head1 Platform Support
581
582 XXX Any changes to platform support should be listed in the sections below.
583
584 [ Within the sections, list each platform as a =item entry with specific
585 changes as paragraphs below it. ]
586
587 =head2 New Platforms
588
589 XXX List any platforms that this version of perl compiles on, that previous
590 versions did not.  These will either be enabled by new files in the F<hints/>
591 directories, or new subdirectories and F<README> files at the top level of the
592 source tree.
593
594 =over 4
595
596 =item Bitrig
597
598 Compile support has been added for Bitrig, a fork of OpenBSD
599
600 =back
601
602 =head2 Discontinued Platforms
603
604 XXX List any platforms that this version of perl no longer compiles on.
605
606 Configure hints and conditional code for several very old platforms
607 has been removed.  We have not received reports for these in many years,
608 typically not since perl-5.6.0.
609
610 =over 4
611
612 =item AT&T 3b1
613
614 Configure support for the 3b1, also known as the AT&T Unix PC (and the
615 similar AT&T 7300), has been removed.
616
617 =back
618
619 =head2 Platform-Specific Notes
620
621 XXX List any changes for specific platforms.  This could include configuration
622 and compilation changes or changes in portability/compatibility.  However,
623 changes within modules for platforms should generally be listed in the
624 L</Modules and Pragmata> section.
625
626 =over 4
627
628 =item WinCE
629
630 The building of XS modules has largely been restored. Several still cannot
631 (yet) be built but it is now possible to build Perl on WinCE with only a couple
632 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
633 incorporated soon.
634
635 =back
636
637 =head1 Internal Changes
638
639 XXX Changes which affect the interface available to C<XS> code go here.  Other
640 significant internal changes for future core maintainers should be noted as
641 well.
642
643 [ List each change as a =item entry ]
644
645 =over 4
646
647 =item *
648
649 The internal representation has changed for the match variables C<$1>, C<$2>
650 I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
651 C<${^POSTMATCH>.  It uses slightly less memory, avoids string comparisons
652 and numeric conversions during lookup, and uses 23 fewer lines of C.  This
653 change should not affect any external code.
654
655 =back
656
657 =head1 Selected Bug Fixes
658
659 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
660 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
661
662 [ List each fix as a =item entry ]
663
664 =over 4
665
666 =item *
667
668 The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
669
670 =back
671
672 =head1 Known Problems
673
674 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
675 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
676 platform specific bugs also go here.
677
678 [ List each fix as a =item entry ]
679
680 =over 4
681
682 =item *
683
684 XXX
685
686 =back
687
688 =head1 Obituary
689
690 XXX If any significant core contributor has died, we've added a short obituary
691 here.
692
693 =head1 Acknowledgements
694
695 XXX Generate this with:
696
697   perl Porting/acknowledgements.pl v5.19.3..HEAD
698
699 =head1 Reporting Bugs
700
701 If you find what you think is a bug, you might check the articles recently
702 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
703 http://rt.perl.org/perlbug/ .  There may also be information at
704 http://www.perl.org/ , the Perl Home Page.
705
706 If you believe you have an unreported bug, please run the L<perlbug> program
707 included with your release.  Be sure to trim your bug down to a tiny but
708 sufficient test case.  Your bug report, along with the output of C<perl -V>,
709 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
710
711 If the bug you are reporting has security implications, which make it
712 inappropriate to send to a publicly archived mailing list, then please send it
713 to perl5-security-report@perl.org.  This points to a closed subscription
714 unarchived mailing list, which includes all the core committers, who will be
715 able to help assess the impact of issues, figure out a resolution, and help
716 co-ordinate the release of patches to mitigate or fix the problem across all
717 platforms on which Perl is supported.  Please only use this address for
718 security issues in the Perl core, not for modules independently distributed on
719 CPAN.
720
721 =head1 SEE ALSO
722
723 The F<Changes> file for an explanation of how to view exhaustive details on
724 what changed.
725
726 The F<INSTALL> file for how to build Perl.
727
728 The F<README> file for general stuff.
729
730 The F<Artistic> and F<Copying> files for copyright information.
731
732 =cut