This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Trim second block (nolinenumbers) to avert crashes on Win32.
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3670aff5
FC
3=for comment
4Stuff that needs to be done still:
1be66aa5 570502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
a3fb66a4
SH
688b3a46 PATCH (partial) [perl #107816] Performance regression since 0abd0d78
7eb40d2c [perl #2726] Prototype is not applied until BLOCK is defined
a3fb66a4
SH
88fe3c67 fix 114884 positive GPOS lookbehind regex substitution failure
9d8fe30a Avoid read-after-free in S_scan_heredoc() if the terminator line has no "\n".
3670aff5 10
44691e6f
AB
11=head1 NAME
12
12dcbffb
AP
13[ this is a template for a new perldelta file. Any text flagged as XXX needs
14to be processed before release. ]
15
16perldelta - what is new for perl v5.19.3
e128ab2c 17
4eabcf70 18=head1 DESCRIPTION
6db9054f 19
12dcbffb 20This document describes differences between the 5.19.2 release and the 5.19.3
e08634c5 21release.
6db9054f 22
12dcbffb
AP
23If you are upgrading from an earlier release such as 5.19.1, first read
24L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
42bff0d9 25
12dcbffb 26=head1 Notice
42bff0d9 27
12dcbffb 28XXX Any important notices here
42bff0d9 29
12dcbffb 30=head1 Core Enhancements
c0ca71c9 31
12dcbffb
AP
32XXX New core language features go here. Summarize user-visible core language
33enhancements. Particularly prominent performance optimisations could go
34here, but most should go in the L</Performance Enhancements> section.
c0ca71c9 35
12dcbffb 36[ List each enhancement as a =head2 entry ]
c0ca71c9 37
5bb43e77
TC
38=head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
39
aff048e9
SH
40Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or B<-p>
41was a no-op, with this change, if you supply B<-F> then both B<-a> and B<-n>
42are implied and if you supply B<-a> then B<-n> is implied.
5bb43e77
TC
43
44You can still use B<-p> for its extra behaviour. [perl #116190]
45
12dcbffb 46=head1 Security
c0ca71c9 47
12dcbffb
AP
48XXX Any security-related notices go here. In particular, any security
49vulnerabilities closed should be noted here rather than in the
50L</Selected Bug Fixes> section.
c0ca71c9 51
12dcbffb 52[ List each security issue as a =head2 entry ]
c0ca71c9 53
12dcbffb 54=head1 Incompatible Changes
c0ca71c9 55
12dcbffb 56XXX For a release on a stable branch, this section aspires to be:
c0ca71c9 57
12dcbffb
AP
58 There are no changes intentionally incompatible with 5.XXX.XXX
59 If any exist, they are bugs, and we request that you submit a
60 report. See L</Reporting Bugs> below.
c0ca71c9 61
12dcbffb 62[ List each incompatible change as a =head2 entry ]
c0ca71c9 63
12dcbffb 64=head1 Deprecations
c0ca71c9 65
12dcbffb 66XXX Any deprecated features, syntax, modules etc. should be listed here.
c0ca71c9 67
12dcbffb 68=head2 Module removals
c0ca71c9 69
12dcbffb 70XXX Remove this section if inapplicable.
c0ca71c9 71
12dcbffb
AP
72The following modules will be removed from the core distribution in a
73future release, and will at that time need to be installed from CPAN.
74Distributions on CPAN which require these modules will need to list them as
75prerequisites.
c0ca71c9 76
12dcbffb
AP
77The core versions of these modules will now issue C<"deprecated">-category
78warnings to alert you to this fact. To silence these deprecation warnings,
79install the modules in question from CPAN.
c0ca71c9 80
12dcbffb
AP
81Note that these are (with rare exceptions) fine modules that you are encouraged
82to continue to use. Their disinclusion from core primarily hinges on their
83necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
84not usually on concerns over their design.
c0ca71c9 85
12dcbffb 86=over
c0ca71c9 87
12dcbffb
AP
88XXX Note that deprecated modules should be listed here even if they are listed
89as an updated module in the L</Modules and Pragmata> section.
c0ca71c9 90
12dcbffb 91=back
c0ca71c9 92
12dcbffb 93[ List each other deprecation as a =head2 entry ]
c0ca71c9 94
12dcbffb 95=head1 Performance Enhancements
c0ca71c9 96
12dcbffb
AP
97XXX Changes which enhance performance without changing behaviour go here.
98There may well be none in a stable release.
c0ca71c9 99
12dcbffb 100[ List each enhancement as a =item entry ]
c0ca71c9 101
12dcbffb 102=over 4
c0ca71c9
AP
103
104=item *
105
12dcbffb 106XXX
c0ca71c9 107
12dcbffb 108=back
70ba8092 109
12dcbffb 110=head1 Modules and Pragmata
42bff0d9 111
12dcbffb
AP
112XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
113go here. If Module::CoreList is updated, generate an initial draft of the
114following sections using F<Porting/corelist-perldelta.pl>, which prints stub
115entries to STDOUT. Results can be pasted in place of the '=head2' entries
116below. A paragraph summary for important changes should then be added by hand.
117In an ideal world, dual-life modules would have a F<Changes> file that could be
118cribbed.
6e4979f3 119
12dcbffb 120[ Within each section, list entries as a =item entry ]
6e4979f3 121
12dcbffb 122=head2 New Modules and Pragmata
6e4979f3 123
12dcbffb 124=over 4
42bff0d9 125
c0ca71c9 126=item *
42bff0d9 127
12dcbffb 128XXX
42bff0d9 129
12dcbffb 130=back
42bff0d9 131
12dcbffb 132=head2 Updated Modules and Pragmata
42bff0d9 133
12dcbffb 134=over 4
42bff0d9 135
c0ca71c9 136=item *
42bff0d9 137
323602af
TC
138L<B> has been upgraded from version 1.44 to 1.45.
139
aff048e9 140Calling the C<GV> method on C<B::CV> objects created from a lexical sub would
01b128ca
SH
141return nonsense, possibly crashing perl. C<GV> now returns C<undef> for
142lexical subs. [perl #118525]
323602af
TC
143
144Added the C<NAME_HEK> method to return the name of a lexical sub.
145
146=item *
147
c38620d7 148L<bignum> has been upgraded from version 0.33 to 0.36.
9a743a6d 149
aff048e9
SH
150L<bigrat> wasn't correctly updating an internal variable when C<use>d with a
151C<lib> option.
9a743a6d 152
1afc4c90
FC
153=item *
154
1448059e
TC
155L<Carp> has been upgraded from 1.30 to 1.31
156
01b128ca 157L<Carp> now handles objects with string overloads. It also allows objects to
aff048e9
SH
158specify how they appear in the stack dump with a C<CARP_TRACE> method, and also
159allows the user to specify their own formatter for objects without
1448059e
TC
160C<CARP_TRACE> as well as other references. [perl #92446]
161
9a743a6d
SH
162=item *
163
ef379d05
SH
164L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
165
c38620d7
SH
166No changes have been made other than the version bump to keep in sync with
167other related modules.
a3fb66a4 168
ef379d05
SH
169=item *
170
171L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
172
c38620d7 173A minor typo has been fixed in the documentation.
a3fb66a4 174
ef379d05
SH
175=item *
176
89e01640
SH
177L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
178
c38620d7 179The list of build options has been updated.
a3fb66a4
SH
180
181=item *
182
183L<constant> has been upgraded from version 1.27 to 1.28.
184
185Note that list constants will be inlined and may be read-only in future Perl
186versions.
187
188=item *
189
190L<CPAN::Meta> has been upgraded from version 2.131560 to 2.132140.
191
192Some documentation typos have been fixed.
193
89e01640
SH
194=item *
195
cffd634c
TC
196L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
197
aff048e9
SH
198The compatbility of the XS implementation with the pure perl version under
199C<Useqq> has been improved. [perl #118933]
42bff0d9 200
2cf99697
TC
201=item *
202
a3fb66a4
SH
203L<DB> has been upgraded from 1.41 to 1.42.
204
205The Perl debugger no longer crashes with C<PERLDB_OPTS="noTTY frame=2">.
206
207=item *
208
8b0411a9
TC
209L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
210
c3c36230
SH
211C<SvREFCNT_inc> and C<SvREFCNT_dec> have been removed and C<SvREFCNT> will now
212work on non-scalars. [perl #117793]
8b0411a9 213
f6e0e5cc 214C<Dump> now checks its arguments at compile time. Both arguments are now
aff048e9
SH
215evaluated in scalar context, with exceptions for @arrays and %hashes, allowing
216aggregates to be dumped directly. The first argument is evaluated in rvalue
217scalar context, allowing rvalue C<pos> and C<substr> to be dumped.
f6e0e5cc 218
1547e7b4
FC
219C<fill_mstats> no longer crashes if its argument is not already a string.
220[perl #92260]
221
8b0411a9
TC
222=item *
223
a3fb66a4
SH
224L<diagnostics> has been upgraded from version 1.31 to 1.32.
225
226Wrapped links are no longer truncated.
227
228=item *
229
230L<DynaLoader> has been upgraded from version 1.18 to 1.19.
231
232The $dl_dlext variable is now documented.
233
234=item *
235
0a225b3c
SH
236L<Encode> has been upgraded from version 2.51 to 2.52.
237
238Encoding "0" with MIME-Headers no longer gets a blank string.
239
240=item *
241
a3fb66a4
SH
242L<English> has been upgraded from version 1.07 to 1.08.
243
244The documentation of a performance fix has been corrected.
245
246=item *
247
9a743a6d
SH
248L<Exporter> has been upgraded from version 5.68 to 5.69.
249
c3c36230
SH
250L<Exporter> would ignore custom $SIG{__WARN__} handlers in C<Exporter::Heavy>.
251[perl #39739]
9a743a6d
SH
252
253=item *
254
a3fb66a4
SH
255L<ExtUtils::MakeMaker> has been upgraded from 6.68 to 6.72.
256
257The C<dist> target now reports the file created, an infinite loop in
258C<clean_subdirs> has been fixed, an invisible interactive question is now
259avoided when rebuilding Makefile, issues with F</cygdrive> on Cygwin have been
260resolved, C<LD> and C<OPTIMIZE> are now used in recursive F<Makefile.PL>
261invocations, C<VERSION> and C<VERSION_FROM> now handle v-strings correctly, and
262control characters are now stripped from C<ABSTRACT>.
263
264=item *
265
c38620d7 266L<File::Spec> has been upgraded from 3.41 to 3.44.
a3fb66a4 267
c38620d7 268The module is now partly implemented in XS, for performance.
a3fb66a4
SH
269
270=item *
271
272L<Getopt::Std> has been upgraded from version 1.09 to 1.10.
273
274Clarified documentation of what happens when a switch is expecting an argument
275but fails to be provided with one.
276
277=item *
278
ef379d05
SH
279The IO-Compress module collection has been upgraded from 2.061 to 2.062.
280
c38620d7 281Some documentation typos have been fixed.
a3fb66a4 282
ef379d05
SH
283=item *
284
c7e51fe7
SH
285L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
286
287C<run_forked> has various fixes/improvements, L<Socket> is only used where
288needed and a regression introduced in 0.78 has been fixed.
289
290=item *
291
ef947715
TC
292L<IPC::Open3> has been upgradded from version 1.14 to 1.15.
293
aff048e9 294C<open3> would leak a zombie process if the child process I/O redirection or
c3c36230 295C<exec> failed. [perl #114722]
ef947715
TC
296
297=item *
298
a3fb66a4
SH
299L<IPC::SysV> has been upgraded from version 2.03 to 2.04.
300
301$EXPORT_TAGS{all} has been added and a couple of typos have been fixed.
302
303=item *
304
07513bb4 305The libnet module collection has been upgraded from version 1.22 to 1.23.
8723f121 306
c38620d7
SH
307Numerous bug fixes and documentation improvements have been made. See the
308F<Changes> file for full details.
a3fb66a4 309
8723f121
SH
310=item *
311
a3fb66a4 312L<List::Util> has been upgraded from version 1.27 to 1.31.
2dc8d725 313
6a9ebaf3
SH
314L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
315C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
316pairs.
2dc8d725
CBW
317
318=item *
319
a3fb66a4
SH
320L<Module::Build> has been upgraded from 0.4005 to 0.4007.
321
322The test suite has been significantly sped up, Unicode man page support has
323been enhanced and hash argument parsing in subclasses has been fixed.
324
325=item *
326
327L<Module::CoreList> has been upgraded from 2.92 to 2.97.
328
c38620d7 329The list of Perl versions covered has been updated.
a3fb66a4
SH
330
331=item *
332
333L<mro> has been upgraded from version 1.12 to 1.13.
334
335A minor typo has been fixed in the documentation.
336
337=item *
338
4725e868
SH
339L<parent> has been upgraded from version 0.225 to 0.226.
340
c38620d7 341Internal changes only have been made to the test suite.
a3fb66a4
SH
342
343=item *
344
345L<PerlIO> has been upgraded from version 1.07 to 1.08.
346
347Although not a security vulnerability, it was possible to inject code via
348C<PerlIO-E<gt>import()>. This has now been fixed. [perl #119287]
349
350=item *
351
352L<Pod::Functions> has been upgraded from version 1.07 to 1.08.
353
354Internal changes only have been made to the test suite.
355
4725e868
SH
356=item *
357
669d990b
SH
358L<Socket> has been upgraded from version 2.010 to 2.011.
359
360Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
361structures due to embedded sun_len. [cpan #86613]
362
363=item *
364
2cf99697
TC
365L<Storable> has been upgraded from version 2.45 to 2.46.
366
aff048e9
SH
367Avoid creating temporary objects for STORABLE_attach when they aren't required.
368[perl #118907]
2cf99697 369
21d55435
SH
370=item *
371
0f0eae2c
Z
372L<Time::HiRes> has been upgraded from version 1.9725 to 1.9726.
373
c38620d7
SH
374An C<lstat> function is now provided and various bugs have been fixed. See the
375F<Changes> file for full details.
0f0eae2c
Z
376
377=item *
378
21d55435
SH
379L<Time::Piece> has been upgraded from version 1.21 to 1.22.
380
c38620d7 381A minor documentation encoding problem has been fixed.
a3fb66a4 382
9b463e2b 383=item *
a3fb66a4
SH
384
385L<utf8> has been upgraded from version 1.12 to 1.13.
386
387A minor clarification has been made in the documentation.
388
c0ca71c9 389=back
42bff0d9 390
12dcbffb 391=head2 Removed Modules and Pragmata
dbd04185 392
38663f11 393=over 4
583aa5c2 394
1fdd5e53
KW
395=item *
396
12dcbffb 397XXX
42bff0d9 398
38663f11 399=back
42bff0d9 400
12dcbffb 401=head1 Documentation
989e4501 402
12dcbffb
AP
403XXX Changes to files in F<pod/> go here. Consider grouping entries by
404file and be sure to link to the appropriate page, e.g. L<perlfunc>.
989e4501 405
12dcbffb 406=head2 New Documentation
989e4501 407
12dcbffb 408XXX Changes which create B<new> files in F<pod/> go here.
42bff0d9 409
12dcbffb 410=head3 L<XXX>
42bff0d9 411
12dcbffb 412XXX Description of the purpose of the new file here
42bff0d9 413
12dcbffb 414=head2 Changes to Existing Documentation
42bff0d9 415
12dcbffb
AP
416XXX Changes which significantly change existing files in F<pod/> go here.
417However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
418section.
42bff0d9 419
3031ec7a 420=head3 L<perlopentut>
42bff0d9 421
38663f11 422=over 4
42bff0d9
DG
423
424=item *
425
3031ec7a
RS
426The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
427focuses on covering only the basics, rather than providing a comprehensive
428reference to all things openable. This rewrite came as the result of a
429vigorous discussion on perl5-porters kicked off by a set of improvements
c3c36230 430written by Alexander Hartmaier to the existing L<perlopentut>. A "more than
3031ec7a
RS
431you ever wanted to know about C<open>" document may follow in subsequent
432versions of perl.
1fdd5e53 433
583aa5c2
RS
434=back
435
a3fb66a4
SH
436=head3 L<perlre>
437
438=over 4
439
440=item *
441
442The C</r> modifier (for non-destructive substitution) is now documented. [perl
443#119151]
444
445=back
446
447=head3 L<perlxs>
448
449=over 4
450
451=item *
452
453Several problems in the C<MY_CXT> example have been fixed.
454
455=back
456
c0ca71c9
AP
457=head1 Diagnostics
458
459The following additions or changes have been made to diagnostic output,
460including warnings and fatal error messages. For the complete list of
461diagnostic messages, see L<perldiag>.
462
12dcbffb
AP
463XXX New or changed warnings emitted by the core's C<C> code go here. Also
464include any changes in L<perldiag> that reconcile it to the C<C> code.
465
c0ca71c9
AP
466=head2 New Diagnostics
467
12dcbffb
AP
468XXX Newly added diagnostic messages go under here, separated into New Errors
469and New Warnings
470
471=head3 New Errors
583aa5c2 472
38663f11 473=over 4
583aa5c2 474
b8a02ff1 475=item *
583aa5c2 476
487a71ff
SH
477L<Magical list constants are not supported|perldiag/"Magical list constants are
478not supported">
479
480(F) You assigned a magical array to a stash element, and then tried to use the
481subroutine from the same slot. You are asking Perl to do something it cannot
482do, details subject to change between Perl versions.
583aa5c2 483
b8a02ff1 484=back
583aa5c2 485
12dcbffb 486=head3 New Warnings
96d496e4 487
38663f11 488=over 4
b8a02ff1
DG
489
490=item *
491
aff048e9
SH
492L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument "%s" treated
493as 0 in increment (++)">
3ead5f64 494
aff048e9
SH
495(W numeric) The indicated string was fed as an argument to the C<++> operator
496which expects either a number or a string matching C</^[a-zA-Z]*[0-9]*\z/>.
497See L<perlop/Auto-increment and Auto-decrement> for details.
96d496e4 498
487a71ff
SH
499=item *
500
501L<Unexpected exit %u|perldiag/"Unexpected exit %u">
502
503(S) exit() was called or the script otherwise finished gracefully when
504C<PERL_EXIT_WARN> was set in C<PL_exit_flags>.
505
506=item *
507
508L<Unexpected exit failure %u|perldiag/"Unexpected exit failure %u">
509
510(S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in
511C<PL_exit_flags>.
512
12dcbffb 513=back
1310e590 514
12dcbffb 515=head2 Changes to Existing Diagnostics
e727f86a 516
12dcbffb 517XXX Changes (i.e. rewording) of diagnostic messages go here
e727f86a 518
12dcbffb 519=over 4
e727f86a 520
81ca6d44
FC
521=item *
522
12dcbffb 523XXX Describe change here
81ca6d44 524
96d496e4
RS
525=back
526
12dcbffb 527=head1 Utility Changes
583aa5c2 528
12dcbffb
AP
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>.
71e6aba6 531
12dcbffb
AP
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. ]
d5f315e8 535
12dcbffb 536=head3 L<XXX>
e38fc308
NC
537
538=over 4
539
540=item *
541
12dcbffb 542XXX
e38fc308
NC
543
544=back
545
12dcbffb 546=head1 Configuration and Compilation
2426c394 547
12dcbffb
AP
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.
4724da03 552
12dcbffb 553[ List changes as a =item entry ].
583aa5c2 554
38663f11 555=over 4
a34da6c4 556
12dcbffb 557=item *
a34da6c4 558
12dcbffb 559XXX
a34da6c4 560
583aa5c2
RS
561=back
562
12dcbffb 563=head1 Testing
583aa5c2 564
12dcbffb
AP
565XXX Any significant changes to the testing of a freshly built perl should be
566listed here. Changes which create B<new> files in F<t/> go here as do any
567large changes to the testing harness (e.g. when parallel testing was added).
568Changes to existing files in F<t/> aren't worth summarizing, although the bugs
569that they represent may be covered elsewhere.
1de7c8e6 570
12dcbffb 571[ List each test improvement as a =item entry ]
9c800862 572
12dcbffb 573=over 4
aaf54772 574
b7bbd8b6
FC
575=item *
576
12dcbffb 577XXX
b7bbd8b6 578
583aa5c2
RS
579=back
580
12dcbffb 581=head1 Platform Support
d7bfa554 582
12dcbffb 583XXX Any changes to platform support should be listed in the sections below.
81d3ed5a 584
12dcbffb
AP
585[ Within the sections, list each platform as a =item entry with specific
586changes as paragraphs below it. ]
81d3ed5a 587
12dcbffb 588=head2 New Platforms
0b023496 589
12dcbffb
AP
590XXX List any platforms that this version of perl compiles on, that previous
591versions did not. These will either be enabled by new files in the F<hints/>
592directories, or new subdirectories and F<README> files at the top level of the
593source tree.
0b023496 594
12dcbffb 595=over 4
e11f653d 596
12dcbffb 597=item XXX-some-platform
5e0164b2 598
12dcbffb 599XXX
5e0164b2 600
12dcbffb 601=back
e11f653d 602
12dcbffb 603=head2 Discontinued Platforms
8be8cdec 604
12dcbffb 605XXX List any platforms that this version of perl no longer compiles on.
8be8cdec 606
12dcbffb 607=over 4
07a522a5 608
12dcbffb 609=item XXX-some-platform
07a522a5 610
12dcbffb 611XXX
71b4007c 612
12dcbffb 613=back
71b4007c 614
12dcbffb 615=head2 Platform-Specific Notes
f6b1d2f5 616
12dcbffb
AP
617XXX List any changes for specific platforms. This could include configuration
618and compilation changes or changes in portability/compatibility. However,
619changes within modules for platforms should generally be listed in the
620L</Modules and Pragmata> section.
f6b1d2f5 621
12dcbffb 622=over 4
7e4f209b 623
12dcbffb 624=item XXX-some-platform
7e4f209b 625
12dcbffb 626XXX
558673e6 627
12dcbffb 628=back
558673e6 629
12dcbffb 630=head1 Internal Changes
47a7c93d 631
12dcbffb
AP
632XXX Changes which affect the interface available to C<XS> code go here. Other
633significant internal changes for future core maintainers should be noted as
634well.
47a7c93d 635
12dcbffb 636[ List each change as a =item entry ]
b5a80c26 637
12dcbffb 638=over 4
b5a80c26 639
7f1d4316
FC
640=item *
641
aff048e9
SH
642C<sv_pos_b2u_flags> has been added to the API. It is similar to C<sv_pos_b2u>,
643but supports long strings on 64-bit platforms.
7f1d4316 644
ef947715
TC
645=item *
646
aff048e9 647C<PL_exit_flags> can now be used by perl embedders or other XS code to have
c3c36230 648perl C<warn> or C<abort> on an attempted exit. [perl #52000]
ef947715 649
12dcbffb 650=back
02bef66e 651
12dcbffb 652=head1 Selected Bug Fixes
d30fb844 653
12dcbffb
AP
654XXX Important bug fixes in the core language are summarized here. Bug fixes in
655files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
d30fb844 656
12dcbffb 657[ List each fix as a =item entry ]
21c01741 658
12dcbffb 659=over 4
21c01741 660
467582e8
FC
661=item *
662
aff048e9
SH
663Autovivifying a subroutine stub via C<\&$glob> started causing crashes in Perl
6645.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar that had
b8aa8b6a 665had a glob assigned to it. This has been fixed. [perl #119051]
467582e8 666
64da853d
FC
667=item *
668
b8aa8b6a
SH
669On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1.
670[perl #72766]
64da853d 671
8847717e
FC
672=item *
673
674Perl used to leak an implementation detail when it came to referencing the
aff048e9
SH
675return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }> used
676to display two different memory addresses, because the C<\> operator was
677copying the variable. Under threaded builds, it would also happen for
b8aa8b6a
SH
678constants (C<for(1) { ... }>). This has been fixed. [perl #21979, #78194,
679#89188, #109746, #114838, #115388]
8847717e 680
f1b856da
FC
681=item *
682
aff048e9
SH
683The range operator C<..> was returning the same modifiable scalars with each
684call, unless it was the only thing in a C<foreach> loop header. This meant
685that changes to values within the list returned would be visible the next time
b8aa8b6a 686the operator was executed. [perl #3105]
f1b856da 687
eaed284b
FC
688=item *
689
aff048e9
SH
690Constant folding and subroutine inlining no longer cause operations that would
691normally return new modifiable scalars to return read-only values instead.
eaed284b 692
0335212c
FC
693=item *
694
695Closures of the form C<sub () { $some_variable }> are no longer inlined,
b8aa8b6a
SH
696causing changes to the variable to be ignored by callers of the subroutine.
697[perl #79908]
0335212c 698
c3e455cf
FC
699=item *
700
701Return values of certain operators such as C<ref> would sometimes be shared
702between recursive calls to the same subroutine, causing the inner call to
aff048e9 703modify the value returned by C<ref> in the outer call. This has been fixed.
c3e455cf 704
019705bc
FC
705=item *
706
707C<__PACKAGE__> and constants returning a package name or hash key are now
aff048e9
SH
708consistently read-only. In various previous Perl releases, they have become
709mutable under certain circumstances.
019705bc 710
25921d77
FC
711=item *
712
aff048e9 713C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has been
b8aa8b6a 714fixed. [perl #118213]
25921d77 715
28ea507e
FC
716=item *
717
718Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
719incorrectly interpreted as a comment. The code block would be skipped,
720unparsed. This has been corrected.
721
722=item *
723
aff048e9
SH
724Starting in Perl 5.001, a regular expression like C</[#$a]/x> or C</[#]$a/x>
725would have its C<#> incorrectly interpreted as a comment, so the variable would
b8aa8b6a 726not interpolate. This has been corrected. [perl #45667]
28ea507e 727
074d6753
FC
728=item *
729
aff048e9
SH
730On non-threaded builds, setting C<${"_<filename"}> to a reference or typeglob
731no longer causes C<__FILE__> and some error messages to produce a corrupt
732string, and no longer prevents C<#line> directives in string evals from
733providing the source lines to the debugger. Threaded builds were unaffected.
074d6753 734
4e5b563d
FC
735=item *
736
aff048e9
SH
737Enabling "used once" warnings no longer causes crashes on stash circularities
738created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
4e5b563d 739
ee818f56
FC
740=item *
741
742Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no
743longer produce "uninitialized" warnings at compile time.
744
c054cc81
FC
745=item *
746
aff048e9
SH
747Modifying a substitution target inside the substitution replacement no longer
748causes crashes.
c054cc81 749
efcbb8b2
FC
750=item *
751
aff048e9
SH
752The first statement inside a string eval used to use the wrong pragma setting
753sometimes during constant folding. C<eval 'uc chr 0xe0'> would randomly choose
754between Unicode, byte, and locale semantics. This has been fixed.
efcbb8b2 755
36813eeb
FC
756=item *
757
758The handling of return values of @INC filters (subroutines returned by
aff048e9
SH
759subroutines in @INC) has been fixed in various ways. Previously tied variables
760were mishandled, and setting $_ to a reference or typeglob could result in
761crashes.
36813eeb 762
52937067
FC
763=item *
764
aff048e9
SH
765The C<SvPVbyte> XS function has been fixed to work with tied scalars returning
766something other than a string. It used to return utf8 in those cases where
767C<SvPV> would.
52937067 768
6760cac5
FC
769=item *
770
771Perl 5.18.0 inadvertently made dereferenced regular expressions
772S<(C<${ qr// }>)> false as booleans. This has been fixed.
773
671f9ff7
FC
774=item *
775
aff048e9
SH
776Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced regular
777expressions, and stopped C<++> from flattening vstrings.
671f9ff7 778
912a9a8f
FC
779=item *
780
781C<bless> no longer dies with "Can't bless non-reference value" if its first
782argument is a tied reference.
783
0d25b9d4
FC
784=item *
785
786C<reset> with an argument no longer skips copy-on-write scalars, regular
aff048e9
SH
787expressions, typeglob copies, and vstrings. Also, when encountering those or
788read-only values, it no longer skips any array or hash with the same name.
0d25b9d4 789
a82207ba
FC
790=item *
791
18e2e6cd 792C<reset> with an argument now skips scalars aliased to typeglobs
aff048e9 793(C<for $z (*foo) { reset "z" }>). Previously it would corrupt memory or crash.
18e2e6cd
FC
794
795=item *
796
a82207ba 797C<ucfirst> and C<lcfirst> were not respecting the bytes pragma. This was a
b8aa8b6a 798regression from v5.12. [perl #117355]
a82207ba 799
31d5dc65
DM
800=item *
801
aff048e9
SH
802The use of C<\G> in regular expressions, where it's not at the start of the
803pattern, is now slightly less buggy (although it is still somewhat
31d5dc65
DM
804problematic).
805
806=item *
807
aff048e9
SH
808Where a regular expression included code blocks (C</(?{...})/>), and where the
809use of constant overloading triggered a re-compilation of the code block, the
01b128ca
SH
810second compilation didn't see its outer lexical scope. This was a regression
811in 5.18.0.
31d5dc65 812
74dac2b5
FC
813=item *
814
815Changes to C<UNIVERSAL::DESTROY> now update DESTROY caches in all classes,
816instead of causing classes that have already had objects destroyed to
817continue using the old sub. This was a regression in 5.18. [perl #114864]
818
38663f11 819=back
d7bfa554 820
38663f11 821=head1 Known Problems
6810f0ad 822
12dcbffb
AP
823XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
824tests that had to be C<TODO>ed for the release would be noted here. Unfixed
825platform specific bugs also go here.
826
827[ List each fix as a =item entry ]
828
38663f11 829=over 4
14fd9356
FC
830
831=item *
832
12dcbffb 833XXX
0e417e4d 834
38663f11 835=back
583aa5c2 836
12dcbffb
AP
837=head1 Obituary
838
839XXX If any significant core contributor has died, we've added a short obituary
840here.
841
583aa5c2 842=head1 Acknowledgements
a75569c0 843
12dcbffb
AP
844XXX Generate this with:
845
846 perl Porting/acknowledgements.pl v5.19.2..HEAD
f5b73711 847
44691e6f
AB
848=head1 Reporting Bugs
849
e08634c5
SH
850If you find what you think is a bug, you might check the articles recently
851posted to the comp.lang.perl.misc newsgroup and the perl bug database at
852http://rt.perl.org/perlbug/ . There may also be information at
853http://www.perl.org/ , the Perl Home Page.
44691e6f 854
e08634c5
SH
855If you believe you have an unreported bug, please run the L<perlbug> program
856included with your release. Be sure to trim your bug down to a tiny but
857sufficient test case. Your bug report, along with the output of C<perl -V>,
858will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
859
860If the bug you are reporting has security implications, which make it
e08634c5
SH
861inappropriate to send to a publicly archived mailing list, then please send it
862to perl5-security-report@perl.org. This points to a closed subscription
863unarchived mailing list, which includes all the core committers, who will be
864able to help assess the impact of issues, figure out a resolution, and help
f9001595 865co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
866platforms on which Perl is supported. Please only use this address for
867security issues in the Perl core, not for modules independently distributed on
868CPAN.
44691e6f
AB
869
870=head1 SEE ALSO
871
e08634c5
SH
872The F<Changes> file for an explanation of how to view exhaustive details on
873what changed.
44691e6f
AB
874
875The F<INSTALL> file for how to build Perl.
876
877The F<README> file for general stuff.
878
879The F<Artistic> and F<Copying> files for copyright information.
880
881=cut