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