This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ddde9c76da9127a602fac4c87722ce8c7cdd23d1
[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 XXX
116
117 =back
118
119 =head1 Modules and Pragmata
120
121 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
122 go here.  If Module::CoreList is updated, generate an initial draft of the
123 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
124 for important changes should then be added by hand.  In an ideal world,
125 dual-life modules would have a F<Changes> file that could be cribbed.
126
127 [ Within each section, list entries as a =item entry ]
128
129 =head2 New Modules and Pragmata
130
131 =over 4
132
133 =item *
134
135 XXX
136
137 =back
138
139 =head2 Updated Modules and Pragmata
140
141 =over 4
142
143 =item *
144
145 L<XXX> has been upgraded from version A.xx to B.yy.
146
147 =back
148
149 =head2 Removed Modules and Pragmata
150
151 =over 4
152
153 =item *
154
155 XXX
156
157 =back
158
159 =head1 Documentation
160
161 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
162 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
163
164 =head2 New Documentation
165
166 XXX Changes which create B<new> files in F<pod/> go here.
167
168 =head3 L<XXX>
169
170 XXX Description of the purpose of the new file here
171
172 =head2 Changes to Existing Documentation
173
174 XXX Changes which significantly change existing files in F<pod/> go here.
175 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
176 section.
177
178 =head3 L<XXX>
179
180 =over 4
181
182 =item *
183
184 XXX Description of the change here
185
186 =back
187
188 =head1 Diagnostics
189
190 The following additions or changes have been made to diagnostic output,
191 including warnings and fatal error messages.  For the complete list of
192 diagnostic messages, see L<perldiag>.
193
194 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
195 include any changes in L<perldiag> that reconcile it to the C<C> code.
196
197 =head2 New Diagnostics
198
199 XXX Newly added diagnostic messages go under here, separated into New Errors
200 and New Warnings
201
202 =head3 New Errors
203
204 =over 4
205
206 =item *
207
208 L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s"">
209
210 =item *
211
212 L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename">
213
214 =item *
215
216 L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s"">
217
218 =item *
219
220 L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s"">
221
222 =back
223
224 =head3 New Warnings
225
226 =over 4
227
228 =item *
229
230 XXX L<message|perldiag/"message">
231
232 =back
233
234 =head2 Changes to Existing Diagnostics
235
236 XXX Changes (i.e. rewording) of diagnostic messages go here
237
238 =over 4
239
240 =item *
241
242 XXX Describe change here
243
244 =back
245
246 =head1 Utility Changes
247
248 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
249 Most of these are built within the directory F<utils>.
250
251 [ List utility changes as a =head2 entry for each utility and =item
252 entries for each change
253 Use L<XXX> with program names to get proper documentation linking. ]
254
255 =head2 L<XXX>
256
257 =over 4
258
259 =item *
260
261 XXX
262
263 =back
264
265 =head1 Configuration and Compilation
266
267 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
268 go here.  Any other changes to the Perl build process should be listed here.
269 However, any platform-specific changes should be listed in the
270 L</Platform Support> section, instead.
271
272 [ List changes as a =item entry ].
273
274 =over 4
275
276 =item *
277
278 C<Configure> now builds C<miniperl> and C<generate_uudmap> if you
279 invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>.
280 This means you can supply your target platform C<config.sh>, generate
281 the headers and proceed to build your cross-target perl.  [perl #127234]
282
283 =item *
284
285 Builds with C<-Accflags=-DPERL_TRACE_OPS> now only dump the operator
286 counts when the environment variable C<PERL_TRACE_OPS> to be set to a
287 non-zero integer.  This allows C<make test> to pass on such a build.
288
289 =back
290
291 =head1 Testing
292
293 XXX Any significant changes to the testing of a freshly built perl should be
294 listed here.  Changes which create B<new> files in F<t/> go here as do any
295 large changes to the testing harness (e.g. when parallel testing was added).
296 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
297 that they represent may be covered elsewhere.
298
299 [ List each test improvement as a =item entry ]
300
301 =over 4
302
303 =item *
304
305 XXX
306
307 =back
308
309 =head1 Platform Support
310
311 XXX Any changes to platform support should be listed in the sections below.
312
313 [ Within the sections, list each platform as a =item entry with specific
314 changes as paragraphs below it. ]
315
316 =head2 New Platforms
317
318 XXX List any platforms that this version of perl compiles on, that previous
319 versions did not.  These will either be enabled by new files in the F<hints/>
320 directories, or new subdirectories and F<README> files at the top level of the
321 source tree.
322
323 =over 4
324
325 =item XXX-some-platform
326
327 XXX
328
329 =back
330
331 =head2 Discontinued Platforms
332
333 XXX List any platforms that this version of perl no longer compiles on.
334
335 =over 4
336
337 =item XXX-some-platform
338
339 XXX
340
341 =back
342
343 =head2 Platform-Specific Notes
344
345 XXX List any changes for specific platforms.  This could include configuration
346 and compilation changes or changes in portability/compatibility.  However,
347 changes within modules for platforms should generally be listed in the
348 L</Modules and Pragmata> section.
349
350 =over 4
351
352 =item XXX-some-platform
353
354 XXX
355
356 =back
357
358 =head1 Internal Changes
359
360 XXX Changes which affect the interface available to C<XS> code go here.  Other
361 significant internal changes for future core maintainers should be noted as
362 well.
363
364 [ List each change as a =item entry ]
365
366 =over 4
367
368 =item *
369
370 Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by
371 default. To disable it, use the C<PERL_NO_OP_PARENT> compiler define.
372 This flag alters how the C<op_sibling> field is used in C<OP> structures,
373 and has been available optionally since perl 5.22.0.
374
375 See L<perl5220delta/"Internal Changes"> for more details of what this
376 build option does.
377
378 =back
379
380 =head1 Selected Bug Fixes
381
382 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
383 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
384
385 [ List each fix as a =item entry ]
386
387 =over 4
388
389 =item *
390
391 XXX
392
393 =back
394
395 =head1 Known Problems
396
397 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
398 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
399 platform specific bugs also go here.
400
401 [ List each fix as a =item entry ]
402
403 =over 4
404
405 =item *
406
407 XXX
408
409 =back
410
411 =head1 Errata From Previous Releases
412
413 =over 4
414
415 =item *
416
417 XXX Add anything here that we forgot to add, or were mistaken about, in
418 the perldelta of a previous release.
419
420 =back
421
422 =head1 Obituary
423
424 XXX If any significant core contributor has died, we've added a short obituary
425 here.
426
427 =head1 Acknowledgements
428
429 Generate this with:
430
431   perl Porting/acknowledgements.pl v5.25.1..HEAD
432
433 =head1 Reporting Bugs
434
435 If you find what you think is a bug, you might check the articles recently
436 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
437 L<https://rt.perl.org/> .  There may also be information at
438 L<http://www.perl.org/> , the Perl Home Page.
439
440 If you believe you have an unreported bug, please run the L<perlbug> program
441 included with your release.  Be sure to trim your bug down to a tiny but
442 sufficient test case.  Your bug report, along with the output of C<perl -V>,
443 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
444
445 If the bug you are reporting has security implications which make it
446 inappropriate to send to a publicly archived mailing list, then see
447 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
448 for details of how to report the issue.
449
450 =head1 SEE ALSO
451
452 The F<Changes> file for an explanation of how to view exhaustive details on
453 what changed.
454
455 The F<INSTALL> file for how to build Perl.
456
457 The F<README> file for general stuff.
458
459 The F<Artistic> and F<Copying> files for copyright information.
460
461 =cut