This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
let B know about new op_code_list field
[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
0da72d5e
KW
67=head2 Alphanumeric operators must now be separated from the closing
68delimter of regular expressions
69
70You may no longer write something like:
71
72 m/a/and 1
73
74Instead you must write
75
76 m/a/ and 1
77
78with whitespace separating the operator from the closing delimiter of
79the regular expression. Not having whitespace has resulted in a
80deprecated warning since Perl v5.14.0.
81
61174fb5 82=head1 Deprecations
ef7131e9 83
61174fb5
Z
84XXX Any deprecated features, syntax, modules etc. should be listed here.
85In particular, deprecated modules should be listed here even if they are
86listed as an updated module in the L</Modules and Pragmata> section.
ef7131e9 87
61174fb5 88[ List each deprecation as a =head2 entry ]
ef7131e9 89
61174fb5 90=head1 Performance Enhancements
95ce428c 91
61174fb5
Z
92XXX Changes which enhance performance without changing behaviour go here. There
93may well be none in a stable release.
c11980ad 94
61174fb5 95[ List each enhancement as a =item entry ]
05c8f9ed 96
f9001595 97=over 4
75ff5956 98
2630d42b 99=item *
c11980ad 100
61174fb5 101XXX
53de3ff0 102
61174fb5 103=back
ef7131e9 104
61174fb5 105=head1 Modules and Pragmata
ef7131e9 106
61174fb5
Z
107XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
108go here. If Module::CoreList is updated, generate an initial draft of the
109following sections using F<Porting/corelist-perldelta.pl>, which prints stub
110entries to STDOUT. Results can be pasted in place of the '=head2' entries
111below. A paragraph summary for important changes should then be added by hand.
112In an ideal world, dual-life modules would have a F<Changes> file that could be
113cribbed.
ef7131e9 114
61174fb5 115[ Within each section, list entries as a =item entry ]
435b0bdb 116
61174fb5 117=head2 New Modules and Pragmata
435b0bdb 118
61174fb5 119=over 4
be8dfbf7 120
435b0bdb
FC
121=item *
122
61174fb5 123XXX
83fb037c 124
61174fb5 125=back
83fb037c 126
61174fb5 127=head2 Updated Modules and Pragmata
83fb037c 128
61174fb5 129=over 4
83fb037c
FC
130
131=item *
132
c01b3876
SH
133L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
134
135Manifest files are now correctly embedded for those versions of VC++ which
136make use of them.
137
138=item *
139
5cefbec9
FC
140L<B> has been upgraded from version 1.35 to 1.36.
141
142C<B::COP::stashlen> has been replaced with C<B::COP::stashoff>.
143
fbdb83f3
FC
144C<B::COP::stashpv> now supports UTF8 package names and embedded nulls.
145
5cefbec9
FC
146=item *
147
4d219cc2
FC
148L<ExtUtils::CBuilder> has been upgraded from version 0.280206 to 0.280208.
149
150It no longer fails when trying to embed manifests on Windows
151[perl #111782, #111798].
152
153=item *
154
ff3f295c
NC
155L<File::DosGlob> has been upgraded from version 1.07 to 1.08.
156
157There are no visible changes, only minor internal refactorings.
158
159=item *
160
c506fc7e
FC
161L<File::Spec::Unix> has been upgraded from version 3.39_02 to 3.39_03.
162
163C<abs2rel> could produce incorrect results when given two relative paths or
164the root directory twice [perl #111510].
165
166=item *
167
d9661073 168L<IO> has been upgraded from version 1.25_06 to 1.25_07.
1c633914 169
d9661073 170C<sync()> can now be called on read-only file handles [perl #64772].
f558db2f 171
66aa79e2
KW
172=item *
173
99565752
NC
174L<Pod::Html> has been upgraded from version 1.15_02 to 1.16.
175
176The option C<--libpods> has been re-instated. It is deprecated, and its use
177does nothing other than issue a warning that it is no longer supported.
178
179=item *
180
d9661073
FC
181L<Unicode::UCD> has been upgraded from version 0.43 to 0.44.
182
66aa79e2
KW
183This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
184that returns all the casefolds.
185
3630f57e
CBW
186=item *
187
188L<Scalar::Util> has been upgraded from version 1.23 to version 1.25.
189
61174fb5 190=back
f558db2f 191
61174fb5 192=head2 Removed Modules and Pragmata
e3329bf0 193
61174fb5 194=over 4
e3329bf0
FC
195
196=item *
197
61174fb5 198XXX
80b8b050 199
61174fb5 200=back
80b8b050 201
61174fb5 202=head1 Documentation
80b8b050 203
61174fb5
Z
204XXX Changes to files in F<pod/> go here. Consider grouping entries by
205file and be sure to link to the appropriate page, e.g. L<perlfunc>.
18d0dfa8 206
61174fb5 207=head2 New Documentation
843331c7 208
61174fb5 209XXX Changes which create B<new> files in F<pod/> go here.
53de3ff0 210
61174fb5 211=head3 L<XXX>
30608892 212
61174fb5 213XXX Description of the purpose of the new file here
30608892 214
61174fb5 215=head2 Changes to Existing Documentation
30608892 216
61174fb5
Z
217XXX Changes which significantly change existing files in F<pod/> go here.
218However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
219section.
c11980ad 220
c7166200 221=head3 L<perlfaq>
ecd144ea 222
f9001595 223=over 4
05c8f9ed
RS
224
225=item *
226
c7166200 227L<perlfaq> has been synchronised with version 5.0150040 from C<CPAN>.
9dea6244 228
204b72a4 229=back
9dea6244 230
61174fb5 231=head1 Diagnostics
ef7131e9 232
61174fb5
Z
233The following additions or changes have been made to diagnostic output,
234including warnings and fatal error messages. For the complete list of
235diagnostic messages, see L<perldiag>.
ef7131e9 236
61174fb5
Z
237XXX New or changed warnings emitted by the core's C<C> code go here. Also
238include any changes in L<perldiag> that reconcile it to the C<C> code.
ef7131e9 239
61174fb5
Z
240[ Within each section, list entries as a =item entry that links to perldiag,
241 e.g.
ef7131e9 242
61174fb5 243 =item *
ef7131e9 244
61174fb5
Z
245 L<Invalid version object|perldiag/"Invalid version object">
246]
80b8b050 247
61174fb5 248=head2 New Diagnostics
80b8b050 249
61174fb5 250XXX Newly added diagnostic messages go here
80b8b050 251
61174fb5 252=head3 New Errors
80b8b050
Z
253
254=over 4
255
256=item *
257
61174fb5 258XXX L<message|perldiag/"message">
80b8b050 259
52deee2e 260=back
5dd80d85 261
f9001595 262=head3 New Warnings
05c8f9ed 263
f9001595 264=over 4
05c8f9ed
RS
265
266=item *
d5dc7001 267
61174fb5 268XXX L<message|perldiag/"message">
30608892 269
f9001595 270=back
05c8f9ed 271
61174fb5
Z
272=head2 Changes to Existing Diagnostics
273
274XXX Changes (i.e. rewording) of diagnostic messages go here
05c8f9ed 275
f9001595 276=over 4
05c8f9ed
RS
277
278=item *
279
61174fb5 280XXX Describe change here
ef7131e9 281
f9001595 282=back
05c8f9ed 283
4a301309
FC
284=head2 Removals of Diagnostics
285
286=over 4
287
a1d2df36
FC
288=item *
289
4a301309
FC
290The "Runaway prototype" warning that occurs in bizarre cases has been
291removed as being unhelpful and inconsistent.
292
8dffc0ab
FC
293=item *
294
295The "Not a format reference" error has been removed, as the only case in
296which it could be triggered was a bug.
297
4a301309
FC
298=back
299
61174fb5 300=head1 Utility Changes
05c8f9ed 301
61174fb5
Z
302XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
303here. Most of these are built within the directories F<utils> and F<x2p>.
05c8f9ed 304
61174fb5
Z
305[ List utility changes as a =head3 entry for each utility and =item
306entries for each change
307Use L<XXX> with program names to get proper documentation linking. ]
05c8f9ed 308
61174fb5 309=head3 L<XXX>
30608892 310
61174fb5 311=over 4
30608892 312
61174fb5 313=item *
30608892 314
61174fb5 315XXX
30608892 316
61174fb5 317=back
30608892 318
61174fb5 319=head1 Configuration and Compilation
30608892 320
61174fb5
Z
321XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
322go here. Any other changes to the Perl build process should be listed here.
323However, any platform-specific changes should be listed in the
324L</Platform Support> section, instead.
05c8f9ed 325
61174fb5 326[ List changes as a =item entry ].
05c8f9ed 327
f9001595 328=over 4
05c8f9ed
RS
329
330=item *
331
61174fb5 332XXX
53de3ff0 333
61174fb5 334=back
a3367fba 335
61174fb5 336=head1 Testing
a3367fba 337
61174fb5
Z
338XXX Any significant changes to the testing of a freshly built perl should be
339listed here. Changes which create B<new> files in F<t/> go here as do any
340large changes to the testing harness (e.g. when parallel testing was added).
341Changes to existing files in F<t/> aren't worth summarising, although the bugs
342that they represent may be covered elsewhere.
a3367fba 343
61174fb5 344[ List each test improvement as a =item entry ]
a3367fba 345
61174fb5 346=over 4
05c8f9ed 347
30608892
Z
348=item *
349
61174fb5 350XXX
30608892 351
f9001595 352=back
05c8f9ed 353
61174fb5 354=head1 Platform Support
05c8f9ed 355
61174fb5 356XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 357
61174fb5
Z
358[ Within the sections, list each platform as a =item entry with specific
359changes as paragraphs below it. ]
05c8f9ed 360
61174fb5 361=head2 New Platforms
e2e06450 362
61174fb5
Z
363XXX List any platforms that this version of perl compiles on, that previous
364versions did not. These will either be enabled by new files in the F<hints/>
365directories, or new subdirectories and F<README> files at the top level of the
366source tree.
b9b99128 367
61174fb5 368=over 4
b9b99128 369
61174fb5 370=item XXX-some-platform
47fb883d 371
61174fb5 372XXX
47fb883d 373
61174fb5 374=back
5f0f4bc0 375
61174fb5 376=head2 Discontinued Platforms
5f0f4bc0 377
61174fb5 378XXX List any platforms that this version of perl no longer compiles on.
ba0d99ee 379
61174fb5 380=over 4
ba0d99ee 381
61174fb5 382=item XXX-some-platform
72035cb1 383
61174fb5 384XXX
72035cb1 385
61174fb5 386=back
ceb0881c 387
61174fb5 388=head2 Platform-Specific Notes
ceb0881c 389
61174fb5
Z
390XXX List any changes for specific platforms. This could include configuration
391and compilation changes or changes in portability/compatibility. However,
392changes within modules for platforms should generally be listed in the
393L</Modules and Pragmata> section.
89cbc6b8 394
61174fb5 395=over 4
89cbc6b8 396
4aa4c0a5 397=item Win32
c6b15a5a 398
4aa4c0a5
TC
399C<link> on Win32 now attempts to set C<$!> to more appropriate values
400based on the Win32 API error code. [perl #112272]
c6b15a5a 401
61174fb5 402=back
8e125188 403
61174fb5 404=head1 Internal Changes
8e125188 405
61174fb5
Z
406XXX Changes which affect the interface available to C<XS> code go here.
407Other significant internal changes for future core maintainers should
408be noted as well.
8e125188 409
61174fb5 410[ List each change as a =item entry ]
c4643160 411
61174fb5 412=over 4
c4643160 413
422287bf
FC
414=item *
415
b7e9bef4
FC
416The C<study> function was made a no-op in 5.16. It was simply disabled via
417a C<return> statement; the code was left in place. Now the code supporting
418what C<study> used to do has been removed.
53de3ff0 419
f8ef51fd
FC
420=item *
421
422Under threaded perls, there is no longer a separate PV allocated for every
423COP to store its package name (C<< cop->stashpv >>). Instead, there is an
424offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
425holds stash pointers.
426
61174fb5 427=back
422287bf 428
61174fb5 429=head1 Selected Bug Fixes
2de6ba8d 430
61174fb5
Z
431XXX Important bug fixes in the core language are summarised here.
432Bug fixes in files in F<ext/> and F<lib/> are best summarised in
433L</Modules and Pragmata>.
2de6ba8d 434
61174fb5 435[ List each fix as a =item entry ]
52c4b146 436
61174fb5 437=over 4
52c4b146 438
9aa9a888
KW
439=item *
440
7ade940c
KW
441Perl now works as well as can be expected on all releases of Unicode so
442far. In v5.16, it worked on Unicodes 6.0 and 6.1, but there were
443various bugs for earlier releases; the older the release the more
444problems.
9aa9a888 445
701da2e9
FC
446=item *
447
448C<vec> no longer produces "uninitialized" warnings in lvalue context
449[perl #9423].
450
d67d4c0e
FC
451=item *
452
d9661073 453An optimisation involving fixed strings in regular expressions could cause
d67d4c0e
FC
454a severe performance penalty in edge cases. This has been fixed
455[perl #76546].
456
b9dc63e8
FC
457=item *
458
459The "Can't find an opnumber" message that C<prototype> produces when passed
460a string like "CORE::nonexistent_keyword" is now passes UTF8 and embedded
461nulls through unchanged [perl #97478].
462
b6d5888c
FC
463=item *
464
c0df136d
FC
465C<prototype> now treats magical variables like C<$1> the same way as
466non-magical variables when checking for the CORE:: prefix, instead of
467treating them as subroutine names.
468
469=item *
470
b6d5888c
FC
471Under threaded perls, a run-time code block in a regular expression could
472corrupt the package name stored in the op tree, resulting in bad reads
473in C<caller>, and possibly crashes [perl #113060].
474
d8816adc
FC
475=item *
476
477Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
478closure) no longer results in a copy of the subroutine (or assertion
479failures on debugging builds).
480
9b9df0bb
FC
481=item *
482
483C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
484the current package has been assigned over (as in
485C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
486
b16ca463
FC
487=item *
488
489If a package is deleted by code that it calls, it is possible for C<caller>
490to see a stack frame belonging to that deleted package. C<caller> could
491crash if the stash's memory address was reused for a scalar and a
492substitution was performed on the same scalar [perl #113486].
493
6fe02df8
FC
494=item *
495
496C<UNIVERSAL::can> no longer treats its first argument differently
497depending on whether it is a string or number internally.
498
2aab098d
FC
499=item *
500
501C<open> with "<&" for the mode checks to see whether the third argument is
502a number, in determining whether to treat it as a file descriptor or a
503handle name. Magical variables like C<$1> were always failing the numeric
504check and being treated as handle names.
505
38d77b7f
FC
506=item *
507
508C<warn>'s handling of magical variables (C<$1>, ties) has undergone several
509fixes. FETCH is only called once now on a tied argument or a tied C<$@>
510[perl #97480]. Tied variables returning objects that stringify as "" are
511no longer ignored. A tied C<$@> that happened to return a reference the
512I<previous> time is was used is no longer ignored.
513
e811dbaa
FC
514=item *
515
8b9712e0
FC
516C<warn ""> now treats C<$@> with a number in it the same way, regardless of
517whether it happened via C<$@=3> or C<$@="3">. It used to ignore the
518former. Now it appends "\t...caught", as it has always done with
519C<$@="3">.
520
521=item *
522
e811dbaa
FC
523Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use
524floating point operations even where integer operations were more appropriate, resulting in loss of accuracy on 64-bit platforms
525[perl #109542].
526
844115ec
FC
527=item *
528
529Unary negation no longer treats a string as a number if the string happened
530to be used as a number some time. So, if $x contains the string "dogs",
531C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point.
532
a7143705
FC
533=item *
534
535In Perl 5.14, C<-'-10'> was fixed to return "10", not "+10". But magical
536variables (C<$1>, ties) were not fixed till now [perl #57706].
537
9c308096
FC
538=item *
539
540Unary negation now treats strings consistently, regardless of the internal
541UTF8 flag.
542
fc67deb3
KW
543=item *
544
545A regression introduced in Perl v5.16.0 involving
546C<tr/I<SEARCHLIST>/I<REPLACEMENTLIST>/> has been fixed. Only the first
547instance is supposed to be meaningful if a character appears more than
548once in C<I<SEARCHLIST>>. Under some circumstances, the final instance
549was overriding all earlier ones. [perl #113584]
550
61174fb5 551=back
53de3ff0 552
61174fb5 553=head1 Known Problems
53de3ff0 554
61174fb5
Z
555XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
556tests that had to be C<TODO>ed for the release would be noted here, unless
557they were specific to a particular platform (see below).
53de3ff0 558
61174fb5
Z
559This is a list of some significant unfixed bugs, which are regressions
560from either 5.XXX.XXX or 5.XXX.XXX.
53de3ff0 561
61174fb5 562[ List each fix as a =item entry ]
80b8b050 563
61174fb5 564=over 4
80b8b050 565
eb3d0a58
LT
566=item *
567
61174fb5 568XXX
eb3d0a58 569
2630d42b 570=back
e2e06450 571
61174fb5 572=head1 Obituary
c0154fe2 573
61174fb5
Z
574XXX If any significant core contributor has died, we've added a short obituary
575here.
d5dc7001 576
61174fb5 577=head1 Acknowledgements
d5dc7001 578
61174fb5 579XXX Generate this with:
f9001595 580
61174fb5 581 perl Porting/acknowledgements.pl v5.17.0..HEAD
29cf780c 582
44691e6f
AB
583=head1 Reporting Bugs
584
585If you find what you think is a bug, you might check the articles
52deee2e 586recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
587bug database at http://rt.perl.org/perlbug/ . There may also be
588information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
589
590If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
591program included with your release. Be sure to trim your bug down
592to a tiny but sufficient test case. Your bug report, along with the
593output of C<perl -V>, will be sent off to perlbug@perl.org to be
594analysed by the Perl porting team.
44691e6f
AB
595
596If the bug you are reporting has security implications, which make it
f9001595
RS
597inappropriate to send to a publicly archived mailing list, then please send
598it to perl5-security-report@perl.org. This points to a closed subscription
599unarchived mailing list, which includes
600all the core committers, who will be able
601to help assess the impact of issues, figure out a resolution, and help
602co-ordinate the release of patches to mitigate or fix the problem across all
603platforms on which Perl is supported. Please only use this address for
604security issues in the Perl core, not for modules independently
605distributed on CPAN.
44691e6f
AB
606
607=head1 SEE ALSO
608
52deee2e
DR
609The F<Changes> file for an explanation of how to view exhaustive details
610on what changed.
44691e6f
AB
611
612The F<INSTALL> file for how to build Perl.
613
614The F<README> file for general stuff.
615
616The F<Artistic> and F<Copying> files for copyright information.
617
618=cut