This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for e9827b374
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 To do:
5 3f40aba3 Merge branch 'ebcdic' into blead
6 df8c7dee Fix segfault in filehandle duplication
7 b66f3475 Fix PerlIO_get_cnt and friends
8
9 =head1 NAME
10
11 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
12 to be processed before release. ]
13
14 perldelta - what is new for perl v5.19.4
15
16 =head1 DESCRIPTION
17
18 This document describes differences between the 5.19.3 release and the 5.19.4
19 release.
20
21 If you are upgrading from an earlier release such as 5.19.2, first read
22 L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
23
24 =head1 Notice
25
26 XXX Any important notices here
27
28 =head1 Core Enhancements
29
30 XXX New core language features go here.  Summarize user-visible core language
31 enhancements.  Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
33
34 [ List each enhancement as a =head2 entry ]
35
36 =head2 C<rand> now uses a consistent random number generator
37
38 Previously perl would use a platform specific random number generator, varying
39 between the libc rand(), random() or drand48().
40
41 This meant that the quality of perl's random numbers would vary from platform
42 to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX
43 platforms such as Linux with drand48().
44
45 Perl now uses its own internal drand48() implementation on all platforms.
46 [perl #115928]
47
48 =head2 Better 64-bit support
49
50 On 64-bit platforms, the internal array functions now use 64-bit offsets,
51 allowing Perl arrays to hold more than 2**31 elements, if you have the memory
52 available.
53
54 The regular expression engine now supports strings longer than 2**31
55 characters.  [perl #112790, #116907]
56
57 =head2 New slice syntax
58
59 The new C<%hash{...}> and C<@array[...]> syntax returns a list of key/value (or
60 index/value) pairs.
61
62 =head1 Security
63
64 XXX Any security-related notices go here.  In particular, any security
65 vulnerabilities closed should be noted here rather than in the
66 L</Selected Bug Fixes> section.
67
68 [ List each security issue as a =head2 entry ]
69
70 =head1 Incompatible Changes
71
72 =head2 Locale decimal point character no longer leaks outside of
73 S<C<use locale>> scope (with the exception of $!)
74
75 This is actually a bug fix, but some code has come to rely on the bug being
76 present, so this change is listed here.  The current locale that the program is
77 running under is not supposed to be visible to Perl code except within the
78 scope of a S<C<use locale>>.  However, until now under certain circumstances,
79 the character used for a decimal point (often a comma) leaked outside the
80 scope.
81
82 This continues the work released in Perl 5.19.1.  It turns out that that did
83 not catch all the leaks, including C<printf> and C<sprintf> not respecting
84 S<C<use locale>>.  If your code is affected by this change, simply add a
85 S<C<use locale>>.
86
87 Now, the only known place where S<C<use locale>> is not respected is in the
88 stringification of L<$!|perlvar/$!>.
89
90 =head1 Deprecations
91
92 XXX Any deprecated features, syntax, modules etc. should be listed here.
93
94 =head2 Module removals
95
96 XXX Remove this section if inapplicable.
97
98 The following modules will be removed from the core distribution in a
99 future release, and will at that time need to be installed from CPAN.
100 Distributions on CPAN which require these modules will need to list them as
101 prerequisites.
102
103 The core versions of these modules will now issue C<"deprecated">-category
104 warnings to alert you to this fact.  To silence these deprecation warnings,
105 install the modules in question from CPAN.
106
107 Note that these are (with rare exceptions) fine modules that you are encouraged
108 to continue to use.  Their disinclusion from core primarily hinges on their
109 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
110 not usually on concerns over their design.
111
112 =over
113
114 XXX Note that deprecated modules should be listed here even if they are listed
115 as an updated module in the L</Modules and Pragmata> section.
116
117 =back
118
119 [ List each other deprecation as a =head2 entry ]
120
121 =head1 Performance Enhancements
122
123 =over 4
124
125 =item *
126
127 The trie performance enhancement for regular expressions has now been extended
128 to those compiled under C</iaa>.
129
130 =back
131
132 =head1 Modules and Pragmata
133
134 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
135 go here.  If Module::CoreList is updated, generate an initial draft of the
136 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
137 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
138 below.  A paragraph summary for important changes should then be added by hand.
139 In an ideal world, dual-life modules would have a F<Changes> file that could be
140 cribbed.
141
142 [ Within each section, list entries as a =item entry ]
143
144 =head2 New Modules and Pragmata
145
146 =over 4
147
148 =item *
149
150 XXX
151
152 =back
153
154 =head2 Updated Modules and Pragmata
155
156 =over 4
157
158 =item *
159
160 L<autodie> has been upgraded from version 2.20 to 2.21.
161
162 Numerous improvements have been made, many speed-related.  See the F<Changes>
163 file in the CPAN distribution for full details.
164
165 =item *
166
167 L<B> has been upgraded from version 1.45 to 1.46.
168
169 The fix for [perl #118525] introduced a regression in the behaviour of
170 C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
171 C<NULL> C<CvGV> to C<undef>.  C<B::CV::GV> again returns a C<B::SPECIAL> object
172 in this case.  [perl #119351]
173
174 =item *
175
176 L<B::Concise> has been upgraded from version 0.98 to 0.99.
177
178 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed
179 and handling of the new kvaslice and kvhslice operators have been added.
180
181 =item *
182
183 L<B::Deparse> has been upgraded from version 1.22 to 1.23.
184
185 The new kvaslice and kvhslice operators have been added.
186
187 =item *
188
189 L<Carp> has been upgraded from version 1.31 to 1.32.
190
191 =over 4
192
193 =item *
194
195 In stack traces, subroutine arguments that are strings are now quoted in a
196 consistent manner, regardless of what characters they contain and how they're
197 internally represented.
198
199 =item *
200
201 C<Carp> now takes care not to clobber the status variables $! and $^E.
202
203 =item *
204
205 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
206 C<overload> stash.
207
208 =item *
209
210 C<Carp> now avoids some unwanted Unicode warnings on older Perls.  This doesn't
211 affect behaviour with current Perls.
212
213 =item *
214
215 C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
216 message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
217 expects C<Carp::Heavy> to provide subroutines.
218
219 =back
220
221 =item *
222
223 L<charnames> has been upgraded from version 1.38 to 1.39.
224
225 This module now works on EBCDIC platforms.
226
227 =item *
228
229 L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
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<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
237
238 No changes have been made to the installed code other than the version bump to
239 keep in sync with the latest CPAN release.
240
241 =item *
242
243 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
244
245 This upgrade is part of a larger change to make the array interface 64-bit safe
246 by using SSize_t instead of I32 for array indices.
247
248 In addition, an EBCDIC fix has been applied.
249
250 =item *
251
252 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
253
254 This upgrade is part of a larger change to preserve referential identity when
255 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
256 nonexistent array elements.
257
258 In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
259 fixed.
260
261 =item *
262
263 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
264
265 The documentation now makes it clear, as has always been the case, that
266 C<dl_unload_file> is only called automatically to unload all loaded shared
267 objects if the perl interpreter was built with the C macro
268 DL_UNLOAD_ALL_AT_EXIT defined.  Support for GNU DLD has also been removed.
269
270 =item *
271
272 L<Encode> has been upgraded from version 2.52 to 2.55.
273
274 An erroneous early return in C<decode_utf8> has been removed, and a bug in
275 C<_utf8_on> under COW has been fixed.  Encode also now uses L<parent> rather
276 than L<base> throughout.
277
278 =item *
279
280 L<Exporter> has been upgraded from version 5.69 to 5.70.
281
282 A number of typos have been corrected in the documentation.
283
284 =item *
285
286 L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
287
288 No changes have been made to the installed code other than the version bump to
289 keep in sync with the latest CPAN release.
290
291 =item *
292
293 L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
294
295 No changes have been made to the installed code other than the version bump to
296 keep in sync with the latest CPAN release.
297
298 =item *
299
300 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
301
302 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
303 full details.
304
305 =item *
306
307 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.23.
308
309 Unquoted "here-doc" markers for typemaps can now be optionally followed by a
310 semicolon, just like quoted markers.  [perl #119761]
311
312 =item *
313
314 L<File::Find> has been upgraded from version 1.24 to 1.25.
315
316 Better diagnostics are now provided in the case of a failed C<chdir>.
317
318 =item *
319
320 L<File::Glob> has been upgraded from version 1.20 to 1.21.
321
322 C<glob> now warns in the context of C<use warnings "syscalls";> if the supplied
323 pattern has an internal NUL (C<"\0">) character.
324
325 =item *
326
327 L<FileCache> has been upgraded from version 1.08 to 1.09.
328
329 This upgrade is part of a larger change to use L<parent> rather than L<base>.
330
331 =item *
332
333 L<Hash::Util::FieldHash> has been upgraded from version 1.12 to 1.13.
334
335 This upgrade is part of a larger change to use L<parent> rather than L<base>.
336
337 =item *
338
339 L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035.
340
341 Encoded data from C<post_form> now preserves term order if data is provided as
342 an array reference.  (They are still sorted for consistency if provided as a
343 hash reference.)
344
345 =item *
346
347 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
348
349 Bosnian has now joined Croatian and Serbian in the lists of mutually
350 intelligible Slavic languages.  [perl #72594]
351
352 =item *
353
354 L<IO> has been upgraded from version 1.28 to 1.29.
355
356 A minor internals-only change has been made to the XS code.
357
358 =item *
359
360 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
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<Locale::Codes> has been upgraded from version 3.26 to 3.27.
369
370 New codes have been added and the (deprecated) set of FIPS-10 country codes has
371 been removed.
372
373 =item *
374
375 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
376
377 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
378 consistent with other Perl documentation.  [perl #86686]
379
380 Added a C<bint> method for rounding towards zero.  [perl #85296]
381
382 =item *
383
384 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
385
386 This upgrade is part of a larger change to make the array interface 64-bit safe
387 by using SSize_t instead of I32 for array indices.
388
389 =item *
390
391 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
392
393 The list of Perl versions covered has been updated.
394
395 =item *
396
397 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
398
399 C<requires> has been made more robust.  [cpan #83728]
400
401 =item *
402
403 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018.
404
405 The module's DESCRIPTION has been re-worded regarding safety/security to
406 satisfy CVE-2013-1437.  Also, versions are now detainted if needed.  [cpan
407 #88576]
408
409 =item *
410
411 L<mro> has been upgraded from version 1.13 to 1.14.
412
413 This upgrade is part of a larger change to make the array interface 64-bit safe
414 by using SSize_t instead of I32 for array indices.
415
416 =item *
417
418 L<Opcode> has been upgraded from version 1.25 to 1.26.
419
420 The new kvaslice and kvhslice operators have been added.
421
422 =item *
423
424 L<parent> has been upgraded from version 0.226 to 0.227.
425
426 No changes have been made to the installed code other than the version bump to
427 keep in sync with the latest CPAN release.
428
429 =item *
430
431 L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
432
433 No changes have been made to the installed code other than the version bump to
434 keep in sync with the latest CPAN release.
435
436 =item *
437
438 L<Perl::OSType> has been upgraded from version 1.003 to 1.005.
439
440 The Unix OSType 'bitrig' has been added.
441
442 =item *
443
444 L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044.
445
446 The use of C<gensym> in a number of examples has been removed, the use of C<&>
447 in subroutine calls is now clarified and several new questions have been
448 answered.
449
450 =item *
451
452 L<Pod::Html> has been upgraded from version 1.20 to 1.21.
453
454 This upgrade is part of a larger change to use L<parent> rather than L<base>.
455
456 =item *
457
458 L<re> has been upgraded from version 0.25 to 0.26.
459
460 This upgrade is part of a larger change to support 64-bit string lengths in the
461 regular expression engine.
462
463 =item *
464
465 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
466
467 The documentation of C<blessed> has been improved to mention the fact that
468 package "0" is defined but false.
469
470 =item *
471
472 L<Socket> has been upgraded from version 2.011 to 2.012.
473
474 Syntax errors when building on the WinCE platform have been fixed.  [cpan
475 #87389]
476
477 =item *
478
479 L<Storable> has been upgraded from version 2.46 to 2.47.
480
481 This upgrade is part of a larger change to preserve referential identity when
482 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
483 nonexistent array elements.
484
485 =item *
486
487 L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
488
489 Term::ReadLine::EditLine support has been added.
490
491 =item *
492
493 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
494
495 Day of year parsing (like "%y%j") has been fixed.
496
497 =item *
498
499 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
500
501 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
502 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
503 20.  When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
504 overridden.
505
506 =item *
507
508 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
509
510 This module now works on EBCDIC platforms.
511
512 =item *
513
514 L<version> has been upgraded from version 0.9903 to 0.9904.
515
516 No changes have been made to the installed code other than the version bump to
517 keep in sync with the latest CPAN release.
518
519 =item *
520
521 L<warnings> has been upgraded from version 1.18 to 1.19.
522
523 The C<syscalls> warnings category has been added to check for embedded NUL
524 (C<"\0">) characters in pathnames and string arguments to other system calls.
525
526 =item *
527
528 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
529
530 XXX TODO
531
532 =back
533
534 =head2 Removed Modules and Pragmata
535
536 =over 4
537
538 =item *
539
540 XXX
541
542 =back
543
544 =head1 Documentation
545
546 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
547 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
548
549 =head2 New Documentation
550
551 XXX Changes which create B<new> files in F<pod/> go here.
552
553 =head3 L<XXX>
554
555 XXX Description of the purpose of the new file here
556
557 =head2 Changes to Existing Documentation
558
559 XXX Changes which significantly change existing files in F<pod/> go here.
560 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
561 section.
562
563 =head3 L<XXX>
564
565 =over 4
566
567 =item *
568
569 XXX Description of the change here
570
571 =back
572
573 =head1 Diagnostics
574
575 The following additions or changes have been made to diagnostic output,
576 including warnings and fatal error messages.  For the complete list of
577 diagnostic messages, see L<perldiag>.
578
579 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
580 include any changes in L<perldiag> that reconcile it to the C<C> code.
581
582 =head2 New Diagnostics
583
584 XXX Newly added diagnostic messages go under here, separated into New Errors
585 and New Warnings
586
587 =head3 New Errors
588
589 =over 4
590
591 =item *
592
593 XXX L<message|perldiag/"message">
594
595 =back
596
597 =head3 New Warnings
598
599 =over 4
600
601 =item *
602
603 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
604
605 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
606 produce a warning as of 5.20.  The parts after the \0 were formerly ignored by
607 system calls.
608
609 =back
610
611 =head2 Changes to Existing Diagnostics
612
613 XXX Changes (i.e. rewording) of diagnostic messages go here
614
615 =over 4
616
617 =item *
618
619 Warnings and errors from the regexp engine are now UTF-8 clean
620
621 =item *
622
623 The "Unknown switch condition" error message has some slight changes.  This
624 error triggers when there is an unknown condition in a C<(?(foo))> conditional.
625 The error message used to read:
626
627     Unknown switch condition (?(%s in regex;
628
629 But what %s could be was mostly up to luck.  For C<(?(foobar))>, you might have
630 seen "fo" or "f".  For Unicode characters, you would generally get a corrupted
631 string.  The message has been changed to read:
632
633     Unknown switch condition (?(...)) in regex;
634
635 Additionally, the C<'E<lt>-- HERE'> marker in the error will now point to the
636 correct spot in the regex.
637
638 =back
639
640 =head1 Utility Changes
641
642 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
643 Most of these are built within the directories F<utils> and F<x2p>.
644
645 [ List utility changes as a =head3 entry for each utility and =item
646 entries for each change
647 Use L<XXX> with program names to get proper documentation linking. ]
648
649 =head3 L<find2perl>
650
651 =over 4
652
653 =item *
654
655 L<find2perl> now handles C<?> wildcards correctly.  [perl #113054]
656
657 =back
658
659 =head1 Configuration and Compilation
660
661 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
662 go here.  Any other changes to the Perl build process should be listed here.
663 However, any platform-specific changes should be listed in the
664 L</Platform Support> section, instead.
665
666 [ List changes as a =item entry ].
667
668 =over 4
669
670 =item *
671
672 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
673 avoids a race condition during parallel makes, which could cause the build to
674 fail.  This is the last known parallel make problem (on *nix platforms), and
675 therefore we believe that a parallel make should now always be error free.
676
677 =for comment
678
679 Strictly only for a build where build files such as F<Makefile.SH> have not
680 been updated by C<git> in an already configured and built tree.
681
682 =back
683
684 =head1 Testing
685
686 XXX Any significant changes to the testing of a freshly built perl should be
687 listed here.  Changes which create B<new> files in F<t/> go here as do any
688 large changes to the testing harness (e.g. when parallel testing was added).
689 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
690 that they represent may be covered elsewhere.
691
692 [ List each test improvement as a =item entry ]
693
694 =over 4
695
696 =item *
697
698 The test script F<t/bigmem/regexp.t> has been added to test that regular
699 expression matches on very large strings now succeed as expected.
700
701 =item *
702
703 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
704 now tested by the new test script F<t/op/rt119311.t>.
705
706 =item *
707
708 The new test script F<t/win32/signal.t> tests that $! and $^E are now preserved
709 across signal handlers by the Win32 signal emulation code.
710
711 =item *
712
713 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
714 program on platforms where it is practical to do so.
715
716 =back
717
718 =head1 Platform Support
719
720 XXX Any changes to platform support should be listed in the sections below.
721
722 [ Within the sections, list each platform as a =item entry with specific
723 changes as paragraphs below it. ]
724
725 =head2 New Platforms
726
727 XXX List any platforms that this version of perl compiles on, that previous
728 versions did not.  These will either be enabled by new files in the F<hints/>
729 directories, or new subdirectories and F<README> files at the top level of the
730 source tree.
731
732 =over 4
733
734 =item Bitrig
735
736 Compile support has been added for Bitrig, a fork of OpenBSD.
737
738 =back
739
740 =head2 Discontinued Platforms
741
742 Configure hints and conditional code for several very old platforms has been
743 removed.  We have not received reports for these in many years, typically not
744 since Perl 5.6.0.
745
746 =over 4
747
748 =item AT&T 3b1
749
750 Configure support for the 3b1, also known as the AT&T Unix PC (and the similar
751 AT&T 7300), has been removed.
752
753 =back
754
755 =head2 Platform-Specific Notes
756
757 XXX List any changes for specific platforms.  This could include configuration
758 and compilation changes or changes in portability/compatibility.  However,
759 changes within modules for platforms should generally be listed in the
760 L</Modules and Pragmata> section.
761
762 =over 4
763
764 =item WinCE
765
766 The building of XS modules has largely been restored.  Several still cannot
767 (yet) be built but it is now possible to build Perl on WinCE with only a couple
768 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
769 incorporated soon.
770
771 =item GNU/Hurd
772
773 The BSD compatibility library C<libbsd> is no longer required for builds.
774
775 =back
776
777 =head1 Internal Changes
778
779 XXX Changes which affect the interface available to C<XS> code go here.  Other
780 significant internal changes for future core maintainers should be noted as
781 well.
782
783 [ List each change as a =item entry ]
784
785 =over 4
786
787 =item *
788
789 The internal representation has changed for the match variables $1, $2 etc.,
790 $`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}.  It uses slightly less
791 memory, avoids string comparisons and numeric conversions during lookup, and
792 uses 23 fewer lines of C.  This change should not affect any external code.
793
794 =item *
795
796 Arrays now use NULL internally to represent unused slots, instead of
797 &PL_sv_undef.  &PL_sv_undef is no longer treated as a special value, so
798 av_store(av, 0, &PL_sv_undef) will cause element 0 of that array to hold a
799 read-only undefined scalar.  C<$array[0] = anything> will croak and
800 C<\$array[0]> will compare equal to C<\undef>.
801
802 =back
803
804 =head1 Selected Bug Fixes
805
806 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
807 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
808
809 [ List each fix as a =item entry ]
810
811 =over 4
812
813 =item *
814
815 The value of $^E is now saved across signal handlers on Windows.  [perl #85104]
816
817 =item *
818
819 A lexical filehandle (as in C<open my $fh...>) is usually given a name based on
820 the current package and the name of the variable, e.g. "main::$fh".  Under
821 recursion, the filehandle was losing the "$fh" part of the name.  This has been
822 fixed.
823
824 =item *
825
826 Perl 5.19.3 accidentally extended the previous bug to all closures, even when
827 not called recursively, i.e. lexical handles in closure would always be called
828 "main::" or "MyPackage::" etc.  This has been fixed.
829
830 =item *
831
832 Uninitialized values returned by XSUBs are no longer exempt from uninitialized
833 warnings.  [perl #118693]
834
835 =item *
836
837 C<elsif ("")> no longer erroneously produces a warning about void context.
838 [perl #118753]
839
840 =item *
841
842 Passing C<undef> to a subroutine now causes @_ to contain the same read-only
843 undefined scalar that C<undef> returns.  Furthermore, C<exists $_[0]> will now
844 return true if C<undef> was the first argument.  [perl #7508, #109726]
845
846 =item *
847
848 Passing a nonexistent array element to a subroutine does not usually autovivify
849 it unless the subroutine modifies its argument.  This did not work correctly
850 with negative indices and with nonexistent elements within the array.  The
851 element would be vivified immediately.  The delayed vivification has been
852 extended to work with those.  [perl #118691]
853
854 =item *
855
856 Assigning references or globs to the scalar returned by $#foo after the @foo
857 array has been freed no longer causes assertion failures on debugging builds
858 and memory leaks on regular builds.
859
860 =item *
861
862 Perl 5.19.2 threw line numbers off after some cases of line breaks following
863 keywords, such as
864
865    1 unless
866    1;
867
868 This has been fixed.  [perl #118931]
869
870 =item *
871
872 On 64-bit platforms, large ranges like 1..1000000000000 no longer crash, but
873 eat up all your memory instead.  [perl #119161]
874
875 =item *
876
877 C<__DATA__> now puts the C<DATA> handle in the right package, even if the
878 current package has been renamed through glob assignment.
879
880 =item *
881
882 The string position set by C<pos> could shift if the string changed
883 representation internally to or from utf8.  This could happen, e.g., with
884 references to objects with string overloading.
885
886 =item *
887
888 Taking references to the return values of two C<pos> calls with the same
889 argument, and then assigning a reference to one and C<undef> to the other,
890 could result in assertion failures or memory leaks.
891
892 =item *
893
894 Elements of @- and @+ now update correctly when they refer to nonexistent
895 captures.  Previously, a referenced element (C<$ref = \$-[1]>) could refer to
896 the wrong match after subsequent matches.
897
898 =item *
899
900 When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the scope,
901 it is possible for C<DESTROY> recursively to call a subroutine or format that
902 is currently being exited.  It that case, sometimes the lexical variables
903 inside the sub would start out having values from the outer call, instead of
904 being undefined as they should.  This has been fixed.  [perl #119311]
905
906 =item *
907
908 ${^MPEN} is no longer treated as a synonym for ${^MATCH}.
909
910 =item *
911
912 Perl now tries a little harder to return the correct line number in
913 C<(caller)[2]>.  [perl #115768]
914
915 =item *
916
917 Line numbers inside multiline quote-like operators are now reported correctly.
918 [perl #3643]
919
920 =item *
921
922 C<#line> directives inside code embedded in quote-like operators are now
923 respected.
924
925 =item *
926
927 Line numbers are now correct inside the second here-doc when two here-doc
928 markers occur on the same line.
929
930 =item *
931
932 Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was
933 used on the #! line.  Now they are correct.
934
935 =item *
936
937 Perl 5.19.2 inadvertently stopped some lines of code from being available to
938 the debugger if C<=E<gt>> occurred at the beginning of a line and the previous
939 line ended with a keyword.  This is now fixed.
940
941 =item *
942
943 Perl 5.19.2 allowed the PERL5DB environment variable to contain multiple lines
944 of code, but those lines were not made available to the debugger.  Now they are
945 all stuffed into line number 0, accessible via C<$dbline[0]> in the debugger.
946
947 =item *
948
949 An optimisation in Perl 5.18 made incorrect assumptions causing a bad
950 interaction with the L<Devel::CallParser> CPAN module.  If the module was
951 loaded then lexical variables declared in separate statements following a
952 C<my(...)> list might fail to be cleared on scope exit.
953
954 =item *
955
956 C<&xsub> and C<goto &xsub> calls now allow the called subroutine to autovivify
957 elements of @_.
958
959 =item *
960
961 C<&xsub> and C<goto &xsub> no longer crash if *_ has been undefined and has no
962 ARRAY entry (i.e. @_ does not exist).
963
964 =item *
965
966 C<&xsub> and C<goto &xsub> now work with tied @_.
967
968 =item *
969
970 Overlong identifiers no longer cause a buffer overflow (and a crash).  They
971 started doing so in Perl 5.18.
972
973 =item *
974
975 The warning "Scalar value @hash{foo} better written as $hash{foo}" now produces
976 far fewer false positives.  In particular, C<@hash{+function_returning_a_list}>
977 and C<@hash{ qw "foo bar baz" }> no longer warn.  The same applies to array
978 slices.  [perl #28380, #114024]
979
980 =back
981
982 =head1 Known Problems
983
984 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
985 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
986 platform specific bugs also go here.
987
988 [ List each fix as a =item entry ]
989
990 =over 4
991
992 =item *
993
994 XXX
995
996 =back
997
998 =head1 Obituary
999
1000 XXX If any significant core contributor has died, we've added a short obituary
1001 here.
1002
1003 =head1 Acknowledgements
1004
1005 XXX Generate this with:
1006
1007   perl Porting/acknowledgements.pl v5.19.3..HEAD
1008
1009 =head1 Reporting Bugs
1010
1011 If you find what you think is a bug, you might check the articles recently
1012 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
1013 http://rt.perl.org/perlbug/ .  There may also be information at
1014 http://www.perl.org/ , the Perl Home Page.
1015
1016 If you believe you have an unreported bug, please run the L<perlbug> program
1017 included with your release.  Be sure to trim your bug down to a tiny but
1018 sufficient test case.  Your bug report, along with the output of C<perl -V>,
1019 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
1020
1021 If the bug you are reporting has security implications, which make it
1022 inappropriate to send to a publicly archived mailing list, then please send it
1023 to perl5-security-report@perl.org.  This points to a closed subscription
1024 unarchived mailing list, which includes all the core committers, who will be
1025 able to help assess the impact of issues, figure out a resolution, and help
1026 co-ordinate the release of patches to mitigate or fix the problem across all
1027 platforms on which Perl is supported.  Please only use this address for
1028 security issues in the Perl core, not for modules independently distributed on
1029 CPAN.
1030
1031 =head1 SEE ALSO
1032
1033 The F<Changes> file for an explanation of how to view exhaustive details on
1034 what changed.
1035
1036 The F<INSTALL> file for how to build Perl.
1037
1038 The F<README> file for general stuff.
1039
1040 The F<Artistic> and F<Copying> files for copyright information.
1041
1042 =cut