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