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