This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlhacktips: PERL_DEBUG_READONLY_OPS update
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
e96e0834
JL
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
27f00e3d 7
e96e0834 8perldelta - what is new for perl v5.17.2
417a992d 9
e96e0834 10=head1 DESCRIPTION
028c8719 11
e96e0834
JL
12This document describes differences between the 5.17.1 release and
13the 5.17.2 release.
028c8719 14
e96e0834
JL
15If you are upgrading from an earlier release such as 5.17.0, first read
16L<perl5171delta>, which describes differences between 5.17.0 and
175.17.1.
028c8719 18
e96e0834 19=head1 Notice
30608892 20
e96e0834 21XXX Any important notices here
e128ab2c 22
e96e0834 23=head1 Core Enhancements
e128ab2c 24
e96e0834
JL
25XXX New core language features go here. Summarise user-visible core language
26enhancements. Particularly prominent performance optimisations could go
27here, but most should go in the L</Performance Enhancements> section.
fe3193b5 28
e96e0834 29[ List each enhancement as a =head2 entry ]
05c8f9ed 30
e96e0834 31=head1 Security
0da72d5e 32
e96e0834
JL
33XXX Any security-related notices go here. In particular, any security
34vulnerabilities closed should be noted here rather than in the
35L</Selected Bug Fixes> section.
0da72d5e 36
e96e0834 37[ List each security issue as a =head2 entry ]
0da72d5e 38
e96e0834 39=head1 Incompatible Changes
0da72d5e 40
e96e0834 41XXX For a release on a stable branch, this section aspires to be:
0da72d5e 42
e96e0834
JL
43 There are no changes intentionally incompatible with 5.XXX.XXX
44 If any exist, they are bugs, and we request that you submit a
45 report. See L</Reporting Bugs> below.
0da72d5e 46
e96e0834 47[ List each incompatible change as a =head2 entry ]
e2f0c3bb 48
e96e0834 49=head1 Deprecations
e2f0c3bb 50
e96e0834
JL
51XXX Any deprecated features, syntax, modules etc. should be listed here.
52In particular, deprecated modules should be listed here even if they are
53listed as an updated module in the L</Modules and Pragmata> section.
7d101ed1 54
e96e0834 55[ List each deprecation as a =head2 entry ]
7d101ed1 56
e96e0834 57=head1 Performance Enhancements
7d101ed1 58
e96e0834
JL
59XXX Changes which enhance performance without changing behaviour go here. There
60may well be none in a stable release.
7d101ed1 61
e96e0834 62[ List each enhancement as a =item entry ]
95ce428c 63
f9001595 64=over 4
75ff5956 65
2630d42b 66=item *
c11980ad 67
e96e0834 68XXX
53de3ff0 69
61174fb5 70=back
ef7131e9 71
61174fb5 72=head1 Modules and Pragmata
ef7131e9 73
e96e0834
JL
74XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
75go here. If Module::CoreList is updated, generate an initial draft of the
76following sections using F<Porting/corelist-perldelta.pl>, which prints stub
77entries to STDOUT. Results can be pasted in place of the '=head2' entries
78below. A paragraph summary for important changes should then be added by hand.
79In an ideal world, dual-life modules would have a F<Changes> file that could be
80cribbed.
5cefbec9 81
e96e0834 82[ Within each section, list entries as a =item entry ]
fbdb83f3 83
e96e0834 84=head2 New Modules and Pragmata
95c6c5c5 85
e96e0834 86=over 4
9331f04e
NC
87
88=item *
89
e96e0834 90XXX
95c6c5c5 91
e96e0834 92=back
ff3f295c 93
e96e0834 94=head2 Updated Modules and Pragmata
ff3f295c 95
e96e0834 96=over 4
95c6c5c5 97
95c6c5c5
JL
98=item *
99
4c77591b
NC
100L<File::stat> has been upgraded from version 1.06 to 1.07.
101
102Previously C<File::stat>'s overloaded C<-x> and C<-X> operators did not give
103the correct results for directories or executable files when running as
104root. They had been treating executable permissions for root just like for
105any other user, performing group membership tests I<etc> for files not owned
106by root. They now follow the correct Unix behaviour - for a directory they
107are always true, and for a file if any of the three execute permission bits
108are set then they report that root can execute the file. Perl's builtin
109C<-x> and C<-X> operators have always been correct.
c506fc7e 110
36ab1671
FC
111=item *
112
113L<Tie::StdHandle> has been upgraded from version 4.2 to 4.3.
114
115C<READ> now respects the offset argument to C<read> [perl #112826].
116
df2c1bb8
TC
117=item *
118
119L<IO> has been upgraded from version 1.25_07 to 1.25_08.
120
121L<IO::Socket> tries harder to cache or otherwise fetch socket
122information.
123
7ab2ea42
TC
124=item *
125
126L<Storable> has been upgraded from version 2.36 to 2.37.
127
128Restricted hashes were not always thawed correctly [perl #73972].
129
130Storable would croak when freezing a blessed REF object with a
131C<STORABLE_freeze()> method [perl #113880].
132
e96e0834 133=back
c506fc7e 134
e96e0834 135=head2 Removed Modules and Pragmata
c506fc7e 136
e96e0834 137=over 4
95c6c5c5 138
95c6c5c5
JL
139=item *
140
e96e0834 141XXX
95c6c5c5 142
e96e0834 143=back
95c6c5c5 144
e96e0834 145=head1 Documentation
95c6c5c5 146
e96e0834
JL
147XXX Changes to files in F<pod/> go here. Consider grouping entries by
148file and be sure to link to the appropriate page, e.g. L<perlfunc>.
95c6c5c5 149
e96e0834 150=head2 New Documentation
1c633914 151
e96e0834 152XXX Changes which create B<new> files in F<pod/> go here.
f558db2f 153
e96e0834 154=head3 L<XXX>
66aa79e2 155
e96e0834 156XXX Description of the purpose of the new file here
95c6c5c5 157
e96e0834 158=head2 Changes to Existing Documentation
95c6c5c5 159
e96e0834
JL
160XXX Changes which significantly change existing files in F<pod/> go here.
161However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
162section.
95c6c5c5 163
66b30015 164=head3 L<perlfunc>
95c6c5c5 165
e96e0834 166=over 4
95c6c5c5
JL
167
168=item *
169
66b30015 170Clarified documentation of C<our>.
95c6c5c5 171
e96e0834 172=back
95c6c5c5 173
e96e0834 174=head1 Diagnostics
95c6c5c5 175
e96e0834
JL
176The following additions or changes have been made to diagnostic output,
177including warnings and fatal error messages. For the complete list of
178diagnostic messages, see L<perldiag>.
95c6c5c5 179
e96e0834
JL
180XXX New or changed warnings emitted by the core's C<C> code go here. Also
181include any changes in L<perldiag> that reconcile it to the C<C> code.
71014848 182
e96e0834
JL
183[ Within each section, list entries as a =item entry that links to perldiag,
184 e.g.
71014848 185
e96e0834 186 =item *
95c6c5c5 187
e96e0834
JL
188 L<Invalid version object|perldiag/"Invalid version object">
189]
95c6c5c5 190
e96e0834 191=head2 New Diagnostics
95c6c5c5 192
e96e0834 193XXX Newly added diagnostic messages go here
95c6c5c5 194
e96e0834 195=head3 New Errors
95c6c5c5 196
e96e0834 197=over 4
95c6c5c5 198
95c6c5c5
JL
199=item *
200
a9be10f4 201L<Group name must start with a non-digit word character in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/">
40e43b78
FC
202
203This error has been added for C<(?&0)>, which is invalid. It used to
204produce an incomprehensible error message [perl #101666].
95c6c5c5 205
e96e0834 206=back
95c6c5c5 207
e96e0834 208=head3 New Warnings
95c6c5c5 209
e96e0834 210=over 4
95c6c5c5 211
95c6c5c5
JL
212=item *
213
72267260
JL
214C<chr()> now warns when passed a negative value [perl #83048].
215
216=item *
217
218C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the
219value will be truncated rather than overflowing) [perl #40605].
7d101ed1 220
e013ada0
JL
221=item *
222
223Running perl with the C<-i> flag now warns if no input files are provided on
224the command line [perl #113410].
225
e96e0834 226=back
d9661073 227
e96e0834 228=head2 Changes to Existing Diagnostics
95c6c5c5 229
e96e0834 230XXX Changes (i.e. rewording) of diagnostic messages go here
95c6c5c5 231
e96e0834 232=over 4
95c6c5c5
JL
233
234=item *
235
e96e0834 236XXX Describe change here
3630f57e 237
e96e0834 238=back
3630f57e 239
e96e0834 240=head1 Utility Changes
95c6c5c5 241
e96e0834
JL
242XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
243here. Most of these are built within the directories F<utils> and F<x2p>.
95c6c5c5 244
e96e0834
JL
245[ List utility changes as a =head3 entry for each utility and =item
246entries for each change
247Use L<XXX> with program names to get proper documentation linking. ]
95c6c5c5 248
e96e0834 249=head3 L<XXX>
95c6c5c5 250
e96e0834 251=over 4
95c6c5c5
JL
252
253=item *
254
e96e0834 255XXX
95c6c5c5 256
e96e0834 257=back
95c6c5c5 258
e96e0834 259=head1 Configuration and Compilation
95c6c5c5 260
e96e0834
JL
261XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
262go here. Any other changes to the Perl build process should be listed here.
263However, any platform-specific changes should be listed in the
264L</Platform Support> section, instead.
95c6c5c5 265
e96e0834 266[ List changes as a =item entry ].
95c6c5c5 267
e96e0834 268=over 4
95c6c5c5
JL
269
270=item *
271
c5057b0f
FC
272Building perl with some Windows compilers used to fail due to a problem
273with miniperl's C<glob> operator (which uses the C<perlglob> program)
274deleting the PATH environment variable [perl #113798].
95c6c5c5 275
e96e0834 276=back
95c6c5c5 277
e96e0834 278=head1 Testing
95c6c5c5 279
e96e0834
JL
280XXX Any significant changes to the testing of a freshly built perl should be
281listed here. Changes which create B<new> files in F<t/> go here as do any
282large changes to the testing harness (e.g. when parallel testing was added).
283Changes to existing files in F<t/> aren't worth summarising, although the bugs
284that they represent may be covered elsewhere.
95c6c5c5 285
e96e0834 286[ List each test improvement as a =item entry ]
95c6c5c5 287
e96e0834 288=over 4
95c6c5c5
JL
289
290=item *
291
e96e0834 292XXX
95c6c5c5 293
61174fb5 294=back
f558db2f 295
e96e0834 296=head1 Platform Support
05c8f9ed 297
e96e0834 298XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 299
e96e0834
JL
300[ Within the sections, list each platform as a =item entry with specific
301changes as paragraphs below it. ]
9dea6244 302
e96e0834 303=head2 New Platforms
9dea6244 304
e96e0834
JL
305XXX List any platforms that this version of perl compiles on, that previous
306versions did not. These will either be enabled by new files in the F<hints/>
307directories, or new subdirectories and F<README> files at the top level of the
308source tree.
7d101ed1
JL
309
310=over 4
311
42d72fc5 312=item XXX
7d101ed1 313
7d101ed1
JL
314
315=back
316
e96e0834 317=head2 Discontinued Platforms
ef7131e9 318
e96e0834 319XXX List any platforms that this version of perl no longer compiles on.
4a301309
FC
320
321=over 4
322
e96e0834 323=item XXX-some-platform
8dffc0ab 324
e96e0834 325XXX
dbc84d79 326
4a301309
FC
327=back
328
61174fb5 329=head2 Platform-Specific Notes
ceb0881c 330
e96e0834
JL
331XXX List any changes for specific platforms. This could include configuration
332and compilation changes or changes in portability/compatibility. However,
333changes within modules for platforms should generally be listed in the
334L</Modules and Pragmata> section.
89cbc6b8 335
e96e0834 336=over 4
0998713f 337
5edb02d0 338=item VMS
112b6866 339
5edb02d0
CB
340Quotes are now removed from the command verb (but not the parameters) for commands
341spawned via C<system>, backticks, or a piped C<open>. Previously, quotes on the verb
342were passed through to DCL, which would fail to recognize the command. Also, if the
343verb is actually a path to an image or command procedure on an ODS-5 volume, quoting it
344now allows the path to contain spaces.
112b6866 345
42d72fc5
TC
346=item AIX
347
348Configure now always adds -qlanglvl=extc99 to the CC flags on AIX when
349using xlC. This will make it easier to compile a number of XS-based modules
350that assume C99 [perl #113778].
351
61174fb5 352=back
8e125188 353
61174fb5 354=head1 Internal Changes
8e125188 355
e96e0834
JL
356XXX Changes which affect the interface available to C<XS> code go here.
357Other significant internal changes for future core maintainers should
358be noted as well.
c4643160 359
e96e0834 360[ List each change as a =item entry ]
f8ef51fd 361
e96e0834 362=over 4
e128ab2c 363
e2f0c3bb
FC
364=item *
365
7ab2ea42
TC
366OP allocation for CVs now uses a slab allocator. This simplifies
367memory management for OPs allocated to a CV, so cleaning up after a
368compilation error is simpler and safer [perl #111462][perl #112312].
e2f0c3bb 369
61174fb5 370=back
422287bf 371
61174fb5 372=head1 Selected Bug Fixes
2de6ba8d 373
e96e0834
JL
374XXX Important bug fixes in the core language are summarised here.
375Bug fixes in files in F<ext/> and F<lib/> are best summarised in
376L</Modules and Pragmata>.
52c4b146 377
e96e0834 378[ List each fix as a =item entry ]
e128ab2c
DM
379
380=over 4
381
382=item *
383
48895a0d 384A regression introduced in v5.14.0 has been fixed, in which some calls
7ab2ea42 385to the C<re> module would clobber C<$_> [perl #113750].
e128ab2c 386
8b1adbab
JL
387=item *
388
389C<do FILE> now always either sets or clears C<$@>, even when the file can't be
390read. This ensures that testing C<$@> first (as recommended by the
391documentation) always returns the correct result.
392
83f29afa
VP
393=item *
394
395The array iterator used for the C<each @array> construct is now correctly
396reset when C<@array> is cleared (RT #75596). This happens for example when the
397array is globally assigned to, as in C<@array = (...)>, but not when its
398B<values> are assigned to. In terms of the XS API, it means that C<av_clear()>
399will now reset the iterator.
400
401This mirrors the behaviour of the hash iterator when the hash is cleared.
402
0938f143
JL
403=item *
404
405C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return
406correct results, regardless of whether that package referred to by C<$class>
407exists [perl #47113].
408
72267260
JL
409=item *
410
411Arriving signals no longer clear C<$@> [perl #45173].
412
7a251f7a
JL
413=item *
414
415Allow C<my ()> declarations with an empty variable list [perl #113554].
416
21247d85
FC
417=item *
418
419During parsing, subs declared after errors no longer leave stubs
420[perl #113712].
421
2e4f8b82
FC
422=item *
423
c95d4104
FC
424Closures containing no string evals no longer hang on to their containing
425subroutines, allowing variables closed over by outer subroutines to be
426freed when the outer sub is freed, even if the inner sub still exists
427[perl #89544].
428
788505db
FC
429=item *
430
431Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode
432stopped working properly in 5.16.0. It was causing the new handle to
433reference a different scalar variable. This has been fixed [perl #113764].
434
2c2b9cf4
FC
435=item *
436
437C<qr//> expressions no longer crash with custom regular expression engines
438that do not set C<offs> at regular expression compilation time
439[perl #112962].
440
3cd56aaa
TC
441=item *
442
443C<delete local> no longer crashes with certain magical arrays and hashes
444[perl #112966].
445
446=item *
447
448C<local> on elements of certain magical arrays and hashes used not to
449arrange to have the element deleted on scope exit, even if the element did
450not exist before C<local>.
451
452=item *
453
454C<scalar(write)> no longer returns multiple items [perl #73690].
455
456=item *
457
458String to floating point conversions no longer misparse certain strings under
459C<use locale> [perl #109318].
460
461=item *
462
463C<@INC> filters that die no longer leak memory [perl #92252].
464
465=item *
466
467The implementations of overloaded operations are now called in the correct
468context. This allows, among other things, being able to properly override
469C<< <> >> [perl #47119].
470
471=item *
472
473Specifying only the C<fallback> key when calling C<use overload> now behaves
474properly [perl #113010].
475
c0c19433
JL
476=item *
477
478C<< sub foo { my $a = 0; while ($a) { ... } } >> and
479C<< sub foo { while (0) { ... } } >> now return the same thing [perl #73618].
480
7ab2ea42
TC
481=item *
482
f4df6cb9 483Fixed the debugger C<l> and C<M> commands, and other debugger
7ab2ea42
TC
484functionality which was broken in 5.17.0 [perl #113918].
485
486=item *
487
488String negation now behaves the same under C<use integer;> as it does
489without [perl #113012].
490
e128ab2c
DM
491=back
492
e96e0834 493=head1 Known Problems
dbc84d79 494
e96e0834
JL
495XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
496tests that had to be C<TODO>ed for the release would be noted here. Unfixed
497platform specific bugs also go here.
53de3ff0 498
e96e0834 499[ List each fix as a =item entry ]
233bba44
JL
500
501=over 4
502
503=item *
504
e96e0834 505XXX
233bba44 506
e96e0834 507=back
233bba44 508
e96e0834 509=head1 Obituary
233bba44 510
e96e0834
JL
511XXX If any significant core contributor has died, we've added a short obituary
512here.
233bba44 513
61174fb5 514=head1 Acknowledgements
d5dc7001 515
e96e0834
JL
516XXX Generate this with:
517
518 perl Porting/acknowledgements.pl v5.17.1..HEAD
29cf780c 519
44691e6f
AB
520=head1 Reporting Bugs
521
522If you find what you think is a bug, you might check the articles
52deee2e 523recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
524bug database at http://rt.perl.org/perlbug/ . There may also be
525information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
526
527If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
528program included with your release. Be sure to trim your bug down
529to a tiny but sufficient test case. Your bug report, along with the
530output of C<perl -V>, will be sent off to perlbug@perl.org to be
531analysed by the Perl porting team.
44691e6f
AB
532
533If the bug you are reporting has security implications, which make it
f9001595
RS
534inappropriate to send to a publicly archived mailing list, then please send
535it to perl5-security-report@perl.org. This points to a closed subscription
536unarchived mailing list, which includes
537all the core committers, who will be able
538to help assess the impact of issues, figure out a resolution, and help
539co-ordinate the release of patches to mitigate or fix the problem across all
540platforms on which Perl is supported. Please only use this address for
541security issues in the Perl core, not for modules independently
542distributed on CPAN.
44691e6f
AB
543
544=head1 SEE ALSO
545
52deee2e
DR
546The F<Changes> file for an explanation of how to view exhaustive details
547on what changed.
44691e6f
AB
548
549The F<INSTALL> file for how to build Perl.
550
551The F<README> file for general stuff.
552
553The F<Artistic> and F<Copying> files for copyright information.
554
555=cut