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