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