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