This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for -$utf8
[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
8dffc0ab
FC
274=item *
275
276The "Not a format reference" error has been removed, as the only case in
277which it could be triggered was a bug.
278
4a301309
FC
279=back
280
61174fb5 281=head1 Utility Changes
05c8f9ed 282
61174fb5
Z
283XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
284here. Most of these are built within the directories F<utils> and F<x2p>.
05c8f9ed 285
61174fb5
Z
286[ List utility changes as a =head3 entry for each utility and =item
287entries for each change
288Use L<XXX> with program names to get proper documentation linking. ]
05c8f9ed 289
61174fb5 290=head3 L<XXX>
30608892 291
61174fb5 292=over 4
30608892 293
61174fb5 294=item *
30608892 295
61174fb5 296XXX
30608892 297
61174fb5 298=back
30608892 299
61174fb5 300=head1 Configuration and Compilation
30608892 301
61174fb5
Z
302XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
303go here. Any other changes to the Perl build process should be listed here.
304However, any platform-specific changes should be listed in the
305L</Platform Support> section, instead.
05c8f9ed 306
61174fb5 307[ List changes as a =item entry ].
05c8f9ed 308
f9001595 309=over 4
05c8f9ed
RS
310
311=item *
312
61174fb5 313XXX
53de3ff0 314
61174fb5 315=back
a3367fba 316
61174fb5 317=head1 Testing
a3367fba 318
61174fb5
Z
319XXX Any significant changes to the testing of a freshly built perl should be
320listed here. Changes which create B<new> files in F<t/> go here as do any
321large changes to the testing harness (e.g. when parallel testing was added).
322Changes to existing files in F<t/> aren't worth summarising, although the bugs
323that they represent may be covered elsewhere.
a3367fba 324
61174fb5 325[ List each test improvement as a =item entry ]
a3367fba 326
61174fb5 327=over 4
05c8f9ed 328
30608892
Z
329=item *
330
61174fb5 331XXX
30608892 332
f9001595 333=back
05c8f9ed 334
61174fb5 335=head1 Platform Support
05c8f9ed 336
61174fb5 337XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 338
61174fb5
Z
339[ Within the sections, list each platform as a =item entry with specific
340changes as paragraphs below it. ]
05c8f9ed 341
61174fb5 342=head2 New Platforms
e2e06450 343
61174fb5
Z
344XXX List any platforms that this version of perl compiles on, that previous
345versions did not. These will either be enabled by new files in the F<hints/>
346directories, or new subdirectories and F<README> files at the top level of the
347source tree.
b9b99128 348
61174fb5 349=over 4
b9b99128 350
61174fb5 351=item XXX-some-platform
47fb883d 352
61174fb5 353XXX
47fb883d 354
61174fb5 355=back
5f0f4bc0 356
61174fb5 357=head2 Discontinued Platforms
5f0f4bc0 358
61174fb5 359XXX List any platforms that this version of perl no longer compiles on.
ba0d99ee 360
61174fb5 361=over 4
ba0d99ee 362
61174fb5 363=item XXX-some-platform
72035cb1 364
61174fb5 365XXX
72035cb1 366
61174fb5 367=back
ceb0881c 368
61174fb5 369=head2 Platform-Specific Notes
ceb0881c 370
61174fb5
Z
371XXX List any changes for specific platforms. This could include configuration
372and compilation changes or changes in portability/compatibility. However,
373changes within modules for platforms should generally be listed in the
374L</Modules and Pragmata> section.
89cbc6b8 375
61174fb5 376=over 4
89cbc6b8 377
4aa4c0a5 378=item Win32
c6b15a5a 379
4aa4c0a5
TC
380C<link> on Win32 now attempts to set C<$!> to more appropriate values
381based on the Win32 API error code. [perl #112272]
c6b15a5a 382
61174fb5 383=back
8e125188 384
61174fb5 385=head1 Internal Changes
8e125188 386
61174fb5
Z
387XXX Changes which affect the interface available to C<XS> code go here.
388Other significant internal changes for future core maintainers should
389be noted as well.
8e125188 390
61174fb5 391[ List each change as a =item entry ]
c4643160 392
61174fb5 393=over 4
c4643160 394
422287bf
FC
395=item *
396
b7e9bef4
FC
397The C<study> function was made a no-op in 5.16. It was simply disabled via
398a C<return> statement; the code was left in place. Now the code supporting
399what C<study> used to do has been removed.
53de3ff0 400
f8ef51fd
FC
401=item *
402
403Under threaded perls, there is no longer a separate PV allocated for every
404COP to store its package name (C<< cop->stashpv >>). Instead, there is an
405offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
406holds stash pointers.
407
61174fb5 408=back
422287bf 409
61174fb5 410=head1 Selected Bug Fixes
2de6ba8d 411
61174fb5
Z
412XXX Important bug fixes in the core language are summarised here.
413Bug fixes in files in F<ext/> and F<lib/> are best summarised in
414L</Modules and Pragmata>.
2de6ba8d 415
61174fb5 416[ List each fix as a =item entry ]
52c4b146 417
61174fb5 418=over 4
52c4b146 419
9aa9a888
KW
420=item *
421
7ade940c
KW
422Perl now works as well as can be expected on all releases of Unicode so
423far. In v5.16, it worked on Unicodes 6.0 and 6.1, but there were
424various bugs for earlier releases; the older the release the more
425problems.
9aa9a888 426
701da2e9
FC
427=item *
428
429C<vec> no longer produces "uninitialized" warnings in lvalue context
430[perl #9423].
431
d67d4c0e
FC
432=item *
433
d9661073 434An optimisation involving fixed strings in regular expressions could cause
d67d4c0e
FC
435a severe performance penalty in edge cases. This has been fixed
436[perl #76546].
437
b9dc63e8
FC
438=item *
439
440The "Can't find an opnumber" message that C<prototype> produces when passed
441a string like "CORE::nonexistent_keyword" is now passes UTF8 and embedded
442nulls through unchanged [perl #97478].
443
b6d5888c
FC
444=item *
445
c0df136d
FC
446C<prototype> now treats magical variables like C<$1> the same way as
447non-magical variables when checking for the CORE:: prefix, instead of
448treating them as subroutine names.
449
450=item *
451
b6d5888c
FC
452Under threaded perls, a run-time code block in a regular expression could
453corrupt the package name stored in the op tree, resulting in bad reads
454in C<caller>, and possibly crashes [perl #113060].
455
d8816adc
FC
456=item *
457
458Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
459closure) no longer results in a copy of the subroutine (or assertion
460failures on debugging builds).
461
9b9df0bb
FC
462=item *
463
464C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
465the current package has been assigned over (as in
466C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
467
b16ca463
FC
468=item *
469
470If a package is deleted by code that it calls, it is possible for C<caller>
471to see a stack frame belonging to that deleted package. C<caller> could
472crash if the stash's memory address was reused for a scalar and a
473substitution was performed on the same scalar [perl #113486].
474
6fe02df8
FC
475=item *
476
477C<UNIVERSAL::can> no longer treats its first argument differently
478depending on whether it is a string or number internally.
479
2aab098d
FC
480=item *
481
482C<open> with "<&" for the mode checks to see whether the third argument is
483a number, in determining whether to treat it as a file descriptor or a
484handle name. Magical variables like C<$1> were always failing the numeric
485check and being treated as handle names.
486
38d77b7f
FC
487=item *
488
489C<warn>'s handling of magical variables (C<$1>, ties) has undergone several
490fixes. FETCH is only called once now on a tied argument or a tied C<$@>
491[perl #97480]. Tied variables returning objects that stringify as "" are
492no longer ignored. A tied C<$@> that happened to return a reference the
493I<previous> time is was used is no longer ignored.
494
e811dbaa
FC
495=item *
496
497Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use
498floating point operations even where integer operations were more appropriate, resulting in loss of accuracy on 64-bit platforms
499[perl #109542].
500
844115ec
FC
501=item *
502
503Unary negation no longer treats a string as a number if the string happened
504to be used as a number some time. So, if $x contains the string "dogs",
505C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point.
506
a7143705
FC
507=item *
508
509In Perl 5.14, C<-'-10'> was fixed to return "10", not "+10". But magical
510variables (C<$1>, ties) were not fixed till now [perl #57706].
511
9c308096
FC
512=item *
513
514Unary negation now treats strings consistently, regardless of the internal
515UTF8 flag.
516
61174fb5 517=back
53de3ff0 518
61174fb5 519=head1 Known Problems
53de3ff0 520
61174fb5
Z
521XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
522tests that had to be C<TODO>ed for the release would be noted here, unless
523they were specific to a particular platform (see below).
53de3ff0 524
61174fb5
Z
525This is a list of some significant unfixed bugs, which are regressions
526from either 5.XXX.XXX or 5.XXX.XXX.
53de3ff0 527
61174fb5 528[ List each fix as a =item entry ]
80b8b050 529
61174fb5 530=over 4
80b8b050 531
eb3d0a58
LT
532=item *
533
61174fb5 534XXX
eb3d0a58 535
2630d42b 536=back
e2e06450 537
61174fb5 538=head1 Obituary
c0154fe2 539
61174fb5
Z
540XXX If any significant core contributor has died, we've added a short obituary
541here.
d5dc7001 542
61174fb5 543=head1 Acknowledgements
d5dc7001 544
61174fb5 545XXX Generate this with:
f9001595 546
61174fb5 547 perl Porting/acknowledgements.pl v5.17.0..HEAD
29cf780c 548
44691e6f
AB
549=head1 Reporting Bugs
550
551If you find what you think is a bug, you might check the articles
52deee2e 552recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
553bug database at http://rt.perl.org/perlbug/ . There may also be
554information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
555
556If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
557program included with your release. Be sure to trim your bug down
558to a tiny but sufficient test case. Your bug report, along with the
559output of C<perl -V>, will be sent off to perlbug@perl.org to be
560analysed by the Perl porting team.
44691e6f
AB
561
562If the bug you are reporting has security implications, which make it
f9001595
RS
563inappropriate to send to a publicly archived mailing list, then please send
564it to perl5-security-report@perl.org. This points to a closed subscription
565unarchived mailing list, which includes
566all the core committers, who will be able
567to help assess the impact of issues, figure out a resolution, and help
568co-ordinate the release of patches to mitigate or fix the problem across all
569platforms on which Perl is supported. Please only use this address for
570security issues in the Perl core, not for modules independently
571distributed on CPAN.
44691e6f
AB
572
573=head1 SEE ALSO
574
52deee2e
DR
575The F<Changes> file for an explanation of how to view exhaustive details
576on what changed.
44691e6f
AB
577
578The F<INSTALL> file for how to build Perl.
579
580The F<README> file for general stuff.
581
582The F<Artistic> and F<Copying> files for copyright information.
583
584=cut