This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for caller crashing on SvOOK str
[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
4d219cc2
FC
125L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
126
127It no longer fails when trying to embed manifests on Windows
128[perl #111782, #111798].
129
130=item *
131
ff3f295c
NC
132L<File::DosGlob> has been upgraded from version 1.07 to 1.08.
133
134There are no visible changes, only minor internal refactorings.
135
136=item *
137
c506fc7e
FC
138L<File::Spec::Unix> has been upgraded from version 3.39_02 to 3.39_03.
139
140C<abs2rel> could produce incorrect results when given two relative paths or
141the root directory twice [perl #111510].
142
143=item *
144
d9661073 145L<IO> has been upgraded from version 1.25_06 to 1.25_07.
1c633914 146
d9661073 147C<sync()> can now be called on read-only file handles [perl #64772].
f558db2f 148
66aa79e2
KW
149=item *
150
99565752
NC
151L<Pod::Html> has been upgraded from version 1.15_02 to 1.16.
152
153The option C<--libpods> has been re-instated. It is deprecated, and its use
154does nothing other than issue a warning that it is no longer supported.
155
156=item *
157
d9661073
FC
158L<Unicode::UCD> has been upgraded from version 0.43 to 0.44.
159
66aa79e2
KW
160This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
161that returns all the casefolds.
162
61174fb5 163=back
f558db2f 164
61174fb5 165=head2 Removed Modules and Pragmata
e3329bf0 166
61174fb5 167=over 4
e3329bf0
FC
168
169=item *
170
61174fb5 171XXX
80b8b050 172
61174fb5 173=back
80b8b050 174
61174fb5 175=head1 Documentation
80b8b050 176
61174fb5
Z
177XXX Changes to files in F<pod/> go here. Consider grouping entries by
178file and be sure to link to the appropriate page, e.g. L<perlfunc>.
18d0dfa8 179
61174fb5 180=head2 New Documentation
843331c7 181
61174fb5 182XXX Changes which create B<new> files in F<pod/> go here.
53de3ff0 183
61174fb5 184=head3 L<XXX>
30608892 185
61174fb5 186XXX Description of the purpose of the new file here
30608892 187
61174fb5 188=head2 Changes to Existing Documentation
30608892 189
61174fb5
Z
190XXX Changes which significantly change existing files in F<pod/> go here.
191However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
192section.
c11980ad 193
61174fb5 194=head3 L<XXX>
ecd144ea 195
f9001595 196=over 4
05c8f9ed
RS
197
198=item *
199
61174fb5 200XXX Description of the change here
9dea6244 201
204b72a4 202=back
9dea6244 203
61174fb5 204=head1 Diagnostics
ef7131e9 205
61174fb5
Z
206The following additions or changes have been made to diagnostic output,
207including warnings and fatal error messages. For the complete list of
208diagnostic messages, see L<perldiag>.
ef7131e9 209
61174fb5
Z
210XXX New or changed warnings emitted by the core's C<C> code go here. Also
211include any changes in L<perldiag> that reconcile it to the C<C> code.
ef7131e9 212
61174fb5
Z
213[ Within each section, list entries as a =item entry that links to perldiag,
214 e.g.
ef7131e9 215
61174fb5 216 =item *
ef7131e9 217
61174fb5
Z
218 L<Invalid version object|perldiag/"Invalid version object">
219]
80b8b050 220
61174fb5 221=head2 New Diagnostics
80b8b050 222
61174fb5 223XXX Newly added diagnostic messages go here
80b8b050 224
61174fb5 225=head3 New Errors
80b8b050
Z
226
227=over 4
228
229=item *
230
61174fb5 231XXX L<message|perldiag/"message">
80b8b050 232
52deee2e 233=back
5dd80d85 234
f9001595 235=head3 New Warnings
05c8f9ed 236
f9001595 237=over 4
05c8f9ed
RS
238
239=item *
d5dc7001 240
61174fb5 241XXX L<message|perldiag/"message">
30608892 242
f9001595 243=back
05c8f9ed 244
61174fb5
Z
245=head2 Changes to Existing Diagnostics
246
247XXX Changes (i.e. rewording) of diagnostic messages go here
05c8f9ed 248
f9001595 249=over 4
05c8f9ed
RS
250
251=item *
252
61174fb5 253XXX Describe change here
ef7131e9 254
f9001595 255=back
05c8f9ed 256
4a301309
FC
257=head2 Removals of Diagnostics
258
259=over 4
260
a1d2df36
FC
261=item *
262
4a301309
FC
263The "Runaway prototype" warning that occurs in bizarre cases has been
264removed as being unhelpful and inconsistent.
265
266=back
267
61174fb5 268=head1 Utility Changes
05c8f9ed 269
61174fb5
Z
270XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
271here. Most of these are built within the directories F<utils> and F<x2p>.
05c8f9ed 272
61174fb5
Z
273[ List utility changes as a =head3 entry for each utility and =item
274entries for each change
275Use L<XXX> with program names to get proper documentation linking. ]
05c8f9ed 276
61174fb5 277=head3 L<XXX>
30608892 278
61174fb5 279=over 4
30608892 280
61174fb5 281=item *
30608892 282
61174fb5 283XXX
30608892 284
61174fb5 285=back
30608892 286
61174fb5 287=head1 Configuration and Compilation
30608892 288
61174fb5
Z
289XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
290go here. Any other changes to the Perl build process should be listed here.
291However, any platform-specific changes should be listed in the
292L</Platform Support> section, instead.
05c8f9ed 293
61174fb5 294[ List changes as a =item entry ].
05c8f9ed 295
f9001595 296=over 4
05c8f9ed
RS
297
298=item *
299
61174fb5 300XXX
53de3ff0 301
61174fb5 302=back
a3367fba 303
61174fb5 304=head1 Testing
a3367fba 305
61174fb5
Z
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.
a3367fba 311
61174fb5 312[ List each test improvement as a =item entry ]
a3367fba 313
61174fb5 314=over 4
05c8f9ed 315
30608892
Z
316=item *
317
61174fb5 318XXX
30608892 319
f9001595 320=back
05c8f9ed 321
61174fb5 322=head1 Platform Support
05c8f9ed 323
61174fb5 324XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 325
61174fb5
Z
326[ Within the sections, list each platform as a =item entry with specific
327changes as paragraphs below it. ]
05c8f9ed 328
61174fb5 329=head2 New Platforms
e2e06450 330
61174fb5
Z
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.
b9b99128 335
61174fb5 336=over 4
b9b99128 337
61174fb5 338=item XXX-some-platform
47fb883d 339
61174fb5 340XXX
47fb883d 341
61174fb5 342=back
5f0f4bc0 343
61174fb5 344=head2 Discontinued Platforms
5f0f4bc0 345
61174fb5 346XXX List any platforms that this version of perl no longer compiles on.
ba0d99ee 347
61174fb5 348=over 4
ba0d99ee 349
61174fb5 350=item XXX-some-platform
72035cb1 351
61174fb5 352XXX
72035cb1 353
61174fb5 354=back
ceb0881c 355
61174fb5 356=head2 Platform-Specific Notes
ceb0881c 357
61174fb5
Z
358XXX List any changes for specific platforms. This could include configuration
359and compilation changes or changes in portability/compatibility. However,
360changes within modules for platforms should generally be listed in the
361L</Modules and Pragmata> section.
89cbc6b8 362
61174fb5 363=over 4
89cbc6b8 364
4aa4c0a5 365=item Win32
c6b15a5a 366
4aa4c0a5
TC
367C<link> on Win32 now attempts to set C<$!> to more appropriate values
368based on the Win32 API error code. [perl #112272]
c6b15a5a 369
61174fb5 370=back
8e125188 371
61174fb5 372=head1 Internal Changes
8e125188 373
61174fb5
Z
374XXX Changes which affect the interface available to C<XS> code go here.
375Other significant internal changes for future core maintainers should
376be noted as well.
8e125188 377
61174fb5 378[ List each change as a =item entry ]
c4643160 379
61174fb5 380=over 4
c4643160 381
422287bf
FC
382=item *
383
b7e9bef4
FC
384The C<study> function was made a no-op in 5.16. It was simply disabled via
385a C<return> statement; the code was left in place. Now the code supporting
386what C<study> used to do has been removed.
53de3ff0 387
f8ef51fd
FC
388=item *
389
390Under threaded perls, there is no longer a separate PV allocated for every
391COP to store its package name (C<< cop->stashpv >>). Instead, there is an
392offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
393holds stash pointers.
394
61174fb5 395=back
422287bf 396
61174fb5 397=head1 Selected Bug Fixes
2de6ba8d 398
61174fb5
Z
399XXX Important bug fixes in the core language are summarised here.
400Bug fixes in files in F<ext/> and F<lib/> are best summarised in
401L</Modules and Pragmata>.
2de6ba8d 402
61174fb5 403[ List each fix as a =item entry ]
52c4b146 404
61174fb5 405=over 4
52c4b146 406
9aa9a888
KW
407=item *
408
7ade940c
KW
409Perl now works as well as can be expected on all releases of Unicode so
410far. In v5.16, it worked on Unicodes 6.0 and 6.1, but there were
411various bugs for earlier releases; the older the release the more
412problems.
9aa9a888 413
701da2e9
FC
414=item *
415
416C<vec> no longer produces "uninitialized" warnings in lvalue context
417[perl #9423].
418
d67d4c0e
FC
419=item *
420
d9661073 421An optimisation involving fixed strings in regular expressions could cause
d67d4c0e
FC
422a severe performance penalty in edge cases. This has been fixed
423[perl #76546].
424
b9dc63e8
FC
425=item *
426
427The "Can't find an opnumber" message that C<prototype> produces when passed
428a string like "CORE::nonexistent_keyword" is now passes UTF8 and embedded
429nulls through unchanged [perl #97478].
430
b6d5888c
FC
431=item *
432
433Under threaded perls, a run-time code block in a regular expression could
434corrupt the package name stored in the op tree, resulting in bad reads
435in C<caller>, and possibly crashes [perl #113060].
436
d8816adc
FC
437=item *
438
439Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
440closure) no longer results in a copy of the subroutine (or assertion
441failures on debugging builds).
442
9b9df0bb
FC
443=item *
444
445C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
446the current package has been assigned over (as in
447C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
448
b16ca463
FC
449=item *
450
451If a package is deleted by code that it calls, it is possible for C<caller>
452to see a stack frame belonging to that deleted package. C<caller> could
453crash if the stash's memory address was reused for a scalar and a
454substitution was performed on the same scalar [perl #113486].
455
61174fb5 456=back
53de3ff0 457
61174fb5 458=head1 Known Problems
53de3ff0 459
61174fb5
Z
460XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
461tests that had to be C<TODO>ed for the release would be noted here, unless
462they were specific to a particular platform (see below).
53de3ff0 463
61174fb5
Z
464This is a list of some significant unfixed bugs, which are regressions
465from either 5.XXX.XXX or 5.XXX.XXX.
53de3ff0 466
61174fb5 467[ List each fix as a =item entry ]
80b8b050 468
61174fb5 469=over 4
80b8b050 470
eb3d0a58
LT
471=item *
472
61174fb5 473XXX
eb3d0a58 474
2630d42b 475=back
e2e06450 476
61174fb5 477=head1 Obituary
c0154fe2 478
61174fb5
Z
479XXX If any significant core contributor has died, we've added a short obituary
480here.
d5dc7001 481
61174fb5 482=head1 Acknowledgements
d5dc7001 483
61174fb5 484XXX Generate this with:
f9001595 485
61174fb5 486 perl Porting/acknowledgements.pl v5.17.0..HEAD
29cf780c 487
44691e6f
AB
488=head1 Reporting Bugs
489
490If you find what you think is a bug, you might check the articles
52deee2e 491recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
492bug database at http://rt.perl.org/perlbug/ . There may also be
493information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
494
495If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
496program included with your release. Be sure to trim your bug down
497to a tiny but sufficient test case. Your bug report, along with the
498output of C<perl -V>, will be sent off to perlbug@perl.org to be
499analysed by the Perl porting team.
44691e6f
AB
500
501If the bug you are reporting has security implications, which make it
f9001595
RS
502inappropriate to send to a publicly archived mailing list, then please send
503it to perl5-security-report@perl.org. This points to a closed subscription
504unarchived mailing list, which includes
505all the core committers, who will be able
506to help assess the impact of issues, figure out a resolution, and help
507co-ordinate the release of patches to mitigate or fix the problem across all
508platforms on which Perl is supported. Please only use this address for
509security issues in the Perl core, not for modules independently
510distributed on CPAN.
44691e6f
AB
511
512=head1 SEE ALSO
513
52deee2e
DR
514The F<Changes> file for an explanation of how to view exhaustive details
515on what changed.
44691e6f
AB
516
517The F<INSTALL> file for how to build Perl.
518
519The F<README> file for general stuff.
520
521The F<Artistic> and F<Copying> files for copyright information.
522
523=cut