This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #86136] Downgrade sort {my $a} to a warning
[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
e96e0834 124=back
c506fc7e 125
e96e0834 126=head2 Removed Modules and Pragmata
c506fc7e 127
e96e0834 128=over 4
95c6c5c5 129
95c6c5c5
JL
130=item *
131
e96e0834 132XXX
95c6c5c5 133
e96e0834 134=back
95c6c5c5 135
e96e0834 136=head1 Documentation
95c6c5c5 137
e96e0834
JL
138XXX Changes to files in F<pod/> go here. Consider grouping entries by
139file and be sure to link to the appropriate page, e.g. L<perlfunc>.
95c6c5c5 140
e96e0834 141=head2 New Documentation
1c633914 142
e96e0834 143XXX Changes which create B<new> files in F<pod/> go here.
f558db2f 144
e96e0834 145=head3 L<XXX>
66aa79e2 146
e96e0834 147XXX Description of the purpose of the new file here
95c6c5c5 148
e96e0834 149=head2 Changes to Existing Documentation
95c6c5c5 150
e96e0834
JL
151XXX Changes which significantly change existing files in F<pod/> go here.
152However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
153section.
95c6c5c5 154
e96e0834 155=head3 L<XXX>
95c6c5c5 156
e96e0834 157=over 4
95c6c5c5
JL
158
159=item *
160
e96e0834 161XXX Description of the change here
95c6c5c5 162
e96e0834 163=back
95c6c5c5 164
e96e0834 165=head1 Diagnostics
95c6c5c5 166
e96e0834
JL
167The following additions or changes have been made to diagnostic output,
168including warnings and fatal error messages. For the complete list of
169diagnostic messages, see L<perldiag>.
95c6c5c5 170
e96e0834
JL
171XXX New or changed warnings emitted by the core's C<C> code go here. Also
172include any changes in L<perldiag> that reconcile it to the C<C> code.
71014848 173
e96e0834
JL
174[ Within each section, list entries as a =item entry that links to perldiag,
175 e.g.
71014848 176
e96e0834 177 =item *
95c6c5c5 178
e96e0834
JL
179 L<Invalid version object|perldiag/"Invalid version object">
180]
95c6c5c5 181
e96e0834 182=head2 New Diagnostics
95c6c5c5 183
e96e0834 184XXX Newly added diagnostic messages go here
95c6c5c5 185
e96e0834 186=head3 New Errors
95c6c5c5 187
e96e0834 188=over 4
95c6c5c5 189
95c6c5c5
JL
190=item *
191
a9be10f4 192L<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
193
194This error has been added for C<(?&0)>, which is invalid. It used to
195produce an incomprehensible error message [perl #101666].
95c6c5c5 196
e96e0834 197=back
95c6c5c5 198
e96e0834 199=head3 New Warnings
95c6c5c5 200
e96e0834 201=over 4
95c6c5c5 202
95c6c5c5
JL
203=item *
204
72267260
JL
205C<chr()> now warns when passed a negative value [perl #83048].
206
207=item *
208
209C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the
210value will be truncated rather than overflowing) [perl #40605].
7d101ed1 211
e013ada0
JL
212=item *
213
214Running perl with the C<-i> flag now warns if no input files are provided on
215the command line [perl #113410].
216
e96e0834 217=back
d9661073 218
e96e0834 219=head2 Changes to Existing Diagnostics
95c6c5c5 220
e96e0834 221XXX Changes (i.e. rewording) of diagnostic messages go here
95c6c5c5 222
e96e0834 223=over 4
95c6c5c5
JL
224
225=item *
226
e96e0834 227XXX Describe change here
3630f57e 228
e96e0834 229=back
3630f57e 230
e96e0834 231=head1 Utility Changes
95c6c5c5 232
e96e0834
JL
233XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
234here. Most of these are built within the directories F<utils> and F<x2p>.
95c6c5c5 235
e96e0834
JL
236[ List utility changes as a =head3 entry for each utility and =item
237entries for each change
238Use L<XXX> with program names to get proper documentation linking. ]
95c6c5c5 239
e96e0834 240=head3 L<XXX>
95c6c5c5 241
e96e0834 242=over 4
95c6c5c5
JL
243
244=item *
245
e96e0834 246XXX
95c6c5c5 247
e96e0834 248=back
95c6c5c5 249
e96e0834 250=head1 Configuration and Compilation
95c6c5c5 251
e96e0834
JL
252XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
253go here. Any other changes to the Perl build process should be listed here.
254However, any platform-specific changes should be listed in the
255L</Platform Support> section, instead.
95c6c5c5 256
e96e0834 257[ List changes as a =item entry ].
95c6c5c5 258
e96e0834 259=over 4
95c6c5c5
JL
260
261=item *
262
c5057b0f
FC
263Building perl with some Windows compilers used to fail due to a problem
264with miniperl's C<glob> operator (which uses the C<perlglob> program)
265deleting the PATH environment variable [perl #113798].
95c6c5c5 266
81b820f9
FC
267=item *
268
269C<delete local> no longer crashes with certain magical arrays and hashes
270[perl #112966].
271
272=item *
273
274C<local> on elements of certain magical arrays and hashes used not to
275arrange to have the element deleted on scope exit, even if the element did
276not exist before C<local>.
277
1db1b2e4
FC
278=item *
279
280C<scalar(write)> no longer returns multiple items [perl #73690].
281
e013ada0
JL
282=item *
283
284String to floating point conversions no longer misparse certain strings under
285C<use locale> [perl #109318].
286
287=item *
288
289C<@INC> filters that die no longer leak memory [perl #92252].
290
291=item *
292
293The implementations of overloaded operations are now called in the correct
294context. This allows, among other things, being able to properly override
295C<< <> >> [perl #47119].
296
56185adc
JL
297=item *
298
299Specifying only the C<fallback> key when calling C<use overload> now behaves
300properly [perl #113010].
301
e96e0834 302=back
95c6c5c5 303
e96e0834 304=head1 Testing
95c6c5c5 305
e96e0834
JL
306XXX Any significant changes to the testing of a freshly built perl should be
307listed here. Changes which create B<new> files in F<t/> go here as do any
308large changes to the testing harness (e.g. when parallel testing was added).
309Changes to existing files in F<t/> aren't worth summarising, although the bugs
310that they represent may be covered elsewhere.
95c6c5c5 311
e96e0834 312[ List each test improvement as a =item entry ]
95c6c5c5 313
e96e0834 314=over 4
95c6c5c5
JL
315
316=item *
317
e96e0834 318XXX
95c6c5c5 319
61174fb5 320=back
f558db2f 321
e96e0834 322=head1 Platform Support
05c8f9ed 323
e96e0834 324XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 325
e96e0834
JL
326[ Within the sections, list each platform as a =item entry with specific
327changes as paragraphs below it. ]
9dea6244 328
e96e0834 329=head2 New Platforms
9dea6244 330
e96e0834
JL
331XXX List any platforms that this version of perl compiles on, that previous
332versions did not. These will either be enabled by new files in the F<hints/>
333directories, or new subdirectories and F<README> files at the top level of the
334source tree.
7d101ed1
JL
335
336=over 4
337
b81e0e29 338=item *
7d101ed1 339
b81e0e29
DM
340Configure now always adds -qlanglvl=extc99 to the CC flags on AIX when
341using xlC. This will make it easier to compile a number of XS-based modules
342that assume C99 [perl #113778].
7d101ed1
JL
343
344=back
345
e96e0834 346=head2 Discontinued Platforms
ef7131e9 347
e96e0834 348XXX List any platforms that this version of perl no longer compiles on.
4a301309
FC
349
350=over 4
351
e96e0834 352=item XXX-some-platform
8dffc0ab 353
e96e0834 354XXX
dbc84d79 355
4a301309
FC
356=back
357
61174fb5 358=head2 Platform-Specific Notes
ceb0881c 359
e96e0834
JL
360XXX List any changes for specific platforms. This could include configuration
361and compilation changes or changes in portability/compatibility. However,
362changes within modules for platforms should generally be listed in the
363L</Modules and Pragmata> section.
89cbc6b8 364
e96e0834 365=over 4
0998713f 366
e96e0834 367=item XXX-some-platform
112b6866 368
e96e0834 369XXX
112b6866 370
61174fb5 371=back
8e125188 372
61174fb5 373=head1 Internal Changes
8e125188 374
e96e0834
JL
375XXX Changes which affect the interface available to C<XS> code go here.
376Other significant internal changes for future core maintainers should
377be noted as well.
c4643160 378
e96e0834 379[ List each change as a =item entry ]
f8ef51fd 380
e96e0834 381=over 4
e128ab2c 382
e2f0c3bb
FC
383=item *
384
e96e0834 385XXX
e2f0c3bb 386
61174fb5 387=back
422287bf 388
61174fb5 389=head1 Selected Bug Fixes
2de6ba8d 390
e96e0834
JL
391XXX Important bug fixes in the core language are summarised here.
392Bug fixes in files in F<ext/> and F<lib/> are best summarised in
393L</Modules and Pragmata>.
52c4b146 394
e96e0834 395[ List each fix as a =item entry ]
e128ab2c
DM
396
397=over 4
398
399=item *
400
48895a0d
KW
401A regression introduced in v5.14.0 has been fixed, in which some calls
402to the C<re> module would clobber C<$_>.
e128ab2c 403
8b1adbab
JL
404=item *
405
406C<do FILE> now always either sets or clears C<$@>, even when the file can't be
407read. This ensures that testing C<$@> first (as recommended by the
408documentation) always returns the correct result.
409
83f29afa
VP
410=item *
411
412The array iterator used for the C<each @array> construct is now correctly
413reset when C<@array> is cleared (RT #75596). This happens for example when the
414array is globally assigned to, as in C<@array = (...)>, but not when its
415B<values> are assigned to. In terms of the XS API, it means that C<av_clear()>
416will now reset the iterator.
417
418This mirrors the behaviour of the hash iterator when the hash is cleared.
419
0938f143
JL
420=item *
421
422C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return
423correct results, regardless of whether that package referred to by C<$class>
424exists [perl #47113].
425
72267260
JL
426=item *
427
428Arriving signals no longer clear C<$@> [perl #45173].
429
7a251f7a
JL
430=item *
431
432Allow C<my ()> declarations with an empty variable list [perl #113554].
433
21247d85
FC
434=item *
435
436During parsing, subs declared after errors no longer leave stubs
437[perl #113712].
438
2e4f8b82
FC
439=item *
440
c95d4104
FC
441Closures containing no string evals no longer hang on to their containing
442subroutines, allowing variables closed over by outer subroutines to be
443freed when the outer sub is freed, even if the inner sub still exists
444[perl #89544].
445
788505db
FC
446=item *
447
448Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode
449stopped working properly in 5.16.0. It was causing the new handle to
450reference a different scalar variable. This has been fixed [perl #113764].
451
2c2b9cf4
FC
452=item *
453
454C<qr//> expressions no longer crash with custom regular expression engines
455that do not set C<offs> at regular expression compilation time
456[perl #112962].
457
e128ab2c
DM
458=back
459
e96e0834 460=head1 Known Problems
dbc84d79 461
e96e0834
JL
462XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
463tests that had to be C<TODO>ed for the release would be noted here. Unfixed
464platform specific bugs also go here.
53de3ff0 465
e96e0834 466[ List each fix as a =item entry ]
233bba44
JL
467
468=over 4
469
470=item *
471
e96e0834 472XXX
233bba44 473
e96e0834 474=back
233bba44 475
e96e0834 476=head1 Obituary
233bba44 477
e96e0834
JL
478XXX If any significant core contributor has died, we've added a short obituary
479here.
233bba44 480
61174fb5 481=head1 Acknowledgements
d5dc7001 482
e96e0834
JL
483XXX Generate this with:
484
485 perl Porting/acknowledgements.pl v5.17.1..HEAD
29cf780c 486
44691e6f
AB
487=head1 Reporting Bugs
488
489If you find what you think is a bug, you might check the articles
52deee2e 490recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
491bug database at http://rt.perl.org/perlbug/ . There may also be
492information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
493
494If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
495program included with your release. Be sure to trim your bug down
496to a tiny but sufficient test case. Your bug report, along with the
497output of C<perl -V>, will be sent off to perlbug@perl.org to be
498analysed by the Perl porting team.
44691e6f
AB
499
500If the bug you are reporting has security implications, which make it
f9001595
RS
501inappropriate to send to a publicly archived mailing list, then please send
502it to perl5-security-report@perl.org. This points to a closed subscription
503unarchived mailing list, which includes
504all the core committers, who will be able
505to help assess the impact of issues, figure out a resolution, and help
506co-ordinate the release of patches to mitigate or fix the problem across all
507platforms on which Perl is supported. Please only use this address for
508security issues in the Perl core, not for modules independently
509distributed on CPAN.
44691e6f
AB
510
511=head1 SEE ALSO
512
52deee2e
DR
513The F<Changes> file for an explanation of how to view exhaustive details
514on what changed.
44691e6f
AB
515
516The F<INSTALL> file for how to build Perl.
517
518The F<README> file for general stuff.
519
520The F<Artistic> and F<Copying> files for copyright information.
521
522=cut