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