This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Minor perldelta changes
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
e08634c5
SH
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
417a992d 7
4eabcf70 8perldelta - what is new for perl v5.17.3
e128ab2c 9
4eabcf70 10=head1 DESCRIPTION
6db9054f 11
e08634c5
SH
12This document describes differences between the 5.17.2 release and the 5.17.3
13release.
6db9054f 14
4eabcf70 15If you are upgrading from an earlier release such as 5.17.1, first read
e08634c5 16L<perl5172delta>, which describes differences between 5.17.1 and 5.17.2.
ef7131e9 17
4eabcf70 18=head1 Notice
ff3f295c 19
4eabcf70 20XXX Any important notices here
95c6c5c5 21
4eabcf70 22=head1 Core Enhancements
95c6c5c5 23
e08634c5
SH
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
4eabcf70 26here, but most should go in the L</Performance Enhancements> section.
4c77591b 27
4eabcf70 28[ List each enhancement as a =head2 entry ]
c506fc7e 29
6ed07037
FC
30=head2 Computed Labels
31
32The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
33operator, now allow arbitrary expressions to be used to compute labels at
34run time. Previously, any argument that was not a constant was treated as
35the empty string.
36
4eabcf70 37=head1 Security
36ab1671 38
4eabcf70
TC
39XXX Any security-related notices go here. In particular, any security
40vulnerabilities closed should be noted here rather than in the
41L</Selected Bug Fixes> section.
36ab1671 42
4eabcf70 43[ List each security issue as a =head2 entry ]
36ab1671 44
4eabcf70 45=head1 Incompatible Changes
df2c1bb8 46
613c63b4 47[ List each incompatible change as a =head2 entry ]
df2c1bb8 48
613c63b4 49=head2 C<$ENV{foo} = undef> deletes value from environ, like C<delete $ENV{foo}>
df2c1bb8 50
613c63b4
CS
51This facilitates use of C<local()> with C<%ENV> entries. In previous
52versions of Perl, C<undef> was converted to the empty string.
53
54=head2 Defined values stored in environment are forced to byte strings
55
56A value stored in an environment variable has always been stringified. In
57this release, it is converted to be only a byte string. First, it is forced
58to be a only a string. Then if the string is utf8 and the equivalent of
9c5f5e7a
SH
59C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
60C<utf8::encode()> is used, and a warning is issued about wide characters
613c63b4 61(L</Diagnostics>).
7ab2ea42 62
9c5f5e7a 63=head2 C<given> now aliases the global C<$_>
e7d41eaa 64
9c5f5e7a
SH
65Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
66global C<$_> an alias for its argument, just like C<foreach>. However, it
67still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
e7d41eaa
FC
68C<foreach>).
69
4eabcf70 70=head1 Deprecations
7ab2ea42 71
e08634c5
SH
72XXX Any deprecated features, syntax, modules etc. should be listed here. In
73particular, deprecated modules should be listed here even if they are listed as
74an updated module in the L</Modules and Pragmata> section.
7ab2ea42 75
4eabcf70 76[ List each deprecation as a =head2 entry ]
7ab2ea42 77
4eabcf70 78=head1 Performance Enhancements
3be135d8 79
e08634c5
SH
80XXX Changes which enhance performance without changing behaviour go here.
81There may well be none in a stable release.
3be135d8 82
4eabcf70 83[ List each enhancement as a =item entry ]
6db9054f 84
4eabcf70 85=over 4
6db9054f 86
7ca04d94
TC
87=item *
88
4eabcf70 89XXX
7ca04d94 90
e96e0834 91=back
c506fc7e 92
4eabcf70 93=head1 Modules and Pragmata
95c6c5c5 94
4eabcf70
TC
95XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
96go here. If Module::CoreList is updated, generate an initial draft of the
97following sections using F<Porting/corelist-perldelta.pl>, which prints stub
98entries to STDOUT. Results can be pasted in place of the '=head2' entries
99below. A paragraph summary for important changes should then be added by hand.
100In an ideal world, dual-life modules would have a F<Changes> file that could be
101cribbed.
95c6c5c5 102
4eabcf70
TC
103[ Within each section, list entries as a =item entry ]
104
105=head2 New Modules and Pragmata
95c6c5c5 106
e96e0834 107=over 4
95c6c5c5
JL
108
109=item *
110
4eabcf70 111XXX
95c6c5c5 112
e96e0834 113=back
95c6c5c5 114
4eabcf70 115=head2 Updated Modules and Pragmata
95c6c5c5 116
e96e0834 117=over 4
95c6c5c5 118
95c6c5c5
JL
119=item *
120
9c5f5e7a
SH
121L<B> has been upgraded from version 1.36 to 1.37. All C<CVf_*> and C<GVf_*>
122and more SV-related flag values are now provided as constants in the C<B::>
123namespace and available for export. The default export list has not changed.
124
125=item *
126
127L<B::Concise> has been upgraded from version 1.91 to 1.92. XXX Add change
128notes.
b8a55fe7 129
32ed16fc
FC
130=item *
131
132L<B::Deparse> has been upgraded from version 1.15 to 1.16. It now deparses
133loop controls with the correct precedence.
134
63870e6d
FC
135=item *
136
9c5f5e7a
SH
137L<Compress::Raw::Bzip2> has been upgraded from version 2.05201 to 2.055. XXX
138Add change notes.
139
140=item *
141
142L<Compress::Raw::Zlib> has been upgraded from version 2.05401 to 2.056. XXX
143Add change notes.
144
145=item *
146
147L<Data::Dumper> has been upgraded from version 2.135_06 to 2.135_07. It has
148been optimized to only build a seen-scalar hash as necessary, thereby speeding
149up serialization drastically.
150
151=item *
152
153L<Devel::Peek> has been upgraded from version 1.08 to 1.09. XXX Add change
154notes.
155
156=item *
157
158L<Encode> has been upgraded from version 2.44 to 2.46. XXX Add change notes.
159
160=item *
161
162L<IO::Compress> has been upgraded from version 2.052 to 2.055. XXX Add change
163notes.
164
165=item *
166
167L<Module::Build> has been upgraded from version 0.40 to 0.4002. XXX Add change
168notes.
169
170=item *
171
172L<Module::CoreList> has been upgraded from version 2.69 to 2.70. XXX Add
173change notes.
174
175=item *
176
177L<Module::Load::Conditional> has been upgraded from version 0.50 to 0.54. XXX
178Add change notes.
179
180=item *
181
182L<Module::Metadata> has been upgraded from version 1.000009 to 1.000010. XXX
183Add change notes.
184
185=item *
186
187L<re> has been upgraded from version 0.21 to 0.22. XXX Add change notes.
188
189=item *
190
63870e6d
FC
191L<Storable> has been upgraded from version 2.37 to 2.38. It can now freeze
192and thaw vstrings correctly. This causes a slight incompatible change in
193the storage format, so the format version has increased to 2.9.
194
930a023a
S
195=item *
196
9c5f5e7a
SH
197L<Time::Local> has been upgraded from version 1.2000 to 1.2300. XXX Add change
198notes.
199
200=item *
201
202L<Unicode::UCD> has been upgraded from version 0.44 to 0.45. XXX Add change
203notes.
204
205=item *
206
207L<Win32CORE> has been upgraded from version 0.02 to 0.03. XXX Add change
208notes.
930a023a 209
e96e0834 210=back
95c6c5c5 211
4eabcf70 212=head2 Removed Modules and Pragmata
95c6c5c5 213
e96e0834 214=over 4
95c6c5c5 215
95c6c5c5
JL
216=item *
217
4eabcf70 218XXX
4f85bc45 219
4eabcf70 220=back
72267260 221
4eabcf70 222=head1 Documentation
72267260 223
e08634c5
SH
224XXX Changes to files in F<pod/> go here. Consider grouping entries by file and
225be sure to link to the appropriate page, e.g. L<perlfunc>.
4f85bc45 226
4eabcf70 227=head2 New Documentation
7d101ed1 228
4eabcf70 229XXX Changes which create B<new> files in F<pod/> go here.
e013ada0 230
4eabcf70 231=head3 L<XXX>
4f85bc45 232
4eabcf70 233XXX Description of the purpose of the new file here
e013ada0 234
4eabcf70 235=head2 Changes to Existing Documentation
95c6c5c5 236
4eabcf70
TC
237XXX Changes which significantly change existing files in F<pod/> go here.
238However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
239section.
95c6c5c5 240
be28af6e 241=head3 L<perlfunc>, L<perlop>
95c6c5c5 242
e96e0834 243=over 4
95c6c5c5
JL
244
245=item *
246
be28af6e
FC
247Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have
248always had the same precedence as assignment operators, but this was never
249documented until now.
95c6c5c5 250
e96e0834 251=back
95c6c5c5 252
4eabcf70 253=head1 Diagnostics
05c8f9ed 254
4eabcf70
TC
255The following additions or changes have been made to diagnostic output,
256including warnings and fatal error messages. For the complete list of
257diagnostic messages, see L<perldiag>.
ceb0881c 258
e08634c5 259XXX New or changed warnings emitted by the core's C<C> code go here. Also
4eabcf70 260include any changes in L<perldiag> that reconcile it to the C<C> code.
0998713f 261
4eabcf70 262=head2 New Diagnostics
42d72fc5 263
e08634c5
SH
264XXX Newly added diagnostic messages go under here, separated into New Errors
265and New Warnings
613c63b4 266
4eabcf70 267=head3 New Errors
8e125188 268
e96e0834 269=over 4
e128ab2c 270
e2f0c3bb
FC
271=item *
272
08b2a930
FC
273L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
274
9c5f5e7a
SH
275This message now occurs when a here document label has an initial quotation
276mark but the final quotation mark is missing.
08b2a930
FC
277
278This replaces a bogus and misleading error message about not finding the
279label itself [perl #114104].
16e4fcbf 280
4eabcf70 281=back
e2f0c3bb 282
4eabcf70 283=head3 New Warnings
90519d0f 284
4eabcf70 285=over 4
90519d0f
FC
286
287=item *
288
e08634c5
SH
289L<Wide character in setenv|perldiag/"Wide character in setenv">
290
291Attempts to put wide characters into environment variables via C<%ENV> now
292provoke this warning.
90519d0f 293
61174fb5 294=back
422287bf 295
4eabcf70
TC
296=head2 Changes to Existing Diagnostics
297
298XXX Changes (i.e. rewording) of diagnostic messages go here
2de6ba8d 299
e128ab2c
DM
300=over 4
301
302=item *
303
4eabcf70 304XXX Describe change here
e128ab2c 305
4eabcf70 306=back
8b1adbab 307
4eabcf70 308=head1 Utility Changes
8b1adbab 309
e08634c5
SH
310XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
311Most of these are built within the directories F<utils> and F<x2p>.
83f29afa 312
4eabcf70
TC
313[ List utility changes as a =head3 entry for each utility and =item
314entries for each change
315Use L<XXX> with program names to get proper documentation linking. ]
83f29afa 316
4eabcf70 317=head3 L<XXX>
0938f143 318
4eabcf70 319=over 4
0938f143 320
72267260
JL
321=item *
322
4eabcf70 323XXX
7a251f7a 324
4eabcf70 325=back
7a251f7a 326
4eabcf70 327=head1 Configuration and Compilation
21247d85 328
4eabcf70
TC
329XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
330go here. Any other changes to the Perl build process should be listed here.
331However, any platform-specific changes should be listed in the
332L</Platform Support> section, instead.
21247d85 333
4eabcf70 334[ List changes as a =item entry ].
2e4f8b82 335
4eabcf70 336=over 4
c95d4104 337
788505db
FC
338=item *
339
4eabcf70 340XXX
788505db 341
4eabcf70 342=back
2c2b9cf4 343
4eabcf70 344=head1 Testing
3cd56aaa 345
4eabcf70
TC
346XXX Any significant changes to the testing of a freshly built perl should be
347listed here. Changes which create B<new> files in F<t/> go here as do any
348large changes to the testing harness (e.g. when parallel testing was added).
e08634c5 349Changes to existing files in F<t/> aren't worth summarizing, although the bugs
4eabcf70 350that they represent may be covered elsewhere.
3cd56aaa 351
4eabcf70 352[ List each test improvement as a =item entry ]
3cd56aaa 353
4eabcf70 354=over 4
3cd56aaa
TC
355
356=item *
357
4eabcf70 358XXX
3cd56aaa 359
4eabcf70 360=back
3cd56aaa 361
4eabcf70 362=head1 Platform Support
3cd56aaa 363
4eabcf70 364XXX Any changes to platform support should be listed in the sections below.
3cd56aaa 365
4eabcf70
TC
366[ Within the sections, list each platform as a =item entry with specific
367changes as paragraphs below it. ]
3cd56aaa 368
4eabcf70 369=head2 New Platforms
3cd56aaa 370
4eabcf70 371XXX List any platforms that this version of perl compiles on, that previous
e08634c5 372versions did not . These will either be enabled by new files in the F<hints/>
4eabcf70
TC
373directories, or new subdirectories and F<README> files at the top level of the
374source tree.
3cd56aaa 375
4eabcf70 376=over 4
3cd56aaa 377
4eabcf70 378=item XXX-some-platform
3cd56aaa 379
4eabcf70 380XXX
c0c19433 381
4eabcf70 382=back
c0c19433 383
4eabcf70 384=head2 Discontinued Platforms
7ab2ea42 385
4eabcf70 386XXX List any platforms that this version of perl no longer compiles on.
7ab2ea42 387
4eabcf70 388=over 4
7ab2ea42 389
4eabcf70 390=item XXX-some-platform
7ab2ea42 391
4eabcf70 392XXX
90519d0f 393
4eabcf70 394=back
90519d0f 395
4eabcf70 396=head2 Platform-Specific Notes
90519d0f 397
e08634c5 398XXX List any changes for specific platforms. This could include configuration
4eabcf70
TC
399and compilation changes or changes in portability/compatibility. However,
400changes within modules for platforms should generally be listed in the
401L</Modules and Pragmata> section.
90519d0f 402
4eabcf70 403=over 4
90519d0f 404
4eabcf70 405=item XXX-some-platform
90519d0f 406
4eabcf70 407XXX
90519d0f 408
4eabcf70 409=back
90519d0f 410
4eabcf70 411=head1 Internal Changes
90519d0f 412
e08634c5
SH
413XXX Changes which affect the interface available to C<XS> code go here. Other
414significant internal changes for future core maintainers should be noted as
415well.
90519d0f 416
4eabcf70 417[ List each change as a =item entry ]
90519d0f 418
4eabcf70 419=over 4
90519d0f
FC
420
421=item *
422
4eabcf70 423XXX
90519d0f 424
4eabcf70 425=back
90519d0f 426
4eabcf70 427=head1 Selected Bug Fixes
90519d0f 428
e08634c5
SH
429XXX Important bug fixes in the core language are summarized here. Bug fixes in
430files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
90519d0f 431
4eabcf70 432[ List each fix as a =item entry ]
90519d0f 433
4eabcf70 434=over 4
90519d0f
FC
435
436=item *
437
7a4d6ad6
KW
438C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and
439U+200D (ZERO WIDTH JOINER). C<\W> no longer matches these. This change
440is because Unicode corrected their definition of what C<\w> should match.
90519d0f 441
77f5d539
FC
442=item *
443
444C<dump LABEL> no longer leaks its label.
445
3e81bef2
FC
446=item *
447
9c5f5e7a
SH
448Constant folding no longer changes the behaviour of functions like C<stat()>
449and C<truncate()> that can take either filenames or handles.
3e81bef2
FC
450C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is
451an arbitrary expression), rather than the handle "foo".
452
e9f497c4
FC
453=item *
454
455C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name
456if the filehandle has been deleted. This was broken in Perl 5.16.0.
457
d7f7c515
FC
458=item *
459
460Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
461longer cause double frees or panic messages.
462
afc04f16
FC
463=item *
464
465C<s///> now turns vstrings into plain strings when performing a
466substitution, even if the resulting string is the same (C<s/a/a/>).
467
b4cf37f5
FC
468=item *
469
470Prototype mismatch warnings no longer erroneously treat constant subs as
471having no prototype when they actually have "".
472
473=item *
474
475Constant subroutines and forward declarations no longer prevent prototype
476mismatch warnings from omitting the sub name.
477
ea9f761d
FC
478=item *
479
480C<undef> on a subroutine now clears call checkers.
481
70306497
FC
482=item *
483
484The C<ref> operator started leaking memory on blessed objects in Perl
4855.16.0. This has been fixed [perl #114340].
486
4eabcf70 487=back
90519d0f 488
4eabcf70 489=head1 Known Problems
b8a55fe7 490
e08634c5
SH
491XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
492tests that had to be C<TODO>ed for the release would be noted here. Unfixed
4eabcf70 493platform specific bugs also go here.
b8a55fe7 494
4eabcf70 495[ List each fix as a =item entry ]
b8a55fe7 496
4eabcf70 497=over 4
b8a55fe7
FC
498
499=item *
500
4eabcf70 501XXX
b8a55fe7 502
4eabcf70 503=back
5073ffbd 504
4eabcf70 505=head1 Obituary
5073ffbd 506
4eabcf70
TC
507XXX If any significant core contributor has died, we've added a short obituary
508here.
e128ab2c 509
61174fb5 510=head1 Acknowledgements
d5dc7001 511
4eabcf70
TC
512XXX Generate this with:
513
514 perl Porting/acknowledgements.pl v5.17.2..HEAD
29cf780c 515
44691e6f
AB
516=head1 Reporting Bugs
517
e08634c5
SH
518If you find what you think is a bug, you might check the articles recently
519posted to the comp.lang.perl.misc newsgroup and the perl bug database at
520http://rt.perl.org/perlbug/ . There may also be information at
521http://www.perl.org/ , the Perl Home Page.
44691e6f 522
e08634c5
SH
523If you believe you have an unreported bug, please run the L<perlbug> program
524included with your release. Be sure to trim your bug down to a tiny but
525sufficient test case. Your bug report, along with the output of C<perl -V>,
526will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
527
528If the bug you are reporting has security implications, which make it
e08634c5
SH
529inappropriate to send to a publicly archived mailing list, then please send it
530to perl5-security-report@perl.org. This points to a closed subscription
531unarchived mailing list, which includes all the core committers, who will be
532able to help assess the impact of issues, figure out a resolution, and help
f9001595 533co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
534platforms on which Perl is supported. Please only use this address for
535security issues in the Perl core, not for modules independently distributed on
536CPAN.
44691e6f
AB
537
538=head1 SEE ALSO
539
e08634c5
SH
540The F<Changes> file for an explanation of how to view exhaustive details on
541what changed.
44691e6f
AB
542
543The F<INSTALL> file for how to build Perl.
544
545The F<README> file for general stuff.
546
547The F<Artistic> and F<Copying> files for copyright information.
548
549=cut