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