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