This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 08f800f85 / #128182
[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
192XXX Changes which significantly change existing files in F<pod/> go here.
193However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
194section.
195
196=head3 L<XXX>
197
198=over 4
199
200=item *
201
202XXX Description of the change here
203
204=back
205
206=head1 Diagnostics
207
208The following additions or changes have been made to diagnostic output,
209including warnings and fatal error messages. For the complete list of
210diagnostic messages, see L<perldiag>.
211
212XXX New or changed warnings emitted by the core's C<C> code go here. Also
213include any changes in L<perldiag> that reconcile it to the C<C> code.
214
215=head2 New Diagnostics
216
217XXX Newly added diagnostic messages go under here, separated into New Errors
218and New Warnings
219
220=head3 New Errors
221
222=over 4
223
224=item *
225
bf1007bc
DM
226L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s"">
227
228=item *
229
230L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename">
231
232=item *
233
234L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s"">
235
236=item *
237
238L<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
239
240=back
241
242=head3 New Warnings
243
244=over 4
245
246=item *
247
248XXX L<message|perldiag/"message">
249
250=back
e1ad135d 251
0302547a 252=head2 Changes to Existing Diagnostics
be2c0c65 253
0302547a 254XXX Changes (i.e. rewording) of diagnostic messages go here
be2c0c65 255
0302547a
RS
256=over 4
257
258=item *
259
4de751aa
AC
260Code like C<$x = $x . "a"> was incorrectly failing to yield a
261L<use of uninitialized value|perldiag/"Use of uninitialized value%s">
262warning when C<$x> was a lexical variable with an undefined value. That has
263now been fixed. [perl #127877]
0302547a 264
69ab4fe8
FC
265=item *
266
267When the error "Experimental push on scalar is now forbidden" is raised for
268the hash functions C<keys>, C<each>, and C<values>, it is now followed by
269the more helpful message, "Type of arg 1 to whatever must be hash or
270array". [perl #127976]
271
272=item *
273
274C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no
275argument to C<shift> or C<pop>, began crashing in Perl 5.14.0, but has now
276been fixed.
277
278=item *
279
280C<< "string$scalar->$*" >> now correctly prefers concat overloading to
281string overlading if C<< $scalar->$* >> returns an overloaded object,
282bringing it into consistency with C<$$scalar>.
283
284=item *
285
286C<< /@0{0*->@*/*0 >> and similar contortions used to crash, but no longer
287do, but merely produce a syntax error. [perl #128171]
288
f8591e08
FC
289=item *
290
291C<do> or C<require> with a reference or typeglob which, when stringified,
292contains a null character started crashing in Perl 5.20.0, but has now been
293fixed. [perl #128182]
294
0302547a
RS
295=back
296
297=head1 Utility Changes
298
299XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
300Most of these are built within the directory F<utils>.
301
302[ List utility changes as a =head2 entry for each utility and =item
303entries for each change
304Use L<XXX> with program names to get proper documentation linking. ]
305
4de751aa 306=head2 L<perlbug>
0302547a
RS
307
308=over 4
309
310=item *
311
4de751aa
AC
312Long lines in the message body are now wrapped at 900 characters, to stay
313well within the 1000-character limit imposed by SMTP mail transfer agents.
314This is particularly likely to be important for the list of arguments to
315C<Configure>, which can readily exceed the limit if, for example, it names
316several non-default installation paths. This change also adds the first unit
317tests for perlbug. [perl #128020]
0302547a
RS
318
319=back
320
321=head1 Configuration and Compilation
322
323XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
324go here. Any other changes to the Perl build process should be listed here.
325However, any platform-specific changes should be listed in the
326L</Platform Support> section, instead.
327
328[ List changes as a =item entry ].
329
330=over 4
331
332=item *
333
83a177d5
TC
334C<Configure> now builds C<miniperl> and C<generate_uudmap> if you
335invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>.
336This means you can supply your target platform C<config.sh>, generate
337the headers and proceed to build your cross-target perl. [perl #127234]
0302547a 338
f54530a4
TC
339=item *
340
341Builds with C<-Accflags=-DPERL_TRACE_OPS> now only dump the operator
342counts when the environment variable C<PERL_TRACE_OPS> to be set to a
343non-zero integer. This allows C<make test> to pass on such a build.
344
4de751aa
AC
345=item *
346
347When building with GCC 6 and link-time optimization (the C<-flto> option to
348C<gcc>), C<Configure> was treating all probed symbols as present on the
349system, regardless of whether they actually exist. This has been fixed.
350[perl #128131]
351
352=item *
353
354The F<t/test.pl> library is used for internal testing of Perl itself, and
355also copied by several CPAN modules. Some of those modules must work on
356older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl
357features. Compatibility with Perl 5.8 was inadvertently removed some time
358ago; it has now been restored. [perl #128052]
359
360=item *
361
362The build process no longer emits an extra blank line before building each
363"simple" extension (those with only F<*.pm> and F<*.pod> files).
364
0302547a
RS
365=back
366
367=head1 Testing
368
369XXX Any significant changes to the testing of a freshly built perl should be
370listed here. Changes which create B<new> files in F<t/> go here as do any
371large changes to the testing harness (e.g. when parallel testing was added).
372Changes to existing files in F<t/> aren't worth summarizing, although the bugs
373that they represent may be covered elsewhere.
374
375[ List each test improvement as a =item entry ]
376
377=over 4
378
379=item *
380
381XXX
382
383=back
384
385=head1 Platform Support
386
387XXX Any changes to platform support should be listed in the sections below.
388
389[ Within the sections, list each platform as a =item entry with specific
390changes as paragraphs below it. ]
391
392=head2 New Platforms
393
394XXX List any platforms that this version of perl compiles on, that previous
395versions did not. These will either be enabled by new files in the F<hints/>
396directories, or new subdirectories and F<README> files at the top level of the
397source tree.
398
399=over 4
400
401=item XXX-some-platform
402
403XXX
404
405=back
406
407=head2 Discontinued Platforms
408
409XXX List any platforms that this version of perl no longer compiles on.
410
411=over 4
412
413=item XXX-some-platform
414
415XXX
416
417=back
418
419=head2 Platform-Specific Notes
420
421XXX List any changes for specific platforms. This could include configuration
422and compilation changes or changes in portability/compatibility. However,
423changes within modules for platforms should generally be listed in the
424L</Modules and Pragmata> section.
425
426=over 4
427
428=item XXX-some-platform
429
430XXX
431
432=back
433
434=head1 Internal Changes
435
436XXX Changes which affect the interface available to C<XS> code go here. Other
437significant internal changes for future core maintainers should be noted as
438well.
439
440[ List each change as a =item entry ]
441
442=over 4
443
444=item *
445
bf1007bc
DM
446Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by
447default. To disable it, use the C<PERL_NO_OP_PARENT> compiler define.
448This flag alters how the C<op_sibling> field is used in C<OP> structures,
449and has been available optionally since perl 5.22.0.
450
451See L<perl5220delta/"Internal Changes"> for more details of what this
452build option does.
0302547a
RS
453
454=back
455
456=head1 Selected Bug Fixes
457
458XXX Important bug fixes in the core language are summarized here. Bug fixes in
459files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
460
461[ List each fix as a =item entry ]
462
463=over 4
464
465=item *
466
4de751aa
AC
467Expressions containing an C<&&> or C<||> operator (or their synonyms C<and>
468and C<or>) were being compiled incorrectly in some cases. If the left-hand
469side consisted of either a negated bareword constant or a negated C<do {}>
470block containing a constant expression, and the right-hand side consisted of
471a negated non-foldable expression, one of the negations was effectively
472ignored. The same was true of C<if> and C<unless> statement modifiers,
473though with the left-hand and right-hand sides swapped. This long-standing
474bug has now been fixed. [perl #127952]
0302547a 475
69ab4fe8
FC
476=item *
477
478C<reset> with an argument no longer crashes when encountering stash entries
479other than globs. [perl #128106]
480
481=item *
482
483Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no
484longer causes crashes. [perl #128086]
485
0302547a
RS
486=back
487
488=head1 Known Problems
489
490XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
491tests that had to be C<TODO>ed for the release would be noted here. Unfixed
492platform specific bugs also go here.
493
494[ List each fix as a =item entry ]
495
496=over 4
497
498=item *
499
500XXX
501
502=back
503
504=head1 Errata From Previous Releases
505
506=over 4
507
508=item *
509
510XXX Add anything here that we forgot to add, or were mistaken about, in
511the perldelta of a previous release.
512
513=back
514
515=head1 Obituary
516
517XXX If any significant core contributor has died, we've added a short obituary
518here.
519
520=head1 Acknowledgements
be2c0c65 521
0302547a 522Generate this with:
be2c0c65 523
0302547a 524 perl Porting/acknowledgements.pl v5.25.1..HEAD
f5b73711 525
44691e6f
AB
526=head1 Reporting Bugs
527
e08634c5
SH
528If you find what you think is a bug, you might check the articles recently
529posted to the comp.lang.perl.misc newsgroup and the perl bug database at
4b8803f0
RS
530L<https://rt.perl.org/> . There may also be information at
531L<http://www.perl.org/> , the Perl Home Page.
44691e6f 532
e08634c5
SH
533If you believe you have an unreported bug, please run the L<perlbug> program
534included with your release. Be sure to trim your bug down to a tiny but
535sufficient test case. Your bug report, along with the output of C<perl -V>,
536will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 537
87c118b9
DM
538If the bug you are reporting has security implications which make it
539inappropriate to send to a publicly archived mailing list, then see
540L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
541for details of how to report the issue.
44691e6f
AB
542
543=head1 SEE ALSO
544
e08634c5
SH
545The F<Changes> file for an explanation of how to view exhaustive details on
546what changed.
44691e6f
AB
547
548The F<INSTALL> file for how to build Perl.
549
550The F<README> file for general stuff.
551
552The F<Artistic> and F<Copying> files for copyright information.
553
554=cut