This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add a change to perldelta
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
0302547a 5perldelta - what is new for perl v5.25.1
eabfc7bc 6
2cfe9b50 7=head1 DESCRIPTION
eabfc7bc 8
0302547a 9This document describes differences between the 5.25.0 release and the 5.25.1
4b8803f0 10release.
f3ed8cbf 11
0302547a
RS
12If you are upgrading from an earlier release such as 5.24.0, first read
13L<perl5250delta>, which describes differences between 5.24.0 and 5.25.0.
eabfc7bc 14
0302547a 15=head1 Notice
fac0c351 16
0302547a
RS
17XXX Any important notices here
18
19=head1 Core Enhancements
20
21XXX New core language features go here. Summarize user-visible core language
22enhancements. Particularly prominent performance optimisations could go
23here, but most should go in the L</Performance Enhancements> section.
24
25[ List each enhancement as a =head2 entry ]
26
27=head1 Security
28
29XXX Any security-related notices go here. In particular, any security
30vulnerabilities closed should be noted here rather than in the
31L</Selected Bug Fixes> section.
32
33[ List each security issue as a =head2 entry ]
34
fef6692e
JH
35=head2 POSIX::tmpnam() has been removed
36
37The fundamentally unsafe C<tmpnam()> interface was deprecated in
38Perl 5.22.0 and has now been removed. In its place you can use
39for example the L<File::Temp> interfaces.
40
bf1007bc
DM
41=head2 require ::Foo::Bar is now illegal.
42
43Formerly, C<require ::Foo::Bar> would try to read F</Foo/Bar.pm>. Now any
44bareword require which starts with a double colon dies instead.
45
1656665e
KW
46=head2 Unescaped literal C<"{"> characters in regular expression
47patterns are no longer permissible
48
49You have to now say something like C<"\{"> or C<"[{]"> to specify to
50match a LEFT CURLY BRACKET. This will allow future extensions to the
51language. This restriction is not enforced, nor are there current plans
52to enforce it, if the C<"{"> is the first character in the pattern.
53
54These have been deprecated since v5.16, with a deprecation message
55displayed starting in v5.22.
56
acab2422
KW
57=head2 Literal control character variable names are no longer permissible
58
59A variable name may no longer contain a literal control character under
60any circumstances. These previously were allowed in single-character
61names on ASCII platforms, but have been deprecated there since Perl
62v5.20. This affects things like C<$I<\cT>>, where I<\cT> is a literal
63control (such as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in the
64source code.
0302547a 65
60108b47
KW
66=head2 C<qr//xx> is no longer permissible
67
68Using more than one C</x> regular expression pattern modifier on a
69single pattern is now forbidden. This is to allow a future enhancement
70to the language. This usage has been deprecated since v5.22.
71
61463a3e 72=head2 C<NBSP> is no longer permissible in C<\N{...}>
0302547a 73
61463a3e
KW
74The name of a character may no longer contain non-breaking spaces. It
75has been deprecated to do so since Perl v5.22.
0302547a
RS
76
77=head1 Deprecations
78
79XXX Any deprecated features, syntax, modules etc. should be listed here.
80
81=head2 Module removals
82
83XXX Remove this section if inapplicable.
84
85The following modules will be removed from the core distribution in a
86future release, and will at that time need to be installed from CPAN.
87Distributions on CPAN which require these modules will need to list them as
88prerequisites.
89
90The core versions of these modules will now issue C<"deprecated">-category
91warnings to alert you to this fact. To silence these deprecation warnings,
92install the modules in question from CPAN.
93
94Note that these are (with rare exceptions) fine modules that you are encouraged
95to continue to use. Their disinclusion from core primarily hinges on their
96necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
97not usually on concerns over their design.
98
99=over
100
101=item XXX
102
103XXX Note that deprecated modules should be listed here even if they are listed
104as an updated module in the L</Modules and Pragmata> section.
105
106=back
107
108[ List each other deprecation as a =head2 entry ]
109
110=head1 Performance Enhancements
111
112XXX Changes which enhance performance without changing behaviour go here.
113There may well be none in a stable release.
114
115[ List each enhancement as a =item entry ]
116
117=over 4
118
119=item *
120
4de751aa
AC
121Bareword constant strings are now permitted to take part in constant
122folding. They were originally exempted from constant folding in August 1999,
123during the development of Perl 5.6, to ensure that C<use strict "subs">
124would still apply to bareword constants. That has now been accomplished a
125different way, so barewords, like other constants, now gain the performance
126benefits of constant folding.
127
128This also means that void-context warnings on constant expressions of
129barewords now report the folded constant operand, rather than the operation;
130this matches the behaviour for non-bareword constants.
0302547a
RS
131
132=back
133
134=head1 Modules and Pragmata
135
136XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
137go here. If Module::CoreList is updated, generate an initial draft of the
138following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
139for important changes should then be added by hand. In an ideal world,
140dual-life modules would have a F<Changes> file that could be cribbed.
141
142[ Within each section, list entries as a =item entry ]
143
144=head2 New Modules and Pragmata
145
146=over 4
147
148=item *
149
150XXX
151
152=back
153
154=head2 Updated Modules and Pragmata
155
156=over 4
157
158=item *
4de751aa 159
fef6692e
JH
160L<POSIX> has been upgraded from version 1.66 to 1.69. This remedies several
161defects in making its symbols exportable. [perl #127821] Furthermore,
162the C<POSIX::tmpnam()> interface has been removed,
163see L</"POSIX::tmpnam() has been removed">.
0302547a
RS
164
165=back
166
167=head2 Removed Modules and Pragmata
168
169=over 4
170
171=item *
172
173XXX
174
175=back
176
177=head1 Documentation
178
179XXX Changes to files in F<pod/> go here. Consider grouping entries by
180file and be sure to link to the appropriate page, e.g. L<perlfunc>.
181
182=head2 New Documentation
183
184XXX Changes which create B<new> files in F<pod/> go here.
185
186=head3 L<XXX>
187
188XXX Description of the purpose of the new file here
189
190=head2 Changes to Existing Documentation
191
463bbb8d
S
192=over 4
193
194=item *
195
196Fixed link to Crosby paper on hash complexity attack in L<perlsec>.
197
198=back
199
0302547a
RS
200XXX Changes which significantly change existing files in F<pod/> go here.
201However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
202section.
203
204=head3 L<XXX>
205
206=over 4
207
208=item *
209
210XXX Description of the change here
211
212=back
213
214=head1 Diagnostics
215
216The following additions or changes have been made to diagnostic output,
217including warnings and fatal error messages. For the complete list of
218diagnostic messages, see L<perldiag>.
219
220XXX New or changed warnings emitted by the core's C<C> code go here. Also
221include any changes in L<perldiag> that reconcile it to the C<C> code.
222
223=head2 New Diagnostics
224
225XXX Newly added diagnostic messages go under here, separated into New Errors
226and New Warnings
227
228=head3 New Errors
229
230=over 4
231
232=item *
233
bf1007bc
DM
234L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s"">
235
236=item *
237
238L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename">
239
240=item *
241
242L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s"">
243
244=item *
245
246L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s"">
0302547a
RS
247
248=back
249
250=head3 New Warnings
251
252=over 4
253
254=item *
255
256XXX L<message|perldiag/"message">
257
258=back
e1ad135d 259
0302547a 260=head2 Changes to Existing Diagnostics
be2c0c65 261
0302547a 262XXX Changes (i.e. rewording) of diagnostic messages go here
be2c0c65 263
0302547a
RS
264=over 4
265
266=item *
267
4de751aa
AC
268Code like C<$x = $x . "a"> was incorrectly failing to yield a
269L<use of uninitialized value|perldiag/"Use of uninitialized value%s">
270warning when C<$x> was a lexical variable with an undefined value. That has
271now been fixed. [perl #127877]
0302547a 272
69ab4fe8
FC
273=item *
274
275When the error "Experimental push on scalar is now forbidden" is raised for
276the hash functions C<keys>, C<each>, and C<values>, it is now followed by
277the more helpful message, "Type of arg 1 to whatever must be hash or
278array". [perl #127976]
279
280=item *
281
282C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no
283argument to C<shift> or C<pop>, began crashing in Perl 5.14.0, but has now
284been fixed.
285
286=item *
287
288C<< "string$scalar->$*" >> now correctly prefers concat overloading to
289string overlading if C<< $scalar->$* >> returns an overloaded object,
290bringing it into consistency with C<$$scalar>.
291
292=item *
293
294C<< /@0{0*->@*/*0 >> and similar contortions used to crash, but no longer
295do, but merely produce a syntax error. [perl #128171]
296
f8591e08
FC
297=item *
298
299C<do> or C<require> with a reference or typeglob which, when stringified,
300contains a null character started crashing in Perl 5.20.0, but has now been
301fixed. [perl #128182]
302
0302547a
RS
303=back
304
305=head1 Utility Changes
306
307XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
308Most of these are built within the directory F<utils>.
309
310[ List utility changes as a =head2 entry for each utility and =item
311entries for each change
312Use L<XXX> with program names to get proper documentation linking. ]
313
4de751aa 314=head2 L<perlbug>
0302547a
RS
315
316=over 4
317
318=item *
319
4de751aa
AC
320Long lines in the message body are now wrapped at 900 characters, to stay
321well within the 1000-character limit imposed by SMTP mail transfer agents.
322This is particularly likely to be important for the list of arguments to
323C<Configure>, which can readily exceed the limit if, for example, it names
324several non-default installation paths. This change also adds the first unit
325tests for perlbug. [perl #128020]
0302547a
RS
326
327=back
328
329=head1 Configuration and Compilation
330
331XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
332go here. Any other changes to the Perl build process should be listed here.
333However, any platform-specific changes should be listed in the
334L</Platform Support> section, instead.
335
336[ List changes as a =item entry ].
337
338=over 4
339
340=item *
341
83a177d5
TC
342C<Configure> now builds C<miniperl> and C<generate_uudmap> if you
343invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>.
344This means you can supply your target platform C<config.sh>, generate
345the headers and proceed to build your cross-target perl. [perl #127234]
0302547a 346
f54530a4
TC
347=item *
348
349Builds with C<-Accflags=-DPERL_TRACE_OPS> now only dump the operator
350counts when the environment variable C<PERL_TRACE_OPS> to be set to a
351non-zero integer. This allows C<make test> to pass on such a build.
352
4de751aa
AC
353=item *
354
355When building with GCC 6 and link-time optimization (the C<-flto> option to
356C<gcc>), C<Configure> was treating all probed symbols as present on the
357system, regardless of whether they actually exist. This has been fixed.
358[perl #128131]
359
360=item *
361
362The F<t/test.pl> library is used for internal testing of Perl itself, and
363also copied by several CPAN modules. Some of those modules must work on
364older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl
365features. Compatibility with Perl 5.8 was inadvertently removed some time
366ago; it has now been restored. [perl #128052]
367
368=item *
369
370The build process no longer emits an extra blank line before building each
371"simple" extension (those with only F<*.pm> and F<*.pod> files).
372
0302547a
RS
373=back
374
375=head1 Testing
376
377XXX Any significant changes to the testing of a freshly built perl should be
378listed here. Changes which create B<new> files in F<t/> go here as do any
379large changes to the testing harness (e.g. when parallel testing was added).
380Changes to existing files in F<t/> aren't worth summarizing, although the bugs
381that they represent may be covered elsewhere.
382
383[ List each test improvement as a =item entry ]
384
385=over 4
386
387=item *
388
389XXX
390
391=back
392
393=head1 Platform Support
394
395XXX Any changes to platform support should be listed in the sections below.
396
397[ Within the sections, list each platform as a =item entry with specific
398changes as paragraphs below it. ]
399
400=head2 New Platforms
401
402XXX List any platforms that this version of perl compiles on, that previous
403versions did not. These will either be enabled by new files in the F<hints/>
404directories, or new subdirectories and F<README> files at the top level of the
405source tree.
406
407=over 4
408
409=item XXX-some-platform
410
411XXX
412
413=back
414
415=head2 Discontinued Platforms
416
417XXX List any platforms that this version of perl no longer compiles on.
418
419=over 4
420
421=item XXX-some-platform
422
423XXX
424
425=back
426
427=head2 Platform-Specific Notes
428
429XXX List any changes for specific platforms. This could include configuration
430and compilation changes or changes in portability/compatibility. However,
431changes within modules for platforms should generally be listed in the
432L</Modules and Pragmata> section.
433
434=over 4
435
436=item XXX-some-platform
437
438XXX
439
440=back
441
442=head1 Internal Changes
443
444XXX Changes which affect the interface available to C<XS> code go here. Other
445significant internal changes for future core maintainers should be noted as
446well.
447
448[ List each change as a =item entry ]
449
450=over 4
451
452=item *
453
bf1007bc
DM
454Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by
455default. To disable it, use the C<PERL_NO_OP_PARENT> compiler define.
456This flag alters how the C<op_sibling> field is used in C<OP> structures,
457and has been available optionally since perl 5.22.0.
458
459See L<perl5220delta/"Internal Changes"> for more details of what this
460build option does.
0302547a
RS
461
462=back
463
464=head1 Selected Bug Fixes
465
466XXX Important bug fixes in the core language are summarized here. Bug fixes in
467files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
468
469[ List each fix as a =item entry ]
470
471=over 4
472
473=item *
474
4de751aa
AC
475Expressions containing an C<&&> or C<||> operator (or their synonyms C<and>
476and C<or>) were being compiled incorrectly in some cases. If the left-hand
477side consisted of either a negated bareword constant or a negated C<do {}>
478block containing a constant expression, and the right-hand side consisted of
479a negated non-foldable expression, one of the negations was effectively
480ignored. The same was true of C<if> and C<unless> statement modifiers,
481though with the left-hand and right-hand sides swapped. This long-standing
482bug has now been fixed. [perl #127952]
0302547a 483
69ab4fe8
FC
484=item *
485
486C<reset> with an argument no longer crashes when encountering stash entries
487other than globs. [perl #128106]
488
489=item *
490
491Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no
492longer causes crashes. [perl #128086]
493
0302547a
RS
494=back
495
496=head1 Known Problems
497
498XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
499tests that had to be C<TODO>ed for the release would be noted here. Unfixed
500platform specific bugs also go here.
501
502[ List each fix as a =item entry ]
503
504=over 4
505
506=item *
507
508XXX
509
510=back
511
512=head1 Errata From Previous Releases
513
514=over 4
515
516=item *
517
518XXX Add anything here that we forgot to add, or were mistaken about, in
519the perldelta of a previous release.
520
521=back
522
523=head1 Obituary
524
525XXX If any significant core contributor has died, we've added a short obituary
526here.
527
528=head1 Acknowledgements
be2c0c65 529
0302547a 530Generate this with:
be2c0c65 531
0302547a 532 perl Porting/acknowledgements.pl v5.25.1..HEAD
f5b73711 533
44691e6f
AB
534=head1 Reporting Bugs
535
e08634c5
SH
536If you find what you think is a bug, you might check the articles recently
537posted to the comp.lang.perl.misc newsgroup and the perl bug database at
4b8803f0
RS
538L<https://rt.perl.org/> . There may also be information at
539L<http://www.perl.org/> , the Perl Home Page.
44691e6f 540
e08634c5
SH
541If you believe you have an unreported bug, please run the L<perlbug> program
542included with your release. Be sure to trim your bug down to a tiny but
543sufficient test case. Your bug report, along with the output of C<perl -V>,
544will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 545
87c118b9
DM
546If the bug you are reporting has security implications which make it
547inappropriate to send to a publicly archived mailing list, then see
548L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
549for details of how to report the issue.
44691e6f
AB
550
551=head1 SEE ALSO
552
e08634c5
SH
553The F<Changes> file for an explanation of how to view exhaustive details on
554what changed.
44691e6f
AB
555
556The F<INSTALL> file for how to build Perl.
557
558The F<README> file for general stuff.
559
560The F<Artistic> and F<Copying> files for copyright information.
561
562=cut