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