This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for B::COP::stashoff
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
61174fb5
Z
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
7
8perldelta - what is new for perl v5.17.1
27f00e3d 9
f9001595 10=head1 DESCRIPTION
2630d42b 11
61174fb5
Z
12This document describes differences between the 5.17.0 release and
13the 5.17.1 release.
7620cb10 14
f9001595 15If you are upgrading from an earlier release such as 5.16.0, first read
61174fb5
Z
16L<perl5170delta>, which describes differences between 5.16.0 and
175.17.0.
d7c042c9 18
61174fb5 19=head1 Notice
2e2b2571 20
61174fb5 21XXX Any important notices here
417a992d 22
61174fb5 23=head1 Core Enhancements
417a992d 24
61174fb5
Z
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.
417a992d 28
61174fb5 29[ List each enhancement as a =head2 entry ]
075b9d7d 30
028c8719
FC
31=head2 More CORE:: subs
32
33Several more built-in functions have been added as subroutines to the
34CORE:: namespace, namely, those non-overridable keywords that can be
35implemented without custom parsers: C<defined>, C<delete>, C<exists>,
36C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, C<undef>,
37
38As some of these have prototypes, C<prototype('CORE::...')> has been
39changed not to make a distinction between overridable and non-overridable
40keywords. This is to make C<prototype('CORE::pos')> consistent with
41C<prototype(&CORE::pos)>.
42
61174fb5 43=head1 Security
075b9d7d 44
61174fb5
Z
45XXX Any security-related notices go here. In particular, any security
46vulnerabilities closed should be noted here rather than in the
47L</Selected Bug Fixes> section.
cadced9f 48
61174fb5 49[ List each security issue as a =head2 entry ]
30608892 50
61174fb5 51=head1 Incompatible Changes
30608892 52
61174fb5 53XXX For a release on a stable branch, this section aspires to be:
05c8f9ed 54
61174fb5
Z
55 There are no changes intentionally incompatible with 5.XXX.XXX
56 If any exist, they are bugs, and we request that you submit a
57 report. See L</Reporting Bugs> below.
05c8f9ed 58
fe3193b5
KW
59=head2 C<\N{BELL}> now refers to U+1F514 instead of U+0007
60
61Unicode 6.0 reused the name "BELL" for a different code point than it
62traditionally had meant. Since Perl v5.14, use of this name still
63referred to U+0007, but would raise a deprecated warning. Now, "BELL"
64refers to U+1F514, and the name for U+0007 is "ALERT". All the
65functions in L<charnames> have been correspondingly updated.
05c8f9ed 66
61174fb5 67=head1 Deprecations
ef7131e9 68
61174fb5
Z
69XXX Any deprecated features, syntax, modules etc. should be listed here.
70In particular, deprecated modules should be listed here even if they are
71listed as an updated module in the L</Modules and Pragmata> section.
ef7131e9 72
61174fb5 73[ List each deprecation as a =head2 entry ]
ef7131e9 74
61174fb5 75=head1 Performance Enhancements
95ce428c 76
61174fb5
Z
77XXX Changes which enhance performance without changing behaviour go here. There
78may well be none in a stable release.
c11980ad 79
61174fb5 80[ List each enhancement as a =item entry ]
05c8f9ed 81
f9001595 82=over 4
75ff5956 83
2630d42b 84=item *
c11980ad 85
61174fb5 86XXX
53de3ff0 87
61174fb5 88=back
ef7131e9 89
61174fb5 90=head1 Modules and Pragmata
ef7131e9 91
61174fb5
Z
92XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
93go here. If Module::CoreList is updated, generate an initial draft of the
94following sections using F<Porting/corelist-perldelta.pl>, which prints stub
95entries to STDOUT. Results can be pasted in place of the '=head2' entries
96below. A paragraph summary for important changes should then be added by hand.
97In an ideal world, dual-life modules would have a F<Changes> file that could be
98cribbed.
ef7131e9 99
61174fb5 100[ Within each section, list entries as a =item entry ]
435b0bdb 101
61174fb5 102=head2 New Modules and Pragmata
435b0bdb 103
61174fb5 104=over 4
be8dfbf7 105
435b0bdb
FC
106=item *
107
61174fb5 108XXX
83fb037c 109
61174fb5 110=back
83fb037c 111
61174fb5 112=head2 Updated Modules and Pragmata
83fb037c 113
61174fb5 114=over 4
83fb037c
FC
115
116=item *
117
c01b3876
SH
118L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
119
120Manifest files are now correctly embedded for those versions of VC++ which
121make use of them.
122
123=item *
124
5cefbec9
FC
125L<B> has been upgraded from version 1.35 to 1.36.
126
127C<B::COP::stashlen> has been replaced with C<B::COP::stashoff>.
128
129=item *
130
4d219cc2
FC
131L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
132
133It no longer fails when trying to embed manifests on Windows
134[perl #111782, #111798].
135
136=item *
137
ff3f295c
NC
138L<File::DosGlob> has been upgraded from version 1.07 to 1.08.
139
140There are no visible changes, only minor internal refactorings.
141
142=item *
143
c506fc7e
FC
144L<File::Spec::Unix> has been upgraded from version 3.39_02 to 3.39_03.
145
146C<abs2rel> could produce incorrect results when given two relative paths or
147the root directory twice [perl #111510].
148
149=item *
150
d9661073 151L<IO> has been upgraded from version 1.25_06 to 1.25_07.
1c633914 152
d9661073 153C<sync()> can now be called on read-only file handles [perl #64772].
f558db2f 154
66aa79e2
KW
155=item *
156
99565752
NC
157L<Pod::Html> has been upgraded from version 1.15_02 to 1.16.
158
159The option C<--libpods> has been re-instated. It is deprecated, and its use
160does nothing other than issue a warning that it is no longer supported.
161
162=item *
163
d9661073
FC
164L<Unicode::UCD> has been upgraded from version 0.43 to 0.44.
165
66aa79e2
KW
166This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
167that returns all the casefolds.
168
61174fb5 169=back
f558db2f 170
61174fb5 171=head2 Removed Modules and Pragmata
e3329bf0 172
61174fb5 173=over 4
e3329bf0
FC
174
175=item *
176
61174fb5 177XXX
80b8b050 178
61174fb5 179=back
80b8b050 180
61174fb5 181=head1 Documentation
80b8b050 182
61174fb5
Z
183XXX Changes to files in F<pod/> go here. Consider grouping entries by
184file and be sure to link to the appropriate page, e.g. L<perlfunc>.
18d0dfa8 185
61174fb5 186=head2 New Documentation
843331c7 187
61174fb5 188XXX Changes which create B<new> files in F<pod/> go here.
53de3ff0 189
61174fb5 190=head3 L<XXX>
30608892 191
61174fb5 192XXX Description of the purpose of the new file here
30608892 193
61174fb5 194=head2 Changes to Existing Documentation
30608892 195
61174fb5
Z
196XXX Changes which significantly change existing files in F<pod/> go here.
197However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
198section.
c11980ad 199
61174fb5 200=head3 L<XXX>
ecd144ea 201
f9001595 202=over 4
05c8f9ed
RS
203
204=item *
205
61174fb5 206XXX Description of the change here
9dea6244 207
204b72a4 208=back
9dea6244 209
61174fb5 210=head1 Diagnostics
ef7131e9 211
61174fb5
Z
212The following additions or changes have been made to diagnostic output,
213including warnings and fatal error messages. For the complete list of
214diagnostic messages, see L<perldiag>.
ef7131e9 215
61174fb5
Z
216XXX New or changed warnings emitted by the core's C<C> code go here. Also
217include any changes in L<perldiag> that reconcile it to the C<C> code.
ef7131e9 218
61174fb5
Z
219[ Within each section, list entries as a =item entry that links to perldiag,
220 e.g.
ef7131e9 221
61174fb5 222 =item *
ef7131e9 223
61174fb5
Z
224 L<Invalid version object|perldiag/"Invalid version object">
225]
80b8b050 226
61174fb5 227=head2 New Diagnostics
80b8b050 228
61174fb5 229XXX Newly added diagnostic messages go here
80b8b050 230
61174fb5 231=head3 New Errors
80b8b050
Z
232
233=over 4
234
235=item *
236
61174fb5 237XXX L<message|perldiag/"message">
80b8b050 238
52deee2e 239=back
5dd80d85 240
f9001595 241=head3 New Warnings
05c8f9ed 242
f9001595 243=over 4
05c8f9ed
RS
244
245=item *
d5dc7001 246
61174fb5 247XXX L<message|perldiag/"message">
30608892 248
f9001595 249=back
05c8f9ed 250
61174fb5
Z
251=head2 Changes to Existing Diagnostics
252
253XXX Changes (i.e. rewording) of diagnostic messages go here
05c8f9ed 254
f9001595 255=over 4
05c8f9ed
RS
256
257=item *
258
61174fb5 259XXX Describe change here
ef7131e9 260
f9001595 261=back
05c8f9ed 262
4a301309
FC
263=head2 Removals of Diagnostics
264
265=over 4
266
a1d2df36
FC
267=item *
268
4a301309
FC
269The "Runaway prototype" warning that occurs in bizarre cases has been
270removed as being unhelpful and inconsistent.
271
272=back
273
61174fb5 274=head1 Utility Changes
05c8f9ed 275
61174fb5
Z
276XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
277here. Most of these are built within the directories F<utils> and F<x2p>.
05c8f9ed 278
61174fb5
Z
279[ List utility changes as a =head3 entry for each utility and =item
280entries for each change
281Use L<XXX> with program names to get proper documentation linking. ]
05c8f9ed 282
61174fb5 283=head3 L<XXX>
30608892 284
61174fb5 285=over 4
30608892 286
61174fb5 287=item *
30608892 288
61174fb5 289XXX
30608892 290
61174fb5 291=back
30608892 292
61174fb5 293=head1 Configuration and Compilation
30608892 294
61174fb5
Z
295XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
296go here. Any other changes to the Perl build process should be listed here.
297However, any platform-specific changes should be listed in the
298L</Platform Support> section, instead.
05c8f9ed 299
61174fb5 300[ List changes as a =item entry ].
05c8f9ed 301
f9001595 302=over 4
05c8f9ed
RS
303
304=item *
305
61174fb5 306XXX
53de3ff0 307
61174fb5 308=back
a3367fba 309
61174fb5 310=head1 Testing
a3367fba 311
61174fb5
Z
312XXX Any significant changes to the testing of a freshly built perl should be
313listed here. Changes which create B<new> files in F<t/> go here as do any
314large changes to the testing harness (e.g. when parallel testing was added).
315Changes to existing files in F<t/> aren't worth summarising, although the bugs
316that they represent may be covered elsewhere.
a3367fba 317
61174fb5 318[ List each test improvement as a =item entry ]
a3367fba 319
61174fb5 320=over 4
05c8f9ed 321
30608892
Z
322=item *
323
61174fb5 324XXX
30608892 325
f9001595 326=back
05c8f9ed 327
61174fb5 328=head1 Platform Support
05c8f9ed 329
61174fb5 330XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 331
61174fb5
Z
332[ Within the sections, list each platform as a =item entry with specific
333changes as paragraphs below it. ]
05c8f9ed 334
61174fb5 335=head2 New Platforms
e2e06450 336
61174fb5
Z
337XXX List any platforms that this version of perl compiles on, that previous
338versions did not. These will either be enabled by new files in the F<hints/>
339directories, or new subdirectories and F<README> files at the top level of the
340source tree.
b9b99128 341
61174fb5 342=over 4
b9b99128 343
61174fb5 344=item XXX-some-platform
47fb883d 345
61174fb5 346XXX
47fb883d 347
61174fb5 348=back
5f0f4bc0 349
61174fb5 350=head2 Discontinued Platforms
5f0f4bc0 351
61174fb5 352XXX List any platforms that this version of perl no longer compiles on.
ba0d99ee 353
61174fb5 354=over 4
ba0d99ee 355
61174fb5 356=item XXX-some-platform
72035cb1 357
61174fb5 358XXX
72035cb1 359
61174fb5 360=back
ceb0881c 361
61174fb5 362=head2 Platform-Specific Notes
ceb0881c 363
61174fb5
Z
364XXX List any changes for specific platforms. This could include configuration
365and compilation changes or changes in portability/compatibility. However,
366changes within modules for platforms should generally be listed in the
367L</Modules and Pragmata> section.
89cbc6b8 368
61174fb5 369=over 4
89cbc6b8 370
4aa4c0a5 371=item Win32
c6b15a5a 372
4aa4c0a5
TC
373C<link> on Win32 now attempts to set C<$!> to more appropriate values
374based on the Win32 API error code. [perl #112272]
c6b15a5a 375
61174fb5 376=back
8e125188 377
61174fb5 378=head1 Internal Changes
8e125188 379
61174fb5
Z
380XXX Changes which affect the interface available to C<XS> code go here.
381Other significant internal changes for future core maintainers should
382be noted as well.
8e125188 383
61174fb5 384[ List each change as a =item entry ]
c4643160 385
61174fb5 386=over 4
c4643160 387
422287bf
FC
388=item *
389
b7e9bef4
FC
390The C<study> function was made a no-op in 5.16. It was simply disabled via
391a C<return> statement; the code was left in place. Now the code supporting
392what C<study> used to do has been removed.
53de3ff0 393
f8ef51fd
FC
394=item *
395
396Under threaded perls, there is no longer a separate PV allocated for every
397COP to store its package name (C<< cop->stashpv >>). Instead, there is an
398offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
399holds stash pointers.
400
61174fb5 401=back
422287bf 402
61174fb5 403=head1 Selected Bug Fixes
2de6ba8d 404
61174fb5
Z
405XXX Important bug fixes in the core language are summarised here.
406Bug fixes in files in F<ext/> and F<lib/> are best summarised in
407L</Modules and Pragmata>.
2de6ba8d 408
61174fb5 409[ List each fix as a =item entry ]
52c4b146 410
61174fb5 411=over 4
52c4b146 412
9aa9a888
KW
413=item *
414
7ade940c
KW
415Perl now works as well as can be expected on all releases of Unicode so
416far. In v5.16, it worked on Unicodes 6.0 and 6.1, but there were
417various bugs for earlier releases; the older the release the more
418problems.
9aa9a888 419
701da2e9
FC
420=item *
421
422C<vec> no longer produces "uninitialized" warnings in lvalue context
423[perl #9423].
424
d67d4c0e
FC
425=item *
426
d9661073 427An optimisation involving fixed strings in regular expressions could cause
d67d4c0e
FC
428a severe performance penalty in edge cases. This has been fixed
429[perl #76546].
430
b9dc63e8
FC
431=item *
432
433The "Can't find an opnumber" message that C<prototype> produces when passed
434a string like "CORE::nonexistent_keyword" is now passes UTF8 and embedded
435nulls through unchanged [perl #97478].
436
b6d5888c
FC
437=item *
438
439Under threaded perls, a run-time code block in a regular expression could
440corrupt the package name stored in the op tree, resulting in bad reads
441in C<caller>, and possibly crashes [perl #113060].
442
d8816adc
FC
443=item *
444
445Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
446closure) no longer results in a copy of the subroutine (or assertion
447failures on debugging builds).
448
9b9df0bb
FC
449=item *
450
451C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
452the current package has been assigned over (as in
453C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
454
b16ca463
FC
455=item *
456
457If a package is deleted by code that it calls, it is possible for C<caller>
458to see a stack frame belonging to that deleted package. C<caller> could
459crash if the stash's memory address was reused for a scalar and a
460substitution was performed on the same scalar [perl #113486].
461
61174fb5 462=back
53de3ff0 463
61174fb5 464=head1 Known Problems
53de3ff0 465
61174fb5
Z
466XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
467tests that had to be C<TODO>ed for the release would be noted here, unless
468they were specific to a particular platform (see below).
53de3ff0 469
61174fb5
Z
470This is a list of some significant unfixed bugs, which are regressions
471from either 5.XXX.XXX or 5.XXX.XXX.
53de3ff0 472
61174fb5 473[ List each fix as a =item entry ]
80b8b050 474
61174fb5 475=over 4
80b8b050 476
eb3d0a58
LT
477=item *
478
61174fb5 479XXX
eb3d0a58 480
2630d42b 481=back
e2e06450 482
61174fb5 483=head1 Obituary
c0154fe2 484
61174fb5
Z
485XXX If any significant core contributor has died, we've added a short obituary
486here.
d5dc7001 487
61174fb5 488=head1 Acknowledgements
d5dc7001 489
61174fb5 490XXX Generate this with:
f9001595 491
61174fb5 492 perl Porting/acknowledgements.pl v5.17.0..HEAD
29cf780c 493
44691e6f
AB
494=head1 Reporting Bugs
495
496If you find what you think is a bug, you might check the articles
52deee2e 497recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
498bug database at http://rt.perl.org/perlbug/ . There may also be
499information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
500
501If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
502program included with your release. Be sure to trim your bug down
503to a tiny but sufficient test case. Your bug report, along with the
504output of C<perl -V>, will be sent off to perlbug@perl.org to be
505analysed by the Perl porting team.
44691e6f
AB
506
507If the bug you are reporting has security implications, which make it
f9001595
RS
508inappropriate to send to a publicly archived mailing list, then please send
509it to perl5-security-report@perl.org. This points to a closed subscription
510unarchived mailing list, which includes
511all the core committers, who will be able
512to help assess the impact of issues, figure out a resolution, and help
513co-ordinate the release of patches to mitigate or fix the problem across all
514platforms on which Perl is supported. Please only use this address for
515security issues in the Perl core, not for modules independently
516distributed on CPAN.
44691e6f
AB
517
518=head1 SEE ALSO
519
52deee2e
DR
520The F<Changes> file for an explanation of how to view exhaustive details
521on what changed.
44691e6f
AB
522
523The F<INSTALL> file for how to build Perl.
524
525The F<README> file for general stuff.
526
527The F<Artistic> and F<Copying> files for copyright information.
528
529=cut