This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta copy-editing
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
b26bd9b0
PM
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.23.4
eabfc7bc 9
2cfe9b50 10=head1 DESCRIPTION
eabfc7bc 11
b26bd9b0 12This document describes differences between the 5.23.3 release and the 5.23.4
2cfe9b50 13release.
eabfc7bc 14
b26bd9b0
PM
15If you are upgrading from an earlier release such as 5.23.2, first read
16L<perl5233delta>, which describes differences between 5.23.2 and 5.23.3.
a43707ab 17
b26bd9b0 18=head1 Notice
a0bd1a30 19
b26bd9b0 20XXX Any important notices here
a0bd1a30 21
b26bd9b0 22=head1 Core Enhancements
deaaea8c 23
b26bd9b0
PM
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
fb7e9cdd 27
b26bd9b0 28[ List each enhancement as a =head2 entry ]
fb7e9cdd 29
b26bd9b0 30=head1 Security
deaaea8c 31
b26bd9b0
PM
32XXX Any security-related notices go here. In particular, any security
33vulnerabilities closed should be noted here rather than in the
34L</Selected Bug Fixes> section.
7d380357 35
b26bd9b0 36[ List each security issue as a =head2 entry ]
a43707ab 37
b26bd9b0 38=head1 Incompatible Changes
a43707ab 39
9ff1a054
RS
40=head2 Lexical $_ has been removed
41
a6d3278e
SH
42C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
43with no obvious solution. In Perl 5.18.0, it was made experimental on the
9ff1a054
RS
44theory that it would either be removed or redesigned in a less confusing (but
45backward-incompatible) way. Over the following years, no alternatives were
46proposed. The feature has now been removed and will fail to compile.
0ba9d88c 47
d6b89212
KW
48=head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
49
a6d3278e
SH
50The experimental Extended Bracketed Character Classes can contain regular
51bracketed character classes within them. These differ from regular ones in
52that white space is generally ignored, unless escaped by preceding it with a
53backslash. The white space that is ignored is now limited to just tab C<\t>
54and SPACE characters. Previously, it was any white space. See
d6b89212
KW
55L<perlrecharclass/Extended Bracketed Character Classes>.
56
b26bd9b0 57=head1 Deprecations
0ba9d88c 58
b26bd9b0 59XXX Any deprecated features, syntax, modules etc. should be listed here.
0ba9d88c 60
b26bd9b0 61=head2 Module removals
a43707ab 62
b26bd9b0 63XXX Remove this section if inapplicable.
a43707ab 64
b26bd9b0
PM
65The following modules will be removed from the core distribution in a
66future release, and will at that time need to be installed from CPAN.
67Distributions on CPAN which require these modules will need to list them as
68prerequisites.
a43707ab 69
b26bd9b0
PM
70The core versions of these modules will now issue C<"deprecated">-category
71warnings to alert you to this fact. To silence these deprecation warnings,
72install the modules in question from CPAN.
0ba9d88c 73
b26bd9b0
PM
74Note that these are (with rare exceptions) fine modules that you are encouraged
75to continue to use. Their disinclusion from core primarily hinges on their
76necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
77not usually on concerns over their design.
cf73ceda 78
b26bd9b0 79=over
fc4c3cec 80
b26bd9b0 81=item XXX
fc4c3cec 82
b26bd9b0
PM
83XXX Note that deprecated modules should be listed here even if they are listed
84as an updated module in the L</Modules and Pragmata> section.
fc4c3cec 85
b26bd9b0 86=back
80e86009 87
b26bd9b0 88[ List each other deprecation as a =head2 entry ]
80e86009 89
b26bd9b0 90=head1 Performance Enhancements
fc4c3cec 91
b26bd9b0
PM
92XXX Changes which enhance performance without changing behaviour go here.
93There may well be none in a stable release.
fc4c3cec 94
b26bd9b0 95[ List each enhancement as a =item entry ]
a43707ab 96
b26bd9b0 97=over 4
a43707ab 98
0dafb1ce 99=item *
5ea25977 100
b26bd9b0 101XXX
fc4c3cec 102
b26bd9b0 103=back
fc4c3cec 104
b26bd9b0 105=head1 Modules and Pragmata
eabfc7bc 106
b26bd9b0
PM
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>. A paragraph summary
110for important changes should then be added by hand. In an ideal world,
111dual-life modules would have a F<Changes> file that could be cribbed.
eabfc7bc 112
b26bd9b0 113[ Within each section, list entries as a =item entry ]
eabfc7bc 114
b26bd9b0 115=head2 New Modules and Pragmata
eabfc7bc 116
b26bd9b0 117=over 4
cf73ceda 118
0dafb1ce 119=item *
a43707ab 120
b26bd9b0 121XXX
eabfc7bc 122
b26bd9b0 123=back
80e86009 124
b26bd9b0 125=head2 Updated Modules and Pragmata
5ea25977 126
b26bd9b0 127=over 4
80e86009 128
0dafb1ce 129=item *
80e86009 130
b26bd9b0 131L<XXX> has been upgraded from version A.xx to B.yy.
5ea25977 132
b26bd9b0 133=back
5ea25977 134
b26bd9b0
PM
135=head2 Removed Modules and Pragmata
136
137=over 4
0dd5b0dc 138
0dafb1ce 139=item *
a43707ab 140
b26bd9b0 141XXX
a43707ab 142
b26bd9b0 143=back
a43707ab 144
b26bd9b0 145=head1 Documentation
0dd5b0dc 146
b26bd9b0
PM
147XXX Changes to files in F<pod/> go here. Consider grouping entries by
148file and be sure to link to the appropriate page, e.g. L<perlfunc>.
0dafb1ce 149
b26bd9b0 150=head2 New Documentation
356231b0 151
b26bd9b0 152XXX Changes which create B<new> files in F<pod/> go here.
356231b0 153
b26bd9b0 154=head3 L<XXX>
a2373b32 155
b26bd9b0 156XXX Description of the purpose of the new file here
eabfc7bc 157
b26bd9b0 158=head2 Changes to Existing Documentation
cf73ceda 159
b26bd9b0
PM
160XXX Changes which significantly change existing files in F<pod/> go here.
161However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
162section.
eabfc7bc 163
b26bd9b0
PM
164=head3 L<XXX>
165
166=over 4
eabfc7bc 167
0dafb1ce 168=item *
eabfc7bc 169
b26bd9b0 170XXX Description of the change here
5ea25977 171
b26bd9b0 172=back
5ea25977 173
b26bd9b0 174=head1 Diagnostics
5ea25977 175
b26bd9b0
PM
176The following additions or changes have been made to diagnostic output,
177including warnings and fatal error messages. For the complete list of
178diagnostic messages, see L<perldiag>.
5ea25977 179
b26bd9b0
PM
180XXX New or changed warnings emitted by the core's C<C> code go here. Also
181include any changes in L<perldiag> that reconcile it to the C<C> code.
a43707ab 182
b26bd9b0 183=head2 New Diagnostics
a43707ab 184
b26bd9b0
PM
185XXX Newly added diagnostic messages go under here, separated into New Errors
186and New Warnings
a43707ab 187
b26bd9b0 188=head3 New Errors
0dafb1ce 189
b26bd9b0 190=over 4
5ea25977
MH
191
192=item *
193
163a633c 194L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
dc013420 195
4003ea29
KW
196=item *
197
198L<perldiag/"Illegal user-defined property name">
199
cf73ceda 200=back
dc013420 201
b26bd9b0 202=head3 New Warnings
6962a25d 203
80e86009 204=over 4
f282dc56 205
80e86009 206=item *
f282dc56 207
b26bd9b0 208XXX L<message|perldiag/"message">
f282dc56 209
80e86009 210=back
f282dc56 211
b26bd9b0 212=head2 Changes to Existing Diagnostics
0dafb1ce 213
b26bd9b0 214XXX Changes (i.e. rewording) of diagnostic messages go here
a43707ab 215
0dafb1ce 216=over 4
a43707ab 217
0dafb1ce
PM
218=item *
219
a0c8eb51
TC
220L<"Can't modify non-lvalue subroutine call of &%s"|perldiag/"Can't modify non-lvalue subroutine call of &%s">
221
a6d3278e
SH
222This error now reports the name of the non-lvalue subroutine you attempted to
223use as an lvalue.
f282dc56 224
b26bd9b0 225=back
f282dc56 226
b26bd9b0 227=head1 Utility Changes
f282dc56 228
b26bd9b0
PM
229XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
230Most of these are built within the directory F<utils>.
cf73ceda 231
b26bd9b0
PM
232[ List utility changes as a =head2 entry for each utility and =item
233entries for each change
234Use L<XXX> with program names to get proper documentation linking. ]
0dafb1ce 235
b26bd9b0
PM
236=head2 L<XXX>
237
238=over 4
cf73ceda 239
0dafb1ce 240=item *
cf73ceda 241
c2d4ebc6
DD
242Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
243C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
a6d3278e 244the interpreter, since Perl 5.17.10. This has been fixed.
cf73ceda 245
b26bd9b0
PM
246=back
247
248=head1 Configuration and Compilation
249
250XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
251go here. Any other changes to the Perl build process should be listed here.
252However, any platform-specific changes should be listed in the
253L</Platform Support> section, instead.
254
255[ List changes as a =item entry ].
cf73ceda 256
b26bd9b0 257=over 4
f282dc56
MH
258
259=item *
260
b26bd9b0 261XXX
cf73ceda
MH
262
263=back
264
b26bd9b0
PM
265=head1 Testing
266
267XXX Any significant changes to the testing of a freshly built perl should be
268listed here. Changes which create B<new> files in F<t/> go here as do any
269large changes to the testing harness (e.g. when parallel testing was added).
270Changes to existing files in F<t/> aren't worth summarizing, although the bugs
271that they represent may be covered elsewhere.
a43707ab 272
b26bd9b0 273[ List each test improvement as a =item entry ]
cf73ceda
MH
274
275=over 4
f282dc56
MH
276
277=item *
278
b26bd9b0 279XXX
cf73ceda 280
a43707ab 281=back
cf73ceda 282
b26bd9b0 283=head1 Platform Support
0b8e4842 284
b26bd9b0 285XXX Any changes to platform support should be listed in the sections below.
cf73ceda 286
b26bd9b0
PM
287[ Within the sections, list each platform as a =item entry with specific
288changes as paragraphs below it. ]
cf73ceda 289
b26bd9b0 290=head2 New Platforms
cf73ceda 291
b26bd9b0
PM
292XXX List any platforms that this version of perl compiles on, that previous
293versions did not. These will either be enabled by new files in the F<hints/>
294directories, or new subdirectories and F<README> files at the top level of the
295source tree.
0b8e4842 296
b26bd9b0 297=over 4
eabfc7bc 298
b26bd9b0 299=item XXX-some-platform
cf73ceda 300
b26bd9b0 301XXX
cf73ceda 302
0dafb1ce 303=back
a43707ab 304
b26bd9b0
PM
305=head2 Discontinued Platforms
306
307XXX List any platforms that this version of perl no longer compiles on.
cf73ceda 308
cf73ceda 309=over 4
374c951f 310
b26bd9b0 311=item XXX-some-platform
374c951f 312
b26bd9b0 313XXX
e586de20 314
fc4c3cec 315=back
e586de20 316
0dafb1ce 317=head2 Platform-Specific Notes
b7b593d8 318
b26bd9b0
PM
319XXX List any changes for specific platforms. This could include configuration
320and compilation changes or changes in portability/compatibility. However,
321changes within modules for platforms should generally be listed in the
322L</Modules and Pragmata> section.
323
fc4c3cec 324=over 4
4b951711 325
b26bd9b0 326=item XXX-some-platform
4b951711 327
b26bd9b0 328XXX
cf73ceda 329
0517ed38
DD
330=item Win32
331
332=over
333
334=item *
335
6937817d 336A new build option C<USE_NO_REGISTRY> has been added to the makefiles. This
a6d3278e
SH
337option is off by default, meaning the default is to do Windows registry
338lookups. This option stops Perl from looking inside the registry for anything.
339For what values are looked up in the registry see L<perlwin32>. Internally, in
340C, the name of this option is C<WIN32_NO_REGISTRY>.
6937817d
DD
341
342=item *
343
0517ed38 344The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
a6d3278e
SH
345C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
346vars starting with C<PERL> has changed. Previously, the 2 keys were checked
347for entries at all times through Perl processes life time even if they did not
348exist. For performance reasons, now, if the root key (i.e.
0517ed38
DD
349C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
350not exist at process start time, it will not be checked again for C<%ENV>
351override entries for the remainder of the Perl processes life. This more
a6d3278e
SH
352closely matches Unix behaviour in that the environment is copied or inherited
353on startup and changing the variable in the parent process or another process
354or editing <.bashrc> will not change the environmental variable in other
355existing, running, processes.
0517ed38 356
8ca2a5d6
DD
357=item *
358
359One glob fetch was removed for each C<-X> or C<stat> call whether done from
a6d3278e
SH
360Perl code or internally from Perl's C code. The glob being looked up was
361C<${^WIN32_SLOPPY_STAT}> which is a special variable. This makes C<-X> and
8ca2a5d6
DD
362C<stat> slightly faster.
363
364=item *
365
a6d3278e
SH
366During miniperl's process startup, during the build process, 4 to 8 IO calls
367related to the process starting F<.pl> and the F<buildcustomize.pl> file were
368removed from the code opening and executing the first 1 or 2 F<.pl> files.
8ca2a5d6 369
0517ed38
DD
370=back
371
b26bd9b0 372=back
f4240379 373
b26bd9b0 374=head1 Internal Changes
f4240379 375
b26bd9b0
PM
376XXX Changes which affect the interface available to C<XS> code go here. Other
377significant internal changes for future core maintainers should be noted as
378well.
f4240379 379
b26bd9b0 380[ List each change as a =item entry ]
d89ea360 381
b26bd9b0 382=over 4
d89ea360
DD
383
384=item *
385
a6d3278e
SH
386L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>. It
387previously has always returned C<0> since Perl 5.000 stable but that was
fa7a1e49
DD
388undocumented. Although C<sv_backoff> is marked as public API, XS code is not
389expected to be impacted since the proper API call would be through public API
390C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
391C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
392meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
d89ea360 393
0efe3111
DM
394=item *
395
a6d3278e
SH
396The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
397with integer truncation and wrapping. In particular, some casts formerly used
398within the macros have been removed. This means for example that passing an
399unsigned nitems arg is likely to raise a compiler warning now (it's always been
400documented to require a signed value; formerly int, lately SSize_t).
0efe3111 401
d89ea360
DD
402=back
403
b26bd9b0 404=head1 Selected Bug Fixes
eabfc7bc 405
b26bd9b0
PM
406XXX Important bug fixes in the core language are summarized here. Bug fixes in
407files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
302ef3d4 408
b26bd9b0 409[ List each fix as a =item entry ]
302ef3d4 410
fc4c3cec 411=over 4
eabfc7bc 412
73d6481e 413=item *
eabfc7bc 414
a6d3278e
SH
415There were places in regular expression patterns where comments (C<(?#...)>)
416weren't allowed, but should have been. This is now fixed.
417L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
cf73ceda 418
5a55ed33
KW
419=item *
420
a6d3278e
SH
421A regression from perl Perl 5.20 has been fixed, in which some syntax errors in
422L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
423within regular expression patterns could cause a segfault instead of a proper
424error message.
425L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
5a55ed33 426
0efe3111
DM
427=item *
428
429Some problems with attempting to extend the perl stack to around 2G or 4G
a6d3278e
SH
430entries have been fixed. This was particularly an issue on 32-bit perls built
431to use 64-bit integers, and was easily noticeable with the list repetition
432operator, e.g.
0efe3111
DM
433
434 @a = (1) x $big_number
435
a6d3278e
SH
436Formerly perl may have crashed, depending on the exact value of C<$big_number>;
437now it will typically raise an exception.
438L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
0efe3111 439
b26bd9b0 440=back
9a7bb2f7 441
b26bd9b0 442=head1 Known Problems
9a7bb2f7 443
b26bd9b0
PM
444XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
445tests that had to be C<TODO>ed for the release would be noted here. Unfixed
446platform specific bugs also go here.
3160b44a 447
b26bd9b0
PM
448[ List each fix as a =item entry ]
449
450=over 4
3160b44a 451
f4240379
KW
452=item *
453
b26bd9b0 454XXX
f4240379 455
a43707ab 456=back
89afeb47 457
b26bd9b0 458=head1 Errata From Previous Releases
5ea25977 459
b26bd9b0 460=over 4
5a74572e 461
b26bd9b0 462=item *
5a74572e 463
a6d3278e
SH
464(This was actually done in Perl 5.23.2, but the perldelta entry got missed.)
465The way that C<OP_AASSIGN> handles assignment with potentially common values
466(e.g. C<($a,$b) = ($b, $a)> has changed. In particular the C<OPpASSIGN_COMMON>
467flag has been replaced with three more specific flags:
468
469 OPpASSIGN_COMMON_AGG
470 OPpASSIGN_COMMON_RC1
471 OPpASSIGN_COMMON_SCALAR
472
473and the runtime now sometimes does a mark and sweep using the C<SVf_BREAK> to
474detect common elements.
5a74572e 475
b26bd9b0 476=back
5a74572e 477
b26bd9b0
PM
478=head1 Obituary
479
480XXX If any significant core contributor has died, we've added a short obituary
481here.
482
483=head1 Acknowledgements
5a74572e 484
b26bd9b0 485XXX Generate this with:
5a74572e 486
b26bd9b0 487 perl Porting/acknowledgements.pl v5.23.3..HEAD
f5b73711 488
44691e6f
AB
489=head1 Reporting Bugs
490
e08634c5
SH
491If you find what you think is a bug, you might check the articles recently
492posted to the comp.lang.perl.misc newsgroup and the perl bug database at
fc4c3cec
RS
493L<https://rt.perl.org/> . There may also be information at
494L<http://www.perl.org/> , the Perl Home Page.
44691e6f 495
e08634c5
SH
496If you believe you have an unreported bug, please run the L<perlbug> program
497included with your release. Be sure to trim your bug down to a tiny but
498sufficient test case. Your bug report, along with the output of C<perl -V>,
499will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
500
501If the bug you are reporting has security implications, which make it
e08634c5
SH
502inappropriate to send to a publicly archived mailing list, then please send it
503to perl5-security-report@perl.org. This points to a closed subscription
504unarchived mailing list, which includes all the core committers, who will be
505able to help assess the impact of issues, figure out a resolution, and help
f9001595 506co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
507platforms on which Perl is supported. Please only use this address for
508security issues in the Perl core, not for modules independently distributed on
509CPAN.
44691e6f
AB
510
511=head1 SEE ALSO
512
e08634c5
SH
513The F<Changes> file for an explanation of how to view exhaustive details on
514what changed.
44691e6f
AB
515
516The F<INSTALL> file for how to build Perl.
517
518The F<README> file for general stuff.
519
520The F<Artistic> and F<Copying> files for copyright information.
521
522=cut