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