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