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