This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Bump $Win32CORE::VERSION
[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
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
62(L</Diagnostics>).
7ab2ea42 63
e7d41eaa
FC
64=head2 C<given> now aliases the global $_
65
66Instead of assigning to an implicit lexical $_, C<given> now makes the
67global $_ an alias for its argument, just like C<foreach>. However, it
68still uses lexical $_ if there is lexical $_ in scope (again, just like
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
6b1793dd
NC
122L<B> has been upgraded from version 1.36 to version 1.37. All C<CVf_*> and
123C<GVf_*> and more SV-related flag values are now provided as constants in
124the C<B::> namespace and available for export. The default export list has
125not changed.
b8a55fe7 126
32ed16fc
FC
127=item *
128
129L<B::Deparse> has been upgraded from version 1.15 to 1.16. It now deparses
130loop controls with the correct precedence.
131
63870e6d
FC
132=item *
133
134L<Storable> has been upgraded from version 2.37 to 2.38. It can now freeze
135and thaw vstrings correctly. This causes a slight incompatible change in
136the storage format, so the format version has increased to 2.9.
137
930a023a
SM
138=item *
139
140L<Data::Dumper> has been optimized to only build a seen-scalar has as
141necessary, thereby speeding up serialization drastically.
142
e96e0834 143=back
95c6c5c5 144
4eabcf70 145=head2 Removed Modules and Pragmata
95c6c5c5 146
e96e0834 147=over 4
95c6c5c5 148
95c6c5c5
JL
149=item *
150
4eabcf70 151XXX
4f85bc45 152
4eabcf70 153=back
72267260 154
4eabcf70 155=head1 Documentation
72267260 156
4eabcf70
TC
157XXX Changes to files in F<pod/> go here. Consider grouping entries by
158file and be sure to link to the appropriate page, e.g. L<perlfunc>.
4f85bc45 159
4eabcf70 160=head2 New Documentation
7d101ed1 161
4eabcf70 162XXX Changes which create B<new> files in F<pod/> go here.
e013ada0 163
4eabcf70 164=head3 L<XXX>
4f85bc45 165
4eabcf70 166XXX Description of the purpose of the new file here
e013ada0 167
4eabcf70 168=head2 Changes to Existing Documentation
95c6c5c5 169
4eabcf70
TC
170XXX Changes which significantly change existing files in F<pod/> go here.
171However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
172section.
95c6c5c5 173
be28af6e 174=head3 L<perlfunc>, L<perlop>
95c6c5c5 175
e96e0834 176=over 4
95c6c5c5
JL
177
178=item *
179
be28af6e
FC
180Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have
181always had the same precedence as assignment operators, but this was never
182documented until now.
95c6c5c5 183
e96e0834 184=back
95c6c5c5 185
4eabcf70 186=head1 Diagnostics
05c8f9ed 187
4eabcf70
TC
188The following additions or changes have been made to diagnostic output,
189including warnings and fatal error messages. For the complete list of
190diagnostic messages, see L<perldiag>.
ceb0881c 191
4eabcf70
TC
192XXX New or changed warnings emitted by the core's C<C> code go here. Also
193include any changes in L<perldiag> that reconcile it to the C<C> code.
0998713f 194
4eabcf70
TC
195[ Within each section, list entries as a =item entry that links to perldiag,
196 e.g.
112b6866 197
4eabcf70 198 =item *
112b6866 199
4eabcf70
TC
200 L<Invalid version object|perldiag/"Invalid version object">
201]
42d72fc5 202
4eabcf70 203=head2 New Diagnostics
42d72fc5 204
4eabcf70 205XXX Newly added diagnostic messages go here
8e125188 206
613c63b4
CS
207=over 4
208
209=item *
210
211Attempts to put wide characters into environment variables via %ENV provoke
212the warning "Wide character in setenv".
213
214=back
215
4eabcf70 216=head3 New Errors
8e125188 217
e96e0834 218=over 4
e128ab2c 219
e2f0c3bb
FC
220=item *
221
08b2a930
FC
222L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
223
224This message now occurs when a here document label has an initial quotation mark but the final quotation mark is missing.
225
226This replaces a bogus and misleading error message about not finding the
227label itself [perl #114104].
16e4fcbf 228
4eabcf70 229=back
e2f0c3bb 230
4eabcf70 231=head3 New Warnings
90519d0f 232
4eabcf70 233=over 4
90519d0f
FC
234
235=item *
236
4eabcf70 237XXX L<message|perldiag/"message">
90519d0f 238
61174fb5 239=back
422287bf 240
4eabcf70
TC
241=head2 Changes to Existing Diagnostics
242
243XXX Changes (i.e. rewording) of diagnostic messages go here
2de6ba8d 244
e128ab2c
DM
245=over 4
246
247=item *
248
4eabcf70 249XXX Describe change here
e128ab2c 250
4eabcf70 251=back
8b1adbab 252
4eabcf70 253=head1 Utility Changes
8b1adbab 254
4eabcf70
TC
255XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
256here. Most of these are built within the directories F<utils> and F<x2p>.
83f29afa 257
4eabcf70
TC
258[ List utility changes as a =head3 entry for each utility and =item
259entries for each change
260Use L<XXX> with program names to get proper documentation linking. ]
83f29afa 261
4eabcf70 262=head3 L<XXX>
0938f143 263
4eabcf70 264=over 4
0938f143 265
72267260
JL
266=item *
267
4eabcf70 268XXX
7a251f7a 269
4eabcf70 270=back
7a251f7a 271
4eabcf70 272=head1 Configuration and Compilation
21247d85 273
4eabcf70
TC
274XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
275go here. Any other changes to the Perl build process should be listed here.
276However, any platform-specific changes should be listed in the
277L</Platform Support> section, instead.
21247d85 278
4eabcf70 279[ List changes as a =item entry ].
2e4f8b82 280
4eabcf70 281=over 4
c95d4104 282
788505db
FC
283=item *
284
4eabcf70 285XXX
788505db 286
4eabcf70 287=back
2c2b9cf4 288
4eabcf70 289=head1 Testing
3cd56aaa 290
4eabcf70
TC
291XXX Any significant changes to the testing of a freshly built perl should be
292listed here. Changes which create B<new> files in F<t/> go here as do any
293large changes to the testing harness (e.g. when parallel testing was added).
294Changes to existing files in F<t/> aren't worth summarising, although the bugs
295that they represent may be covered elsewhere.
3cd56aaa 296
4eabcf70 297[ List each test improvement as a =item entry ]
3cd56aaa 298
4eabcf70 299=over 4
3cd56aaa
TC
300
301=item *
302
4eabcf70 303XXX
3cd56aaa 304
4eabcf70 305=back
3cd56aaa 306
4eabcf70 307=head1 Platform Support
3cd56aaa 308
4eabcf70 309XXX Any changes to platform support should be listed in the sections below.
3cd56aaa 310
4eabcf70
TC
311[ Within the sections, list each platform as a =item entry with specific
312changes as paragraphs below it. ]
3cd56aaa 313
4eabcf70 314=head2 New Platforms
3cd56aaa 315
4eabcf70
TC
316XXX List any platforms that this version of perl compiles on, that previous
317versions did not. These will either be enabled by new files in the F<hints/>
318directories, or new subdirectories and F<README> files at the top level of the
319source tree.
3cd56aaa 320
4eabcf70 321=over 4
3cd56aaa 322
4eabcf70 323=item XXX-some-platform
3cd56aaa 324
4eabcf70 325XXX
c0c19433 326
4eabcf70 327=back
c0c19433 328
4eabcf70 329=head2 Discontinued Platforms
7ab2ea42 330
4eabcf70 331XXX List any platforms that this version of perl no longer compiles on.
7ab2ea42 332
4eabcf70 333=over 4
7ab2ea42 334
4eabcf70 335=item XXX-some-platform
7ab2ea42 336
4eabcf70 337XXX
90519d0f 338
4eabcf70 339=back
90519d0f 340
4eabcf70 341=head2 Platform-Specific Notes
90519d0f 342
4eabcf70
TC
343XXX List any changes for specific platforms. This could include configuration
344and compilation changes or changes in portability/compatibility. However,
345changes within modules for platforms should generally be listed in the
346L</Modules and Pragmata> section.
90519d0f 347
4eabcf70 348=over 4
90519d0f 349
4eabcf70 350=item XXX-some-platform
90519d0f 351
4eabcf70 352XXX
90519d0f 353
4eabcf70 354=back
90519d0f 355
4eabcf70 356=head1 Internal Changes
90519d0f 357
4eabcf70
TC
358XXX Changes which affect the interface available to C<XS> code go here.
359Other significant internal changes for future core maintainers should
360be noted as well.
90519d0f 361
4eabcf70 362[ List each change as a =item entry ]
90519d0f 363
4eabcf70 364=over 4
90519d0f
FC
365
366=item *
367
4eabcf70 368XXX
90519d0f 369
4eabcf70 370=back
90519d0f 371
4eabcf70 372=head1 Selected Bug Fixes
90519d0f 373
4eabcf70
TC
374XXX Important bug fixes in the core language are summarised here.
375Bug fixes in files in F<ext/> and F<lib/> are best summarised in
376L</Modules and Pragmata>.
90519d0f 377
4eabcf70 378[ List each fix as a =item entry ]
90519d0f 379
4eabcf70 380=over 4
90519d0f
FC
381
382=item *
383
7a4d6ad6
KW
384C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and
385U+200D (ZERO WIDTH JOINER). C<\W> no longer matches these. This change
386is because Unicode corrected their definition of what C<\w> should match.
90519d0f 387
77f5d539
FC
388=item *
389
390C<dump LABEL> no longer leaks its label.
391
3e81bef2
FC
392=item *
393
394Constant folding no longer changes the behaviour of functions like C<stat>
395and C<truncate> that can take either filenames or handles.
396C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is
397an arbitrary expression), rather than the handle "foo".
398
e9f497c4
FC
399=item *
400
401C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name
402if the filehandle has been deleted. This was broken in Perl 5.16.0.
403
d7f7c515
FC
404=item *
405
406Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
407longer cause double frees or panic messages.
408
afc04f16
FC
409=item *
410
411C<s///> now turns vstrings into plain strings when performing a
412substitution, even if the resulting string is the same (C<s/a/a/>).
413
b4cf37f5
FC
414=item *
415
416Prototype mismatch warnings no longer erroneously treat constant subs as
417having no prototype when they actually have "".
418
419=item *
420
421Constant subroutines and forward declarations no longer prevent prototype
422mismatch warnings from omitting the sub name.
423
ea9f761d
FC
424=item *
425
426C<undef> on a subroutine now clears call checkers.
427
70306497
FC
428=item *
429
430The C<ref> operator started leaking memory on blessed objects in Perl
4315.16.0. This has been fixed [perl #114340].
432
4eabcf70 433=back
90519d0f 434
4eabcf70 435=head1 Known Problems
b8a55fe7 436
4eabcf70
TC
437XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
438tests that had to be C<TODO>ed for the release would be noted here. Unfixed
439platform specific bugs also go here.
b8a55fe7 440
4eabcf70 441[ List each fix as a =item entry ]
b8a55fe7 442
4eabcf70 443=over 4
b8a55fe7
FC
444
445=item *
446
4eabcf70 447XXX
b8a55fe7 448
4eabcf70 449=back
5073ffbd 450
4eabcf70 451=head1 Obituary
5073ffbd 452
4eabcf70
TC
453XXX If any significant core contributor has died, we've added a short obituary
454here.
e128ab2c 455
61174fb5 456=head1 Acknowledgements
d5dc7001 457
4eabcf70
TC
458XXX Generate this with:
459
460 perl Porting/acknowledgements.pl v5.17.2..HEAD
29cf780c 461
44691e6f
AB
462=head1 Reporting Bugs
463
464If you find what you think is a bug, you might check the articles
52deee2e 465recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
466bug database at http://rt.perl.org/perlbug/ . There may also be
467information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
468
469If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
470program included with your release. Be sure to trim your bug down
471to a tiny but sufficient test case. Your bug report, along with the
472output of C<perl -V>, will be sent off to perlbug@perl.org to be
473analysed by the Perl porting team.
44691e6f
AB
474
475If the bug you are reporting has security implications, which make it
f9001595
RS
476inappropriate to send to a publicly archived mailing list, then please send
477it to perl5-security-report@perl.org. This points to a closed subscription
478unarchived mailing list, which includes
479all the core committers, who will be able
480to help assess the impact of issues, figure out a resolution, and help
481co-ordinate the release of patches to mitigate or fix the problem across all
482platforms on which Perl is supported. Please only use this address for
483security issues in the Perl core, not for modules independently
484distributed on CPAN.
44691e6f
AB
485
486=head1 SEE ALSO
487
52deee2e
DR
488The F<Changes> file for an explanation of how to view exhaustive details
489on what changed.
44691e6f
AB
490
491The F<INSTALL> file for how to build Perl.
492
493The F<README> file for general stuff.
494
495The F<Artistic> and F<Copying> files for copyright information.
496
497=cut