This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlδ
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
916c45d9
SH
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.17.4
e128ab2c 9
4eabcf70 10=head1 DESCRIPTION
6db9054f 11
916c45d9 12This document describes differences between the 5.17.3 release and the 5.17.4
e08634c5 13release.
6db9054f 14
916c45d9
SH
15If you are upgrading from an earlier release such as 5.17.2, first read
16L<perl5173delta>, which describes differences between 5.17.2 and 5.17.3.
9c5f5e7a 17
916c45d9 18=head1 Notice
afae8808 19
916c45d9 20XXX Any important notices here
afae8808 21
916c45d9 22=head1 Core Enhancements
9c5f5e7a 23
916c45d9
SH
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
9c5f5e7a 27
916c45d9 28[ List each enhancement as a =head2 entry ]
9c5f5e7a 29
83d881f0
KW
30=head2 Latest Unicode 6.2 beta is included
31
32This is supposed to be the final data for 6.2, unless glitches are
33found. The earlier experimental 6.2 beta data has been reverted, and
34this used instead. Not all the changes that were proposed for 6.2 and
35that were in the earlier beta versions are actually going into 6.2. In
36particular, there are no changes from 6.1 in the General_Category of any
37characters. 6.2 does revise the C<\X> handling for the REGIONAL
38INDICATOR characters that were added in Unicode 6.0. Perl now for the
39first time fully handles this revision.
40
5faa50e9
FR
41=head2 New DTrace probes
42
43The following new DTrace probes have been added:
44
45=over 4
46
47=item C<op-entry>
48
49=item C<loading-file>
50
51=item C<loaded-file>
52
53=back
54
4db91b87
FC
55=head2 Looser here-doc parsing
56
57Here-doc terminators no longer require a terminating newline character when
58they occur at the end of a file. This was already the case at the end of a
59string eval [perl #65838].
60
61=head2 New mechanism for experimental features
62
63Newly-added experimental features will now require this incantation:
64
65 no warnings "experimental:feature_name";
66 use feature "feature_name"; # would warn without the prev line
67
68There is a new warnings category, called "experimental", containing
69warnings that the L<feature> pragma emits when enabling experimental
70features.
71
72Newly-added experimental features will also be given special warning IDs,
73which consist of "experimental:" followed by the name of the feature. (The
74plan is to extend this mechanism eventually to all warnings, to allow them
75to be enabled or disabled individually, and not just by category.)
76
77By saying
78
79 no warnings "experimental:feature_name";
80
81you are taking responsibility for any breakage that future changes to, or
82removal of, the feature may cause.
83
84=head2 Lexical subroutines
85
86This new feature is still considered experimental. To enable it, use the
87mechanism described above:
88
89 use 5.018;
90 no warnings "experimental:lexical_subs";
91 use feature "lexical_subs";
92
93You can now declare subroutines with C<state sub foo>, C<my sub foo>, and
94C<our sub foo>. (C<state sub> requires that the "state" feature be
95enabled, unless you write it as C<CORE::state sub foo>.)
96
97C<state sub> creates a subroutine visible within the lexical scope in which
98it is declared. The subroutine is shared between calls to the outer sub.
99
100C<my sub> declares a lexical subroutine that is created each time the
101enclosing block is entered. C<state sub> is generally slightly faster than
102C<my sub>.
103
104C<our sub> declares a lexical alias to the package subroutine of the same
105name.
106
107See L<perlsub/Lexical Subroutines>.
108
916c45d9 109=head1 Security
9c5f5e7a 110
916c45d9
SH
111XXX Any security-related notices go here. In particular, any security
112vulnerabilities closed should be noted here rather than in the
113L</Selected Bug Fixes> section.
9c5f5e7a 114
916c45d9 115[ List each security issue as a =head2 entry ]
9c5f5e7a 116
916c45d9 117=head1 Incompatible Changes
9c5f5e7a 118
916c45d9 119XXX For a release on a stable branch, this section aspires to be:
9c5f5e7a 120
916c45d9
SH
121 There are no changes intentionally incompatible with 5.XXX.XXX
122 If any exist, they are bugs, and we request that you submit a
123 report. See L</Reporting Bugs> below.
9c5f5e7a 124
916c45d9 125[ List each incompatible change as a =head2 entry ]
9c5f5e7a 126
4db91b87
FC
127=head2 Here-doc parsing
128
129The body of a here-document inside a quote-like operator now always begins
130on the line after the "<<foo" marker. Previously, it was documented to
131begin on the line following the containing quote-like operator, but that
132was only sometimes the case [perl #114040].
133
134=head2 Stricter parsing of substitution replacement
135
136It is no longer possible to abuse the way the parser parses C<s///e> like
137this:
138
139 %_=(_,"Just another ");
140 $_="Perl hacker,\n";
141 s//_}->{_/e;print
142
143=head2 Interaction of lexical and default warnings
144
145Turning on any lexical warnings used first to disable all default warnings
146if lexical warnings were not already enabled:
147
148 $*; # deprecation warning
149 use warnings "void";
150 $#; # void warning; no deprecation warning
151
152Now, the debugging, deprecated, glob, inplace and malloc warnings
153categories are left on when turning on lexical warnings (unless they are
154turned off by C<no warnings>, of course).
155
156This may cause deprecation warnings to occur in code that used to be free
157of warnings.
158
159Those are the only categories consisting only of default warnings. Default
160warnings in other categories are still disabled by C<use warnings
161"category">, as we do not yet have the infrastructure for controlling
162individual warnings.
163
164=head2 C<state sub> and C<our sub>
165
166Due to an accident of history, C<state sub> and C<our sub> were equivalent
167to a plain C<sub>, so one could even create an anonymous sub with
168C<our sub { ... }>. These are now disallowed outside of the "lexical_subs"
169feature. Under the "lexical_subs" feature they have new meanings described
170in L<perlsub/Lexical Subroutines>.
171
916c45d9 172=head1 Deprecations
9c5f5e7a 173
916c45d9
SH
174XXX Any deprecated features, syntax, modules etc. should be listed here. In
175particular, deprecated modules should be listed here even if they are listed as
176an updated module in the L</Modules and Pragmata> section.
9c5f5e7a 177
916c45d9 178[ List each deprecation as a =head2 entry ]
9c5f5e7a 179
916c45d9 180=head1 Performance Enhancements
9c5f5e7a 181
916c45d9
SH
182XXX Changes which enhance performance without changing behaviour go here.
183There may well be none in a stable release.
ed2b0264 184
916c45d9 185[ List each enhancement as a =item entry ]
ed2b0264 186
916c45d9 187=over 4
338a1057
SH
188
189=item *
190
a3d51778
KW
191Speed up in regular expression matching against Unicode properties. The
192largest gain is for C<\X>, the Unicode "extended grapheme cluster". The
193gain for it is about 35% - 40%. Bracketed character classes, e.g.,
194C<[0-9\x{100}]> containing code points above 255 are also now faster.
0ace302a 195
5faa50e9
FR
196=item *
197
198On platforms supporting it, several former macros are now implemented as static
199inline functions. This should speed things up slightly on non-GCC platforms.
200
201=item *
202
203Apply the optimisation of hashes in boolean context, such as in C<if> or C<and>,
204to constructs in non-void context.
205
206=item *
207
208Extend the optimisation of hashes in boolean context to C<scalar(%hash)>,
4db91b87 209C<%hash ? ... : ...>, and C<sub { %hash || ... }>.
5faa50e9
FR
210
211=item *
212
213When making a copy of the string being matched against (so that $1, $& et al
214continue to show the correct value even if the original string is subsequently
215modified), only copy that substring of the original string needed for the
216capture variables, rather than copying the whole string.
217
218This is a big win for code like
219
220 $&;
221 $_ = 'x' x 1_000_000;
222 1 while /(.)/;
223
224Also, when pessimizing if the code contains C<$`>, C<$&> or C<$'>, record the
225presence of each variable separately, so that the determination of the substring
226range is based on each variable separately. So performance-wise,
227
228 $&; /x/
229
230is now roughly equivalent to
231
232 /(x)/
233
234whereas previously it was like
235
236 /^(.*)(x)(.*)$/
237
238and
239
240 $&; $'; /x/
241
242is now roughly equivalent to
243
244 /(x)(.*)$/
245
246etc.
247
916c45d9 248=back
0ace302a 249
916c45d9 250=head1 Modules and Pragmata
9c5f5e7a 251
916c45d9
SH
252XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
253go here. If Module::CoreList is updated, generate an initial draft of the
254following sections using F<Porting/corelist-perldelta.pl>, which prints stub
255entries to STDOUT. Results can be pasted in place of the '=head2' entries
256below. A paragraph summary for important changes should then be added by hand.
257In an ideal world, dual-life modules would have a F<Changes> file that could be
258cribbed.
9c5f5e7a 259
916c45d9 260[ Within each section, list entries as a =item entry ]
d4ada64a 261
916c45d9 262=head2 New Modules and Pragmata
d4ada64a 263
916c45d9 264=over 4
63870e6d 265
930a023a
S
266=item *
267
916c45d9 268XXX
33f804f6 269
916c45d9 270=back
4cc02608 271
916c45d9 272=head2 Updated Modules and Pragmata
4cc02608 273
916c45d9 274=over 4
e7b92d54
SH
275
276=item *
277
5faa50e9
FR
278L<Archive::Tar> has been upgraded from version 1.88 to 1.90. This adds
279documentation fixes.
280
281=item *
282
283L<B> has been upgraded from version 1.37 to 1.38. This makes the module work
284with the new pad API.
285
286=item *
287
288L<B::Concise> has been upgraded from version 0.92 to 0.93. This adds support
289for the new C<OpMAYBE_TRUEBOOL> and C<OPpTRUEBOOL> flags.
290
291=item *
292
293L<B::Deparse> has been upgraded from version 1.16 to 1.17. This suppresses
294trailing semicolons in formats.
295
296=item *
297
2a527d37
SH
298L<DB_File> has been upgraded from version 1.826 to 1.827. The main Perl module
299no longer uses the C<"@_"> construct.
300
301=item *
302
5faa50e9
FR
303L<Devel::Peek> has been upgraded from version 1.09 to 1.10. This fixes
304compilation with C++ compilers and makes the module work with the new pad API.
305
306=item *
307
308L<DynaLoader> has been upgraded from version 1.15 to 1.16. This fixes warnings
309about using C<CODE> sections without an C<OUTPUT> section.
310
311=item *
312
313L<ExtUtils::ParseXS> has been upgraded from version 3.17 to 3.18. This avoids a
4db91b87 314bogus warning for initialised XSUB non-parameters [perl #112776].
5faa50e9
FR
315
316=item *
317
846de5c9
SH
318L<File::Copy> has been upgraded from version 2.23 to 2.24. C<copy()> no longer
319zeros files when copying into the same directory, and also now fails (as it has
320long been documented to do) when attempting to copy a file over itself.
321
322=item *
323
5faa50e9
FR
324L<File::Find> has been upgraded from version 1.21 to 1.22. This fixes
325inconsistent unixy path handling on VMS.
326
327=item *
328
5f877a7f
SH
329L<IPC::Open3> has been upgraded from version 1.12 to 1.13. The C<open3()>
330function no longer uses C<POSIX::close()> to close file descriptors since that
331breaks the ref-counting of file descriptors done by PerlIO in cases where the
332file descriptors are shared by PerlIO streams, leading to attempts to close the
333file descriptors a second time when any such PerlIO streams are closed later on.
334
335=item *
336
2a527d37
SH
337L<Locale::Codes> has been upgraded from version 3.22 to 3.23. It includes some
338new codes.
339
340=item *
341
5faa50e9
FR
342L<Module::CoreList> has been upgraded from version 2.71 to 2.73. This restores
343compatibility with older versions of perl and cleans up the corelist data for
344various modules.
345
346=item *
347
348L<Opcode> has been upgraded from version 1.23 to 1.24 to reflect the removal of
4db91b87
FC
349the boolkeys opcode and the addition of the clonecv, introcv and padcv
350opcodes.
5faa50e9
FR
351
352=item *
353
aff163d9
SH
354L<Socket> has been upgraded from version 2.004 to 2.006.
355C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP
356address in scalar context, and C<inet_ntop()> now guards against incorrect
357length scalars being passed in.
9c5f5e7a 358
5faa50e9
FR
359=item *
360
eebee32b
FR
361L<Storable> has been upgraded from version 2.38 to 2.39. This contains Various
362bugfixes, including compatibility fixes for older versions of Perl and vstring
363handling.
364
365=item *
366
5faa50e9
FR
367L<threads::shared> has been upgraded from version 1.40 to 1.41. This adds the
368option to warn about or ignore attempts to clone structures that can't be
369cloned, as opposed to just unconditionally dying in that case.
370
371=item *
372
373L<XSLoader> has been upgraded from version 0.15 to 0.16.
374
916c45d9 375=back
9c5f5e7a 376
916c45d9 377=head2 Removed Modules and Pragmata
9c5f5e7a 378
916c45d9 379=over 4
44db8156
SH
380
381=item *
382
916c45d9 383XXX
4f85bc45 384
4eabcf70 385=back
72267260 386
4eabcf70 387=head1 Documentation
72267260 388
916c45d9
SH
389XXX Changes to files in F<pod/> go here. Consider grouping entries by
390file and be sure to link to the appropriate page, e.g. L<perlfunc>.
95c6c5c5 391
916c45d9 392=head2 New Documentation
95c6c5c5 393
916c45d9 394XXX Changes which create B<new> files in F<pod/> go here.
95c6c5c5 395
916c45d9 396=head3 L<XXX>
95c6c5c5 397
916c45d9 398XXX Description of the purpose of the new file here
95c6c5c5 399
916c45d9
SH
400=head2 Changes to Existing Documentation
401
402XXX Changes which significantly change existing files in F<pod/> go here.
403However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
404section.
95c6c5c5 405
916c45d9 406=head3 L<XXX>
e114da46
FC
407
408=over 4
409
410=item *
411
916c45d9 412XXX Description of the change here
e114da46
FC
413
414=back
415
4eabcf70 416=head1 Diagnostics
05c8f9ed 417
4eabcf70
TC
418The following additions or changes have been made to diagnostic output,
419including warnings and fatal error messages. For the complete list of
420diagnostic messages, see L<perldiag>.
ceb0881c 421
916c45d9
SH
422XXX New or changed warnings emitted by the core's C<C> code go here. Also
423include any changes in L<perldiag> that reconcile it to the C<C> code.
424
4eabcf70 425=head2 New Diagnostics
42d72fc5 426
916c45d9
SH
427XXX Newly added diagnostic messages go under here, separated into New Errors
428and New Warnings
429
4eabcf70 430=head3 New Errors
8e125188 431
e96e0834 432=over 4
e128ab2c 433
e2f0c3bb
FC
434=item *
435
916c45d9 436XXX L<message|perldiag/"message">
3c774534 437
4eabcf70 438=back
e2f0c3bb 439
4eabcf70 440=head3 New Warnings
90519d0f 441
4eabcf70 442=over 4
90519d0f
FC
443
444=item *
445
4db91b87
FC
446L<Experimental "%s" subs not enabled|perldiag/"Experimental "%s" subs not enabled">
447
448(F) To use lexical subs, you must first enable them:
449
450 no warnings 'experimental:lexical_subs';
451 use feature 'lexical_subs';
452 my sub foo { ... }
453
454=item *
455
456L<Subroutine "&%s" is not available|perldiag/"Subroutine "&%s" is not available">
457
458(W closure) During compilation, an inner named subroutine or eval is
459attempting to capture an outer lexical subroutine that is not currently
460available. This can happen for one of two reasons. First, the lexical
461subroutine may be declared in an outer anonymous subroutine that has not
462yet been created. (Remember that named subs are created at compile time,
463while anonymous subs are created at run-time.) For example,
464
465 sub { my sub a {...} sub f { \&a } }
466
467At the time that f is created, it can't capture the current the "a" sub,
468since the anonymous subroutine hasn't been created yet. Conversely, the
469following won't give a warning since the anonymous subroutine has by now
470been created and is live:
471
472 sub { my sub a {...} eval 'sub f { \&a }' }->();
473
474The second situation is caused by an eval accessing a variable that has
475gone out of scope, for example,
476
477 sub f {
478 my sub a {...}
479 sub { eval '\&a' }
480 }
481 f()->();
482
483Here, when the '\&a' in the eval is being compiled, f() is not currently
484being executed, so its &a is not available for capture.
485
486=item *
487
488L<"%s" subroutine &%s masks earlier declaration in same %s|perldiag/"%s" subroutine &%s masks earlier declaration in same %s>
489
490(W misc) A "my" or "state" subroutine has been redeclared in the
491current scope or statement, effectively eliminating all access to
492the previous instance. This is almost always a typographical error.
493Note that the earlier subroutine will still exist until the end of
494the scope or until all closure references to it are destroyed.
495
496=item *
497
498L<The %s feature is experimental|perldiag/"The %s feature is experimental">
499
500(S experimental) This warning is emitted if you enable an experimental
501feature via C<use feature>. Simply suppress the warning if you want
502to use the feature, but know that in doing so you are taking the risk
503of using an experimental feature which may change or be removed in a
504future Perl version:
505
506 no warnings "experimental:lexical_subs";
507 use feature "lexical_subs";
90519d0f 508
61174fb5 509=back
422287bf 510
916c45d9 511=head2 Changes to Existing Diagnostics
c95d4104 512
916c45d9 513XXX Changes (i.e. rewording) of diagnostic messages go here
7ab2ea42 514
4eabcf70 515=over 4
7ab2ea42 516
916c45d9 517=item *
7ab2ea42 518
4db91b87
FC
519L<vector argument not supported with alpha versions|perldiag/vector argument not supported with alpha versions>
520
521This warning was not suppressable, even with C<no warnings>. Now it is
522suppressible, and has been moved from the "internal" category to the
523"printf" category.
90519d0f 524
4eabcf70 525=back
90519d0f 526
916c45d9 527=head1 Utility Changes
90519d0f 528
916c45d9
SH
529XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
530Most of these are built within the directories F<utils> and F<x2p>.
d91f1bc9 531
916c45d9
SH
532[ List utility changes as a =head3 entry for each utility and =item
533entries for each change
534Use L<XXX> with program names to get proper documentation linking. ]
d91f1bc9 535
916c45d9 536=head3 L<XXX>
90519d0f 537
4eabcf70 538=over 4
90519d0f
FC
539
540=item *
541
916c45d9 542XXX
e9f497c4 543
916c45d9 544=back
e9f497c4 545
916c45d9 546=head1 Configuration and Compilation
d7f7c515 547
916c45d9
SH
548XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
549go here. Any other changes to the Perl build process should be listed here.
550However, any platform-specific changes should be listed in the
551L</Platform Support> section, instead.
d7f7c515 552
916c45d9 553[ List changes as a =item entry ].
afc04f16 554
916c45d9 555=over 4
afc04f16 556
b4cf37f5
FC
557=item *
558
5faa50e9
FR
559F<Configure> will now correctly detect C<isblank()> when compiling with a C++
560compiler.
b4cf37f5 561
916c45d9 562=back
b4cf37f5 563
916c45d9 564=head1 Testing
b4cf37f5 565
916c45d9
SH
566XXX Any significant changes to the testing of a freshly built perl should be
567listed here. Changes which create B<new> files in F<t/> go here as do any
568large changes to the testing harness (e.g. when parallel testing was added).
569Changes to existing files in F<t/> aren't worth summarizing, although the bugs
570that they represent may be covered elsewhere.
ea9f761d 571
916c45d9 572[ List each test improvement as a =item entry ]
70306497 573
916c45d9 574=over 4
70306497 575
63164165
FC
576=item *
577
916c45d9 578XXX
63164165 579
916c45d9 580=back
9da700a7 581
916c45d9 582=head1 Platform Support
9da700a7 583
916c45d9 584XXX Any changes to platform support should be listed in the sections below.
9702222b 585
916c45d9
SH
586[ Within the sections, list each platform as a =item entry with specific
587changes as paragraphs below it. ]
e4963eb6 588
916c45d9 589=head2 New Platforms
e4963eb6 590
916c45d9
SH
591XXX List any platforms that this version of perl compiles on, that previous
592versions did not. These will either be enabled by new files in the F<hints/>
593directories, or new subdirectories and F<README> files at the top level of the
594source tree.
3771623e 595
916c45d9 596=over 4
3771623e 597
916c45d9 598=item XXX-some-platform
9702222b 599
916c45d9 600XXX
3e0c76ce 601
916c45d9 602=back
610c7be4 603
916c45d9 604=head2 Discontinued Platforms
610c7be4 605
916c45d9 606=over 4
c58f5a32 607
043fec90 608=item VM/ESA
c58f5a32 609
043fec90
NC
610Support for VM/ESA has been removed. The port was tested on 2.3.0, which
611IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and
612was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled
613for end of service on 2015/04/30.
a21a3918 614
916c45d9 615=back
a21a3918 616
916c45d9 617=head2 Platform-Specific Notes
a21a3918 618
916c45d9
SH
619XXX List any changes for specific platforms. This could include configuration
620and compilation changes or changes in portability/compatibility. However,
621changes within modules for platforms should generally be listed in the
622L</Modules and Pragmata> section.
a21a3918 623
916c45d9 624=over 4
60ca243a 625
5faa50e9 626=item Win32
60ca243a 627
3eebda9a
SH
628Fixed a problem where perl could crash while cleaning up threads (including the
629main thread) in threaded debugging builds on Win32 and possibly other platforms
630[perl #114496].
5faa50e9
FR
631
632=item Solaris
633
634In Configure, avoid running sed commands with flags not supported on Solaris.
635
636=item Darwin
637
638Stop hardcoding an alignment on 8 byte boundaries to fix builds using
639-Dusemorebits.
3771623e 640
eebee32b
FR
641=item VMS
642
643Fix linking on builds configured with -Dusemymalloc=y.
644
916c45d9 645=back
d91f1bc9 646
916c45d9 647=head1 Internal Changes
d91f1bc9 648
916c45d9
SH
649XXX Changes which affect the interface available to C<XS> code go here. Other
650significant internal changes for future core maintainers should be noted as
651well.
3771623e 652
916c45d9 653[ List each change as a =item entry ]
b4d67305 654
916c45d9 655=over 4
b4d67305 656
3c774534
SH
657=item *
658
5faa50e9
FR
659The APIs for accessing lexical pads have changed considerably.
660
661C<PADLIST>s are now longer C<AV>s, but their own type instead. C<PADLIST>s now
662contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s, rather than C<AV>s for the
663pad and the list of pad names. C<PAD>s, C<PADNAMELIST>s, and C<PADNAME>s are to
664be accessed as such though the newly added pad API instead of the plain C<AV>
665and C<SV> APIs. See L<perlapi> for details.
d91f1bc9 666
050862bb
DM
667=item *
668
669In the regex API, the numbered capture callbacks are passed an index
670indicating what match variable is being accessed. There are special
671index values for the C<$`, $&, $&> variables. Previously the same three
672values were used to retrieve C<${^PREMATCH}, ${^MATCH}, ${^POSTMATCH}>
673too, but these have now been assigned three separate values. See
674L<perlreapi/Numbered capture callbacks>.
675
676=item *
677
678C<PL_sawampersand> was previously a boolean indicating that any of
679C<$`, $&, $&> had been seen; it now contains three one-bit flags
680indicating the presence of each of the variables individually.
681
916c45d9 682=back
d91f1bc9 683
916c45d9 684=head1 Selected Bug Fixes
d91f1bc9 685
916c45d9
SH
686XXX Important bug fixes in the core language are summarized here. Bug fixes in
687files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
d91f1bc9 688
916c45d9 689=over 4
d91f1bc9
SH
690
691=item *
692
4db91b87
FC
693The error "Can't localize through a reference" had disappeared in 5.16.0
694when C<local %$ref> appeared on the last line of an lvalue subroutine.
695This error disappeared for C<\local %$ref> in perl 5.8.1. It has now
696been restored.
697
698=item *
699
700The parsing of here-docs has been improved significantly, fixing several
701parsing bugs and crashes and one memory leak, and correcting wrong
702subsequent line numbers under certain conditions.
703
704=item *
705
706Inside an eval, the error message for an unterminated here-doc no longer
707has a newline in the middle of it [perl #70836].
708
709=item *
710
711A substitution inside a substitution pattern (C<s/${s|||}//>) no longer
712confuses the parser.
713
714=item *
715
716It may be an odd place to allow comments, but C<s//"" # hello/e> has
717always worked, I<unless> there happens to be a null character before the
718first #. Now it works even in the presence of nulls.
719
720=item *
721
722An invalid range in C<tr///> or C<y///> no longer results in a memory leak.
723
724=item *
725
726String eval no longer treats a semicolon-delimited quote-like operator at
727the very end (C<eval 'q;;'>) as a syntax error.
728
729=item *
730
731C<< warn {$_ => 1} + 1 >> is no longer a syntax error. The parser used to
732get confused with certain list operators followed by an anonymous hash and
733then an infix operator that shares its form with a unary operator.
5faa50e9
FR
734
735=item *
736
4db91b87
FC
737C<(caller $n)[6]> (which gives the text of the eval) used to return the
738actual parser buffer. Modifying it could result in crashes. Now it always
739returns a copy. The string returned no longer has "\n;" tacked on to the
740end. The returned text also includes here-doc bodies, which used to be
741omitted.
5faa50e9
FR
742
743=item *
744
745Reset the utf8 position cache when accessing magical variables to avoid the
4db91b87
FC
746string buffer and the utf8 position cache to get out of sync
747[perl #114410].
5faa50e9
FR
748
749=item *
750
751Various cases of get magic being called twice for magical utf8 strings have been
752fixed.
753
754=item *
755
756This code (when not in the presence of C<$&> etc)
757
758 $_ = 'x' x 1_000_000;
759 1 while /(.)/;
760
761used to skip the buffer copy for performance reasons, but suffered from C<$1>
762etc changing if the original string changed. That's now been fixed.
763
764=item *
765
766Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO
767might attempt to allocate more memory.
d91f1bc9 768
31c15ce5
KW
769=item *
770
771In a regular expression, if something is quantified with C<{n,m}>
772where C<S<n E<gt> m>>, it can't possibly match. Previously this was a fatal error,
773but now is merely a warning (and that something won't match). [perl #82954].
774
4db91b87
FC
775=item *
776
777It used to be possible for formats defined in subroutines that have
778subquently been undefined and redefined to close over variables in the
779wrong pad (the newly-defined enclosing sub), resulting in crashes or
780"Bizarre copy" errors.
781
782=item *
783
784Redefinition of XSUBs at run time could produce warnings with the wrong
785line number.
786
787=item *
788
789The %vd sprintf format does not support version objects for alpha versions.
790It used to output the format itself (%vd) when passed an alpha version, and
791also emit an "Invalid conversion in printf" warning. It no longer does,
792but produces the empty string in the output. It also no longer leaks
793memory in this case.
794
795=item *
796
797A bug fix in an earlier 5.17.x release caused C<no a a 3> (a syntax error)
798to result in a bad read or assertion failure, because an op was being freed
799twice.
800
801=item *
802
803C<< $obj->SUPER::method >> calls in the main package could fail if the
804SUPER package had already been accessed by other means.
805
806=item *
807
808Stash aliasing (C<*foo:: = *bar::>) no longer causes SUPER calls to ignore
809changes to methods or @ISA or use the wrong package.
810
916c45d9 811=back
d91f1bc9 812
916c45d9 813=head1 Known Problems
d91f1bc9 814
916c45d9
SH
815XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
816tests that had to be C<TODO>ed for the release would be noted here. Unfixed
817platform specific bugs also go here.
d91f1bc9 818
916c45d9 819[ List each fix as a =item entry ]
216d99a6 820
916c45d9 821=over 4
216d99a6
FC
822
823=item *
824
5faa50e9
FR
825Changes in the lexical pad API break several CPAN modules.
826
827To avoid having to patch those modules again later if we change pads from AVs
828into their own types, APIs for accessing the contents of pads have been added.
216d99a6 829
4eabcf70 830=back
90519d0f 831
916c45d9 832=head1 Obituary
05bee12a 833
916c45d9
SH
834XXX If any significant core contributor has died, we've added a short obituary
835here.
05bee12a 836
916c45d9 837=head1 Acknowledgements
05bee12a 838
916c45d9 839XXX Generate this with:
05bee12a 840
916c45d9 841 perl Porting/acknowledgements.pl v5.17.3..HEAD
29cf780c 842
44691e6f
AB
843=head1 Reporting Bugs
844
e08634c5
SH
845If you find what you think is a bug, you might check the articles recently
846posted to the comp.lang.perl.misc newsgroup and the perl bug database at
847http://rt.perl.org/perlbug/ . There may also be information at
848http://www.perl.org/ , the Perl Home Page.
44691e6f 849
e08634c5
SH
850If you believe you have an unreported bug, please run the L<perlbug> program
851included with your release. Be sure to trim your bug down to a tiny but
852sufficient test case. Your bug report, along with the output of C<perl -V>,
853will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
854
855If the bug you are reporting has security implications, which make it
e08634c5
SH
856inappropriate to send to a publicly archived mailing list, then please send it
857to perl5-security-report@perl.org. This points to a closed subscription
858unarchived mailing list, which includes all the core committers, who will be
859able to help assess the impact of issues, figure out a resolution, and help
f9001595 860co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
861platforms on which Perl is supported. Please only use this address for
862security issues in the Perl core, not for modules independently distributed on
863CPAN.
44691e6f
AB
864
865=head1 SEE ALSO
866
e08634c5
SH
867The F<Changes> file for an explanation of how to view exhaustive details on
868what changed.
44691e6f
AB
869
870The F<INSTALL> file for how to build Perl.
871
872The F<README> file for general stuff.
873
874The F<Artistic> and F<Copying> files for copyright information.
875
876=cut