This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for #73690, scalar(write)
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
e96e0834
JL
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
27f00e3d 7
e96e0834 8perldelta - what is new for perl v5.17.2
417a992d 9
e96e0834 10=head1 DESCRIPTION
028c8719 11
e96e0834
JL
12This document describes differences between the 5.17.1 release and
13the 5.17.2 release.
028c8719 14
e96e0834
JL
15If you are upgrading from an earlier release such as 5.17.0, first read
16L<perl5171delta>, which describes differences between 5.17.0 and
175.17.1.
028c8719 18
e96e0834 19=head1 Notice
30608892 20
e96e0834 21XXX Any important notices here
e128ab2c 22
e96e0834 23=head1 Core Enhancements
e128ab2c 24
e96e0834
JL
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.
fe3193b5 28
e96e0834 29[ List each enhancement as a =head2 entry ]
05c8f9ed 30
e96e0834 31=head1 Security
0da72d5e 32
e96e0834
JL
33XXX Any security-related notices go here. In particular, any security
34vulnerabilities closed should be noted here rather than in the
35L</Selected Bug Fixes> section.
0da72d5e 36
e96e0834 37[ List each security issue as a =head2 entry ]
0da72d5e 38
e96e0834 39=head1 Incompatible Changes
0da72d5e 40
e96e0834 41XXX For a release on a stable branch, this section aspires to be:
0da72d5e 42
e96e0834
JL
43 There are no changes intentionally incompatible with 5.XXX.XXX
44 If any exist, they are bugs, and we request that you submit a
45 report. See L</Reporting Bugs> below.
0da72d5e 46
e96e0834 47[ List each incompatible change as a =head2 entry ]
e2f0c3bb 48
e96e0834 49=head1 Deprecations
e2f0c3bb 50
e96e0834
JL
51XXX Any deprecated features, syntax, modules etc. should be listed here.
52In particular, deprecated modules should be listed here even if they are
53listed as an updated module in the L</Modules and Pragmata> section.
7d101ed1 54
e96e0834 55[ List each deprecation as a =head2 entry ]
7d101ed1 56
e96e0834 57=head1 Performance Enhancements
7d101ed1 58
e96e0834
JL
59XXX Changes which enhance performance without changing behaviour go here. There
60may well be none in a stable release.
7d101ed1 61
e96e0834 62[ List each enhancement as a =item entry ]
95ce428c 63
f9001595 64=over 4
75ff5956 65
2630d42b 66=item *
c11980ad 67
e96e0834 68XXX
53de3ff0 69
61174fb5 70=back
ef7131e9 71
61174fb5 72=head1 Modules and Pragmata
ef7131e9 73
e96e0834
JL
74XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
75go here. If Module::CoreList is updated, generate an initial draft of the
76following sections using F<Porting/corelist-perldelta.pl>, which prints stub
77entries to STDOUT. Results can be pasted in place of the '=head2' entries
78below. A paragraph summary for important changes should then be added by hand.
79In an ideal world, dual-life modules would have a F<Changes> file that could be
80cribbed.
5cefbec9 81
e96e0834 82[ Within each section, list entries as a =item entry ]
fbdb83f3 83
e96e0834 84=head2 New Modules and Pragmata
95c6c5c5 85
e96e0834 86=over 4
9331f04e
NC
87
88=item *
89
e96e0834 90XXX
95c6c5c5 91
e96e0834 92=back
ff3f295c 93
e96e0834 94=head2 Updated Modules and Pragmata
ff3f295c 95
e96e0834 96=over 4
95c6c5c5 97
95c6c5c5
JL
98=item *
99
4c77591b
NC
100L<File::stat> has been upgraded from version 1.06 to 1.07.
101
102Previously C<File::stat>'s overloaded C<-x> and C<-X> operators did not give
103the correct results for directories or executable files when running as
104root. They had been treating executable permissions for root just like for
105any other user, performing group membership tests I<etc> for files not owned
106by root. They now follow the correct Unix behaviour - for a directory they
107are always true, and for a file if any of the three execute permission bits
108are set then they report that root can execute the file. Perl's builtin
109C<-x> and C<-X> operators have always been correct.
c506fc7e 110
36ab1671
FC
111=item *
112
113L<Tie::StdHandle> has been upgraded from version 4.2 to 4.3.
114
115C<READ> now respects the offset argument to C<read> [perl #112826].
116
e96e0834 117=back
c506fc7e 118
e96e0834 119=head2 Removed Modules and Pragmata
c506fc7e 120
e96e0834 121=over 4
95c6c5c5 122
95c6c5c5
JL
123=item *
124
e96e0834 125XXX
95c6c5c5 126
e96e0834 127=back
95c6c5c5 128
e96e0834 129=head1 Documentation
95c6c5c5 130
e96e0834
JL
131XXX Changes to files in F<pod/> go here. Consider grouping entries by
132file and be sure to link to the appropriate page, e.g. L<perlfunc>.
95c6c5c5 133
e96e0834 134=head2 New Documentation
1c633914 135
e96e0834 136XXX Changes which create B<new> files in F<pod/> go here.
f558db2f 137
e96e0834 138=head3 L<XXX>
66aa79e2 139
e96e0834 140XXX Description of the purpose of the new file here
95c6c5c5 141
e96e0834 142=head2 Changes to Existing Documentation
95c6c5c5 143
e96e0834
JL
144XXX Changes which significantly change existing files in F<pod/> go here.
145However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
146section.
95c6c5c5 147
e96e0834 148=head3 L<XXX>
95c6c5c5 149
e96e0834 150=over 4
95c6c5c5
JL
151
152=item *
153
e96e0834 154XXX Description of the change here
95c6c5c5 155
e96e0834 156=back
95c6c5c5 157
e96e0834 158=head1 Diagnostics
95c6c5c5 159
e96e0834
JL
160The following additions or changes have been made to diagnostic output,
161including warnings and fatal error messages. For the complete list of
162diagnostic messages, see L<perldiag>.
95c6c5c5 163
e96e0834
JL
164XXX New or changed warnings emitted by the core's C<C> code go here. Also
165include any changes in L<perldiag> that reconcile it to the C<C> code.
71014848 166
e96e0834
JL
167[ Within each section, list entries as a =item entry that links to perldiag,
168 e.g.
71014848 169
e96e0834 170 =item *
95c6c5c5 171
e96e0834
JL
172 L<Invalid version object|perldiag/"Invalid version object">
173]
95c6c5c5 174
e96e0834 175=head2 New Diagnostics
95c6c5c5 176
e96e0834 177XXX Newly added diagnostic messages go here
95c6c5c5 178
e96e0834 179=head3 New Errors
95c6c5c5 180
e96e0834 181=over 4
95c6c5c5 182
95c6c5c5
JL
183=item *
184
40e43b78
FC
185L<Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/|perldiag/"Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/">
186
187This error has been added for C<(?&0)>, which is invalid. It used to
188produce an incomprehensible error message [perl #101666].
95c6c5c5 189
e96e0834 190=back
95c6c5c5 191
e96e0834 192=head3 New Warnings
95c6c5c5 193
e96e0834 194=over 4
95c6c5c5 195
95c6c5c5
JL
196=item *
197
72267260
JL
198C<chr()> now warns when passed a negative value [perl #83048].
199
200=item *
201
202C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the
203value will be truncated rather than overflowing) [perl #40605].
7d101ed1 204
e96e0834 205=back
d9661073 206
e96e0834 207=head2 Changes to Existing Diagnostics
95c6c5c5 208
e96e0834 209XXX Changes (i.e. rewording) of diagnostic messages go here
95c6c5c5 210
e96e0834 211=over 4
95c6c5c5
JL
212
213=item *
214
e96e0834 215XXX Describe change here
3630f57e 216
e96e0834 217=back
3630f57e 218
e96e0834 219=head1 Utility Changes
95c6c5c5 220
e96e0834
JL
221XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
222here. Most of these are built within the directories F<utils> and F<x2p>.
95c6c5c5 223
e96e0834
JL
224[ List utility changes as a =head3 entry for each utility and =item
225entries for each change
226Use L<XXX> with program names to get proper documentation linking. ]
95c6c5c5 227
e96e0834 228=head3 L<XXX>
95c6c5c5 229
e96e0834 230=over 4
95c6c5c5
JL
231
232=item *
233
e96e0834 234XXX
95c6c5c5 235
e96e0834 236=back
95c6c5c5 237
e96e0834 238=head1 Configuration and Compilation
95c6c5c5 239
e96e0834
JL
240XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
241go here. Any other changes to the Perl build process should be listed here.
242However, any platform-specific changes should be listed in the
243L</Platform Support> section, instead.
95c6c5c5 244
e96e0834 245[ List changes as a =item entry ].
95c6c5c5 246
e96e0834 247=over 4
95c6c5c5
JL
248
249=item *
250
c5057b0f
FC
251Building perl with some Windows compilers used to fail due to a problem
252with miniperl's C<glob> operator (which uses the C<perlglob> program)
253deleting the PATH environment variable [perl #113798].
95c6c5c5 254
81b820f9
FC
255=item *
256
257C<delete local> no longer crashes with certain magical arrays and hashes
258[perl #112966].
259
260=item *
261
262C<local> on elements of certain magical arrays and hashes used not to
263arrange to have the element deleted on scope exit, even if the element did
264not exist before C<local>.
265
1db1b2e4
FC
266=item *
267
268C<scalar(write)> no longer returns multiple items [perl #73690].
269
e96e0834 270=back
95c6c5c5 271
e96e0834 272=head1 Testing
95c6c5c5 273
e96e0834
JL
274XXX Any significant changes to the testing of a freshly built perl should be
275listed here. Changes which create B<new> files in F<t/> go here as do any
276large changes to the testing harness (e.g. when parallel testing was added).
277Changes to existing files in F<t/> aren't worth summarising, although the bugs
278that they represent may be covered elsewhere.
95c6c5c5 279
e96e0834 280[ List each test improvement as a =item entry ]
95c6c5c5 281
e96e0834 282=over 4
95c6c5c5
JL
283
284=item *
285
e96e0834 286XXX
95c6c5c5 287
61174fb5 288=back
f558db2f 289
e96e0834 290=head1 Platform Support
05c8f9ed 291
e96e0834 292XXX Any changes to platform support should be listed in the sections below.
05c8f9ed 293
e96e0834
JL
294[ Within the sections, list each platform as a =item entry with specific
295changes as paragraphs below it. ]
9dea6244 296
e96e0834 297=head2 New Platforms
9dea6244 298
e96e0834
JL
299XXX List any platforms that this version of perl compiles on, that previous
300versions did not. These will either be enabled by new files in the F<hints/>
301directories, or new subdirectories and F<README> files at the top level of the
302source tree.
7d101ed1
JL
303
304=over 4
305
e96e0834 306=item XXX-some-platform
7d101ed1 307
e96e0834 308XXX
7d101ed1
JL
309
310=back
311
e96e0834 312=head2 Discontinued Platforms
ef7131e9 313
e96e0834 314XXX List any platforms that this version of perl no longer compiles on.
4a301309
FC
315
316=over 4
317
e96e0834 318=item XXX-some-platform
8dffc0ab 319
e96e0834 320XXX
dbc84d79 321
4a301309
FC
322=back
323
61174fb5 324=head2 Platform-Specific Notes
ceb0881c 325
e96e0834
JL
326XXX List any changes for specific platforms. This could include configuration
327and compilation changes or changes in portability/compatibility. However,
328changes within modules for platforms should generally be listed in the
329L</Modules and Pragmata> section.
89cbc6b8 330
e96e0834 331=over 4
0998713f 332
e96e0834 333=item XXX-some-platform
112b6866 334
e96e0834 335XXX
112b6866 336
61174fb5 337=back
8e125188 338
61174fb5 339=head1 Internal Changes
8e125188 340
e96e0834
JL
341XXX Changes which affect the interface available to C<XS> code go here.
342Other significant internal changes for future core maintainers should
343be noted as well.
c4643160 344
e96e0834 345[ List each change as a =item entry ]
f8ef51fd 346
e96e0834 347=over 4
e128ab2c 348
e2f0c3bb
FC
349=item *
350
e96e0834 351XXX
e2f0c3bb 352
61174fb5 353=back
422287bf 354
61174fb5 355=head1 Selected Bug Fixes
2de6ba8d 356
e96e0834
JL
357XXX Important bug fixes in the core language are summarised here.
358Bug fixes in files in F<ext/> and F<lib/> are best summarised in
359L</Modules and Pragmata>.
52c4b146 360
e96e0834 361[ List each fix as a =item entry ]
e128ab2c
DM
362
363=over 4
364
365=item *
366
48895a0d
KW
367A regression introduced in v5.14.0 has been fixed, in which some calls
368to the C<re> module would clobber C<$_>.
e128ab2c 369
8b1adbab
JL
370=item *
371
372C<do FILE> now always either sets or clears C<$@>, even when the file can't be
373read. This ensures that testing C<$@> first (as recommended by the
374documentation) always returns the correct result.
375
83f29afa
VP
376=item *
377
378The array iterator used for the C<each @array> construct is now correctly
379reset when C<@array> is cleared (RT #75596). This happens for example when the
380array is globally assigned to, as in C<@array = (...)>, but not when its
381B<values> are assigned to. In terms of the XS API, it means that C<av_clear()>
382will now reset the iterator.
383
384This mirrors the behaviour of the hash iterator when the hash is cleared.
385
0938f143
JL
386=item *
387
388C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return
389correct results, regardless of whether that package referred to by C<$class>
390exists [perl #47113].
391
72267260
JL
392=item *
393
394Arriving signals no longer clear C<$@> [perl #45173].
395
7a251f7a
JL
396=item *
397
398Allow C<my ()> declarations with an empty variable list [perl #113554].
399
21247d85
FC
400=item *
401
402During parsing, subs declared after errors no longer leave stubs
403[perl #113712].
404
2e4f8b82
FC
405=item *
406
c95d4104
FC
407Closures containing no string evals no longer hang on to their containing
408subroutines, allowing variables closed over by outer subroutines to be
409freed when the outer sub is freed, even if the inner sub still exists
410[perl #89544].
411
788505db
FC
412=item *
413
414Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode
415stopped working properly in 5.16.0. It was causing the new handle to
416reference a different scalar variable. This has been fixed [perl #113764].
417
2c2b9cf4
FC
418=item *
419
420C<qr//> expressions no longer crash with custom regular expression engines
421that do not set C<offs> at regular expression compilation time
422[perl #112962].
423
e128ab2c
DM
424=back
425
e96e0834 426=head1 Known Problems
dbc84d79 427
e96e0834
JL
428XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
429tests that had to be C<TODO>ed for the release would be noted here. Unfixed
430platform specific bugs also go here.
53de3ff0 431
e96e0834 432[ List each fix as a =item entry ]
233bba44
JL
433
434=over 4
435
436=item *
437
e96e0834 438XXX
233bba44 439
e96e0834 440=back
233bba44 441
e96e0834 442=head1 Obituary
233bba44 443
e96e0834
JL
444XXX If any significant core contributor has died, we've added a short obituary
445here.
233bba44 446
61174fb5 447=head1 Acknowledgements
d5dc7001 448
e96e0834
JL
449XXX Generate this with:
450
451 perl Porting/acknowledgements.pl v5.17.1..HEAD
29cf780c 452
44691e6f
AB
453=head1 Reporting Bugs
454
455If you find what you think is a bug, you might check the articles
52deee2e 456recently posted to the comp.lang.perl.misc newsgroup and the perl
f9001595
RS
457bug database at http://rt.perl.org/perlbug/ . There may also be
458information at http://www.perl.org/ , the Perl Home Page.
44691e6f
AB
459
460If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
461program included with your release. Be sure to trim your bug down
462to a tiny but sufficient test case. Your bug report, along with the
463output of C<perl -V>, will be sent off to perlbug@perl.org to be
464analysed by the Perl porting team.
44691e6f
AB
465
466If the bug you are reporting has security implications, which make it
f9001595
RS
467inappropriate to send to a publicly archived mailing list, then please send
468it to perl5-security-report@perl.org. This points to a closed subscription
469unarchived mailing list, which includes
470all the core committers, who will be able
471to help assess the impact of issues, figure out a resolution, and help
472co-ordinate the release of patches to mitigate or fix the problem across all
473platforms on which Perl is supported. Please only use this address for
474security issues in the Perl core, not for modules independently
475distributed on CPAN.
44691e6f
AB
476
477=head1 SEE ALSO
478
52deee2e
DR
479The F<Changes> file for an explanation of how to view exhaustive details
480on what changed.
44691e6f
AB
481
482The F<INSTALL> file for how to build Perl.
483
484The F<README> file for general stuff.
485
486The F<Artistic> and F<Copying> files for copyright information.
487
488=cut