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