This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for undef *_, &CORE::time crash
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
f9001595
RS
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
2630d42b 7
f9001595 8perldelta - what is new for perl v5.17.0
27f00e3d 9
f9001595 10=head1 DESCRIPTION
2630d42b 11
f9001595
RS
12This document describes differences between the 5.16.0 release and
13the 5.17.0 release.
7620cb10 14
f9001595
RS
15If you are upgrading from an earlier release such as 5.16.0, first read
16L<perl5160delta>, which describes differences between 5.15.0 and
175.16.0.
d7c042c9 18
f9001595 19=head1 Notice
d7c042c9 20
f9001595 21XXX Any important notices here
d7c042c9 22
f9001595 23=head1 Core Enhancements
985213f2 24
f9001595
RS
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.
977c1d31 28
f9001595 29[ List each enhancement as a =head2 entry ]
977c1d31 30
f9001595 31=head1 Security
985213f2 32
f9001595
RS
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.
985213f2 36
f9001595 37[ List each security issue as a =head2 entry ]
2e2b2571 38
f9001595 39=head1 Incompatible Changes
2e2b2571 40
f9001595 41XXX For a release on a stable branch, this section aspires to be:
b240fc0f 42
f9001595
RS
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.
27f00e3d 46
f9001595 47[ List each incompatible change as a =head2 entry ]
27f00e3d 48
f9001595 49=head1 Deprecations
cadced9f 50
f9001595
RS
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.
cadced9f 54
f9001595 55[ List each deprecation as a =head2 entry ]
05c8f9ed 56
f9001595 57=head1 Performance Enhancements
05c8f9ed 58
f9001595
RS
59XXX Changes which enhance performance without changing behaviour go here. There
60may well be none in a stable release.
632c5d30 61
f9001595 62[ List each enhancement as a =item entry ]
632c5d30 63
f9001595 64=over 4
05c8f9ed
RS
65
66=item *
67
f9001595 68XXX
95ce428c 69
2630d42b 70=back
95ce428c 71
f9001595 72=head1 Modules and Pragmata
c11980ad 73
f9001595
RS
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.
c88a046d 81
f9001595 82[ Within each section, list entries as a =item entry ]
6c69e197 83
f9001595 84=head2 New Modules and Pragmata
c88a046d 85
f9001595 86=over 4
c88a046d
A
87
88=item *
89
f9001595 90XXX
c88a046d 91
2630d42b 92=back
c88a046d 93
f9001595 94=head2 Updated Modules and Pragmata
05c8f9ed 95
f9001595 96=over 4
75ff5956 97
2630d42b 98=item *
c11980ad 99
435b0bdb
FC
100L<File::stat> has been upgraded from version 1.05 to 1.06.
101
102C<File::stat> ignores the L<filetest> pragma, and warns when used in
103combination therewith. But it was not warning for C<-r>. This has been
104fixed [perl #111640].
105
be8dfbf7
FC
106C<-p> now works, and does not return false for pipes [perl #111638].
107
435b0bdb
FC
108=item *
109
110L<Hash::Util> has been upgraded from version 0.11 to 0.12.
83fb037c
FC
111
112C<hash_unlocked> and C<hashref_unlocked> now returns true if the hash is
113unlocked, instead of always returning false [perl #112126].
114
115C<hash_unlocked>, C<hashref_unlocked>, C<lock_hash_recurse> and
116C<unlock_hash_recurse> are now exportable [perl #112126].
117
118Two new functions, C<hash_locked> and C<hashref_locked>, have been added.
119Oddly enough, these two functions were already exported, even though they
120did not exist [perl #112126].
121
122=item *
123
e3329bf0
FC
124L<overload> has been upgraded from version 1.18 to 1.19.
125
126C<no overload> now warns for invalid arguments, just like C<use overload>.
127
128=item *
129
435b0bdb 130L<Storable> has been upgraded from version 2.34 to 2.35.
18d0dfa8
FC
131
132Modifying C<$_[0]> within C<STORABLE_freeze> no longer results in crashes
133[perl #112358].
843331c7 134
2630d42b 135=back
c11980ad 136
f9001595 137=head2 Removed Modules and Pragmata
ecd144ea 138
f9001595 139=over 4
05c8f9ed
RS
140
141=item *
142
f9001595 143XXX
9dea6244 144
204b72a4 145=back
9dea6244 146
f9001595 147=head1 Documentation
2a7afa74 148
f9001595
RS
149XXX Changes to files in F<pod/> go here. Consider grouping entries by
150file and be sure to link to the appropriate page, e.g. L<perlfunc>.
e9e4ee62 151
f9001595 152=head2 New Documentation
937a45d0 153
f9001595 154XXX Changes which create B<new> files in F<pod/> go here.
ef337e16 155
f9001595 156=head3 L<XXX>
ef337e16 157
f9001595 158XXX Description of the purpose of the new file here
679b54e7 159
f9001595 160=head2 Changes to Existing Documentation
39de7394 161
f9001595
RS
162XXX Changes which significantly change existing files in F<pod/> go here.
163However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
164section.
2630d42b 165
f9001595 166=head3 L<XXX>
2630d42b 167
f9001595 168=over 4
52272450 169
84ecb73f
S
170=item *
171
f9001595 172XXX Description of the change here
84ecb73f 173
52deee2e 174=back
5dd80d85 175
f9001595 176=head1 Diagnostics
52272450 177
f9001595
RS
178The following additions or changes have been made to diagnostic output,
179including warnings and fatal error messages. For the complete list of
180diagnostic messages, see L<perldiag>.
249950d7 181
f9001595
RS
182XXX New or changed warnings emitted by the core's C<C> code go here. Also
183include any changes in L<perldiag> that reconcile it to the C<C> code.
05c8f9ed 184
f9001595
RS
185[ Within each section, list entries as a =item entry that links to perldiag,
186 e.g.
a1d95121 187
f9001595 188 =item *
977c1d31 189
f9001595
RS
190 L<Invalid version object|perldiag/"Invalid version object">
191]
977c1d31 192
f9001595 193=head2 New Diagnostics
05c8f9ed 194
f9001595 195XXX Newly added diagnostic messages go here
05c8f9ed 196
f9001595 197=head3 New Errors
977c1d31 198
f9001595 199=over 4
39ea6a4b 200
05c8f9ed
RS
201=item *
202
f9001595 203XXX L<message|perldiag/"message">
39ea6a4b 204
977c1d31 205=back
ea317ccb 206
f9001595 207=head3 New Warnings
05c8f9ed 208
f9001595 209=over 4
05c8f9ed
RS
210
211=item *
d5dc7001 212
f9001595 213XXX L<message|perldiag/"message">
d5dc7001 214
2630d42b 215=back
d5dc7001 216
f9001595 217=head2 Changes to Existing Diagnostics
05c8f9ed 218
f9001595 219XXX Changes (i.e. rewording) of diagnostic messages go here
05c8f9ed 220
f9001595 221=over 4
05c8f9ed
RS
222
223=item *
224
f9001595 225XXX Describe change here
05c8f9ed 226
f9001595 227=back
05c8f9ed 228
f9001595 229=head1 Utility Changes
05c8f9ed 230
f9001595
RS
231XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
232here. Most of these are built within the directories F<utils> and F<x2p>.
05c8f9ed 233
f9001595
RS
234[ List utility changes as a =head3 entry for each utility and =item
235entries for each change
236Use L<XXX> with program names to get proper documentation linking. ]
05c8f9ed 237
f9001595 238=head3 L<XXX>
05c8f9ed 239
f9001595 240=over 4
05c8f9ed
RS
241
242=item *
243
f9001595 244XXX
05c8f9ed 245
f9001595 246=back
05c8f9ed 247
f9001595 248=head1 Configuration and Compilation
05c8f9ed 249
f9001595
RS
250XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
251go here. Any other changes to the Perl build process should be listed here.
252However, any platform-specific changes should be listed in the
253L</Platform Support> section, instead.
05c8f9ed 254
f9001595 255[ List changes as a =item entry ].
05c8f9ed 256
f9001595 257=over 4
05c8f9ed
RS
258
259=item *
260
f9001595 261XXX
05c8f9ed 262
f9001595 263=back
05c8f9ed 264
f9001595 265=head1 Testing
05c8f9ed 266
f9001595
RS
267XXX Any significant changes to the testing of a freshly built perl should be
268listed here. Changes which create B<new> files in F<t/> go here as do any
269large changes to the testing harness (e.g. when parallel testing was added).
270Changes to existing files in F<t/> aren't worth summarising, although the bugs
271that they represent may be covered elsewhere.
05c8f9ed 272
f9001595 273[ List each test improvement as a =item entry ]
05c8f9ed 274
f9001595 275=over 4
05c8f9ed
RS
276
277=item *
278
f9001595 279XXX
05c8f9ed 280
f9001595 281=back
05c8f9ed 282
f9001595 283=head1 Platform Support
05c8f9ed 284
f9001595 285XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 286
f9001595
RS
287[ Within the sections, list each platform as a =item entry with specific
288changes as paragraphs below it. ]
05c8f9ed 289
f9001595 290=head2 New Platforms
05c8f9ed 291
f9001595
RS
292XXX List any platforms that this version of perl compiles on, that previous
293versions did not. These will either be enabled by new files in the F<hints/>
294directories, or new subdirectories and F<README> files at the top level of the
295source tree.
05c8f9ed 296
f9001595 297=over 4
05c8f9ed 298
f9001595 299=item XXX-some-platform
05c8f9ed 300
f9001595 301XXX
05c8f9ed 302
f9001595 303=back
05c8f9ed 304
f9001595 305=head2 Discontinued Platforms
05c8f9ed 306
f9001595 307XXX List any platforms that this version of perl no longer compiles on.
05c8f9ed 308
f9001595 309=over 4
05c8f9ed 310
f9001595 311=item XXX-some-platform
05c8f9ed 312
f9001595 313XXX
05c8f9ed 314
f9001595 315=back
05c8f9ed 316
f9001595 317=head2 Platform-Specific Notes
05c8f9ed 318
f9001595
RS
319XXX List any changes for specific platforms. This could include configuration
320and compilation changes or changes in portability/compatibility. However,
321changes within modules for platforms should generally be listed in the
322L</Modules and Pragmata> section.
05c8f9ed 323
f9001595 324=over 4
05c8f9ed 325
f9001595 326=item XXX-some-platform
05c8f9ed 327
f9001595 328XXX
05c8f9ed 329
f9001595 330=back
05c8f9ed 331
f9001595 332=head1 Internal Changes
05c8f9ed 333
f9001595
RS
334XXX Changes which affect the interface available to C<XS> code go here.
335Other significant internal changes for future core maintainers should
336be noted as well.
05c8f9ed 337
f9001595 338[ List each change as a =item entry ]
05c8f9ed 339
f9001595 340=over 4
05c8f9ed
RS
341
342=item *
343
a3367fba
FC
344The C<SVf_AMAGIC> flag to indicate overloading is now on the stash, not the
345object. It is now set automatically whenever a method or @ISA changes, so
346its meaning has changed, too. It now means "potentially overloaded". When
347the overload table is calculated, the flag is automatically turned off if
348there is no overloading, so there should be no noticeable slowdown.
349
350The staleness of the overload tables is now checked when overload methods
351are invoked, rather than during C<bless>.
352
353"A" magic is gone. The changes to the handling of the C<SVf_AMAGIC> flag
354eliminate the need for it.
355
356The core no longer increments C<PL_amagic_generation> (it doesn't need to).
357But an XS module can still increment it to mark all overload tables as
358stale. (It is still not part of the API, though.) Do not rely on this.
359It may be deleted in the next release.
360
361The fallback overload setting is now stored in its own stash entry, called
362"(fallback".
05c8f9ed 363
f9001595 364=back
05c8f9ed 365
f9001595 366=head1 Selected Bug Fixes
05c8f9ed 367
f9001595
RS
368XXX Important bug fixes in the core language are summarised here.
369Bug fixes in files in F<ext/> and F<lib/> are best summarised in
370L</Modules and Pragmata>.
e2e06450 371
f9001595 372[ List each fix as a =item entry ]
e2e06450 373
f9001595 374=over 4
05c8f9ed
RS
375
376=item *
377
cba2262a
FC
378C<goto ''> now looks for an empty label, producing the "goto must have
379label" error message, instead of exiting the program [perl #111794].
e2e06450 380
b9b99128
FC
381=item *
382
383C<goto "\0"> now dies with "Can't find label" instead of "goto must have
384label".
385
47fb883d
FC
386=item *
387
388The C function C<hv_store> used to result in crashes when used on C<%^H>
389[perl #111000].
390
5f0f4bc0
FC
391=item *
392
393A call checker attached to a closure prototype via C<cv_set_call_checker>
394is now copied to closures cloned from it. So C<cv_set_call_checker> now
395works inside an attribute handler for a closure.
396
ba0d99ee
FC
397=item *
398
399Writing to C<$^N> used to have no effect. Now it croaks with "Modification
400of a read-only value" by default, but that can be overridden by a custom
401regular expression engine, as with C<$1> [perl #112184].
402
72035cb1
FC
403=item *
404
405C<undef> on a control character glob (C<undef *^H>) no longer emits an
406erroneous warning about ambiguity [perl #112456].
407
ceb0881c
FC
408=item *
409
410For efficiency's sake, many operators and built-in functions return the
411same scalar each time. Lvalue subroutines and subroutines in the CORE::
412namespace were allowing this implementation detail to leak through.
413C<print &CORE::uc("a"), &CORE::uc("b")> used to print "BB". The same thing
414would happen with an lvalue subroutine returning the return value of C<uc>.
415Now the value is copied in such cases.
416
89cbc6b8
FC
417=item *
418
419C<method {}> syntax with an empty block or a block returning an empty list
420used to crash or use some random value left on the stack as its invocant.
421Now it produces an error.
422
c6b15a5a
FC
423=item *
424
425C<vec> now works with extremely large offsets (>2 GB) [perl #111730].
426
8e125188
FC
427=item *
428
429Changes to overload settings now take effect immediately, as do changes to
430inheritance that affect overloading. They used to take effect only after
431C<bless>.
432
433Objects that were created before a class had any overloading used to remain
434non-overloaded even if the class gained overloading through C<use overload>
435or @ISA changes, and even after C<bless>. This has been fixed
436[perl #112708].
437
c4643160
FC
438=item *
439
440Classes with overloading can now inherit fallback values.
441
422287bf
FC
442=item *
443
444C<pos> now croaks with hash and array arguments, instead of producing
445erroneous warnings.
446
2de6ba8d
FC
447=item *
448
449C<while(each %h)> now implies C<while(defined($_ = each %h))>, like
450C<readline> and C<readdir>.
451
52c4b146
FC
452=item *
453
454Subs in the CORE:: namespace no longer crash after C<undef *_> when called
455with no argument list (C<&CORE::time> with no parentheses).
456
2630d42b 457=back
e2e06450 458
2630d42b 459=head1 Known Problems
e2e06450 460
f9001595
RS
461XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
462tests that had to be C<TODO>ed for the release would be noted here, unless
463they were specific to a particular platform (see below).
fcc3aaa8 464
f9001595
RS
465This is a list of some significant unfixed bugs, which are regressions
466from either 5.XXX.XXX or 5.XXX.XXX.
05c8f9ed 467
f9001595 468[ List each fix as a =item entry ]
05c8f9ed 469
f9001595 470=over 4
05c8f9ed
RS
471
472=item *
473
f9001595 474XXX
c0154fe2 475
05c8f9ed 476=back
d5dc7001 477
f9001595
RS
478=head1 Obituary
479
480XXX If any significant core contributor has died, we've added a short obituary
481here.
d5dc7001 482
2630d42b 483=head1 Acknowledgements
d5dc7001 484
f9001595
RS
485XXX Generate this with:
486
487 perl Porting/acknowledgements.pl v5.16.0..HEAD
29cf780c 488
44691e6f
AB
489=head1 Reporting Bugs
490
491If you find what you think is a bug, you might check the articles
52deee2e 492recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
493bug database at http://rt.perl.org/perlbug/ . There may also be
494information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
495
496If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
497program included with your release. Be sure to trim your bug down
498to a tiny but sufficient test case. Your bug report, along with the
499output of C<perl -V>, will be sent off to perlbug@perl.org to be
500analysed by the Perl porting team.
44691e6f
AB
501
502If the bug you are reporting has security implications, which make it
f9001595
RS
503inappropriate to send to a publicly archived mailing list, then please send
504it to perl5-security-report@perl.org. This points to a closed subscription
505unarchived mailing list, which includes
506all the core committers, who will be able
507to help assess the impact of issues, figure out a resolution, and help
508co-ordinate the release of patches to mitigate or fix the problem across all
509platforms on which Perl is supported. Please only use this address for
510security issues in the Perl core, not for modules independently
511distributed on CPAN.
44691e6f
AB
512
513=head1 SEE ALSO
514
52deee2e
DR
515The F<Changes> file for an explanation of how to view exhaustive details
516on what changed.
44691e6f
AB
517
518The F<INSTALL> file for how to build Perl.
519
520The F<README> file for general stuff.
521
522The F<Artistic> and F<Copying> files for copyright information.
523
524=cut