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