This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta b3893bfa90e8810497e2f81458a5a46db611cadf
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.27.7
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.27.6 release and the 5.27.7
13 release.
14
15 If you are upgrading from an earlier release such as 5.27.5, first read
16 L<perl5276delta>, which describes differences between 5.27.5 and 5.27.6.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head2  The C<sprintf> C<%j> format size modifier is now available with
31 pre-C99 compilers
32
33 The actual size used depends on the platform, so remains unportable.
34
35 =head1 Security
36
37 XXX Any security-related notices go here.  In particular, any security
38 vulnerabilities closed should be noted here rather than in the
39 L</Selected Bug Fixes> section.
40
41 [ List each security issue as a =head2 entry ]
42
43 =head1 Incompatible Changes
44
45 XXX For a release on a stable branch, this section aspires to be:
46
47     There are no changes intentionally incompatible with 5.XXX.XXX
48     If any exist, they are bugs, and we request that you submit a
49     report.  See L</Reporting Bugs> below.
50
51 [ List each incompatible change as a =head2 entry ]
52
53 =head2 Over-radix digits in floating point literals
54
55 Octal and binary floating point literals used to permit any hexadecimal
56 digit to appear after the radix point.  The digits are now restricted
57 to those appropriate for the radix, as digits before the radix point
58 always were.
59
60 =head1 Deprecations
61
62 XXX Any deprecated features, syntax, modules etc. should be listed here.
63
64 =head2 Assignment to C<$[> will be fatal in Perl 5.30
65
66 Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated
67 since Perl 5.12, but was never given a deadline for removal.  This has
68 now been scheduled for Perl 5.30.
69
70 =head2 hostname() won't accept arguments in Perl 5.32
71
72 Passing arguments to C<Sys::Hostname::hostname()> was already deprecated,
73 but didn't have a removal date.  This has now been scheduled for Perl
74 5.32.  [perl #124349]
75
76 =head2 Module removals
77
78 XXX Remove this section if not applicable.
79
80 The following modules will be removed from the core distribution in a
81 future release, and will at that time need to be installed from CPAN.
82 Distributions on CPAN which require these modules will need to list them as
83 prerequisites.
84
85 The core versions of these modules will now issue C<"deprecated">-category
86 warnings to alert you to this fact.  To silence these deprecation warnings,
87 install the modules in question from CPAN.
88
89 Note that these are (with rare exceptions) fine modules that you are encouraged
90 to continue to use.  Their disinclusion from core primarily hinges on their
91 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
92 not usually on concerns over their design.
93
94 =over
95
96 =item L<Locale::Codes> and its associated Country, Currency and Language modules
97
98 XXX Note that deprecated modules should be listed here even if they are listed
99 as an updated module in the L</Modules and Pragmata> section.
100
101 =back
102
103 [ List each other deprecation as a =head2 entry ]
104
105 =head1 Performance Enhancements
106
107 XXX Changes which enhance performance without changing behaviour go here.
108 There may well be none in a stable release.
109
110 [ List each enhancement as an =item entry ]
111
112 =over 4
113
114 =item *
115
116 XXX
117
118 =back
119
120 =head1 Modules and Pragmata
121
122 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
123 go here.  If Module::CoreList is updated, generate an initial draft of the
124 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
125 for important changes should then be added by hand.  In an ideal world,
126 dual-life modules would have a F<Changes> file that could be cribbed.
127
128 The list of new and updated modules is modified automatically as part of
129 preparing a Perl release, so the only reason to manually add entries here is if
130 you're summarising the important changes in the module update. (Also, if the
131 manually-added details don't match the automatically-generated ones, the
132 release manager will have to investigate the situation carefully.)
133
134 [ Within each section, list entries as an =item entry ]
135
136 =head2 New Modules and Pragmata
137
138 =over 4
139
140 =item *
141
142 XXX Remove this section if not applicable.
143
144 =back
145
146 =head2 Updated Modules and Pragmata
147
148 =over 4
149
150 =item *
151
152 L<Locale::Codes> has been upgraded from version 3.54 to 3.55
153
154 B<NOTE>: L<Locale::Codes> is deprecated in core and will be removed
155 from Perl 5.30.
156
157 =item *
158
159 L<Data::Dumper> has been upgraded from version 2.167_02 to 2.168.
160 Quoting of glob names now obeys the Useqq option [perl #119831].
161
162 =back
163
164 =head2 Removed Modules and Pragmata
165
166 =over 4
167
168 =item *
169
170 XXX
171
172 =back
173
174 =head1 Documentation
175
176 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
177 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
178
179 =head2 New Documentation
180
181 XXX Changes which create B<new> files in F<pod/> go here.
182
183 =head3 L<XXX>
184
185 XXX Description of the purpose of the new file here
186
187 =head2 Changes to Existing Documentation
188
189 We have attempted to update the documentation to reflect the changes
190 listed in this document.  If you find any we have missed, send email
191 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
192
193 XXX Changes which significantly change existing files in F<pod/> go here.
194 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
195 section.
196
197 Additionally, the following selected changes have been made:
198
199 =head3 L<perlapi>
200
201 The documentation of C<newGIVENOP()> has been belatedly updated to
202 account for the removal of lexical C<$_>.
203
204 The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
205 documented much more comprehensively than before.
206
207 =head3 L<perlop>
208
209 The general explanation of operator precedence and associativity has
210 been corrected and clarified.  [perl #127391]
211
212 The documentation for the C<\> referencing operator now explains the
213 unusual context that it supplies to its operand.  [perl #131061]
214
215 =head3 L<perlsyn>
216
217 The means to disambiguate between code blocks and hash constructors,
218 already documented in L<perlref>, are now documented in L<perlsyn> too.
219 [perl #130958]
220
221 =head3 L<perlfunc>
222
223 The documentation for the C<exists> operator no longer says that
224 autovivification behaviour "may be fixed in a future release".
225 We've determined that we're not going to change the default behaviour.
226 [perl #127712]
227
228 A couple of small details in the documentation for the C<bless> operator
229 have been clarified.  [perl #124428]
230
231 =head3 L<perluniprops>
232
233 For each binary table or property, the documentation now includes which
234 characters in the range C<\x00-\xFF> it matches, as well as a list of
235 the first few ranges of code points matched above that.
236
237 =head3 L<perldebguts>
238
239 The description of the conditions under which C<DB::sub()> will be called
240 has been clarified.  [perl #131672]
241
242 =head3 L<perlintern>
243
244 The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
245 now documented.
246
247 =over 4
248
249 =item *
250
251 XXX Description of the change here
252
253 =back
254
255 =head1 Diagnostics
256
257 The following additions or changes have been made to diagnostic output,
258 including warnings and fatal error messages.  For the complete list of
259 diagnostic messages, see L<perldiag>.
260
261 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
262 include any changes in L<perldiag> that reconcile it to the C<C> code.
263
264 =head2 New Diagnostics
265
266 XXX Newly added diagnostic messages go under here, separated into New Errors
267 and New Warnings
268
269 =head3 New Errors
270
271 =over 4
272
273 =item *
274
275 L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
276
277 (F) A "goto" statement was executed to jump into the middle of a C<given>
278 block.  You can't get there from here.  See L<perlfunc/goto>.
279
280 =back
281
282 =head3 New Warnings
283
284 =over 4
285
286 =item *
287
288 L<Old package separator used in string|perldiag/"Old package separator used in string">
289
290 (W syntax) You used the old package separator, "'", in a variable
291 named inside a double-quoted string; e.g., C<"In $name's house">.  This
292 is equivalent to C<"In $name::s house">.  If you meant the former, put
293 a backslash before the apostrophe (C<"In $name\'s house">).
294
295 =back
296
297 =head2 Changes to Existing Diagnostics
298
299 XXX Changes (i.e. rewording) of diagnostic messages go here
300
301 =over 4
302
303 =item *
304
305 XXX Describe change here
306
307 =item *
308
309 Warnings that a variable or subroutine "masks earlier declaration in same
310 ...", or that an C<our> variable has been redeclared, have been moved to a
311 new warnings category "shadow".  Previously they were in category "misc".
312
313 =item *
314
315 The deprecation warning from C<Sys::Hostname::hostname()> saying that
316 it doesn't accept arguments now states the Perl version in which the
317 warning will be upgraded to an error.  [perl #124349]
318
319 =back
320
321 =head1 Utility Changes
322
323 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
324 Most of these are built within the directory F<utils>.
325
326 [ List utility changes as a =head2 entry for each utility and =item
327 entries for each change
328 Use L<XXX> with program names to get proper documentation linking. ]
329
330 =head2 L<XXX>
331
332 =over 4
333
334 =item *
335
336 XXX
337
338 =back
339
340 =head1 Configuration and Compilation
341
342 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
343 go here.  Any other changes to the Perl build process should be listed here.
344 However, any platform-specific changes should be listed in the
345 L</Platform Support> section, instead.
346
347 [ List changes as an =item entry ].
348
349 =over 4
350
351 =item *
352
353 XXX
354
355 =back
356
357 =head1 Testing
358
359 XXX Any significant changes to the testing of a freshly built perl should be
360 listed here.  Changes which create B<new> files in F<t/> go here as do any
361 large changes to the testing harness (e.g. when parallel testing was added).
362 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
363 that they represent may be covered elsewhere.
364
365 XXX If there were no significant test changes, say this:
366
367 Tests were added and changed to reflect the other additions and changes
368 in this release.
369
370 XXX If instead there were significant changes, say this:
371
372 Tests were added and changed to reflect the other additions and
373 changes in this release.  Furthermore, these significant changes were
374 made:
375
376 [ List each test improvement as an =item entry ]
377
378 =over 4
379
380 =item *
381
382 XXX
383
384 =back
385
386 =head1 Platform Support
387
388 XXX Any changes to platform support should be listed in the sections below.
389
390 [ Within the sections, list each platform as an =item entry with specific
391 changes as paragraphs below it. ]
392
393 =head2 New Platforms
394
395 XXX List any platforms that this version of perl compiles on, that previous
396 versions did not.  These will either be enabled by new files in the F<hints/>
397 directories, or new subdirectories and F<README> files at the top level of the
398 source tree.
399
400 =over 4
401
402 =item XXX-some-platform
403
404 XXX
405
406 =back
407
408 =head2 Discontinued Platforms
409
410 XXX List any platforms that this version of perl no longer compiles on.
411
412 =over 4
413
414 =item XXX-some-platform
415
416 XXX
417
418 =back
419
420 =head2 Platform-Specific Notes
421
422 XXX List any changes for specific platforms.  This could include configuration
423 and compilation changes or changes in portability/compatibility.  However,
424 changes within modules for platforms should generally be listed in the
425 L</Modules and Pragmata> section.
426
427 =over 4
428
429 =item Windows
430
431 We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
432 versions earlier than 14.1.
433
434 =back
435
436 =head1 Internal Changes
437
438 XXX Changes which affect the interface available to C<XS> code go here.  Other
439 significant internal changes for future core maintainers should be noted as
440 well.
441
442 =over 4
443
444 =item *
445
446 XS modules can now automatically get reentrant versions of system
447 functions on threaded perls.
448
449 By saying
450
451  #define PERL_REENTRANT
452
453 near the beginning of an C<XS> file, it will be compiled so that
454 whatever reentrant functions perl knows about on that system will
455 automatically and invisibly be used instead of the plain, non-reentrant
456 versions.  For example, if you write C<getpwnam()> in your code, on a
457 system that has C<pwnam_r()> all calls to the former will be translated
458 invisibly into the latter.  This does not happen except on threaded
459 perls, as they aren't needed otherwise.  Be aware that which functions
460 have reentrant versions varies from system to system.
461
462 =back
463
464 =head1 Selected Bug Fixes
465
466 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
467 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
468
469 [ List each fix as an =item entry ]
470
471 =over 4
472
473 =item *
474
475 XXX
476
477 =item *
478
479 The canonical truth value no longer has a spurious special meaning as
480 a callable.  It used to be a magic placeholder for a missing C<import>
481 or C<unimport> method.  It is now treated like any other string C<1>.
482 [perl #126042]
483
484 =item *
485
486 Perl's own C<malloc> no longer gets confused by attempts to allocate
487 more than a gigabyte on a 64-bit platform.  [perl #119829]
488
489 =item *
490
491 An identity C<tr///> transformation on a reference is no longer mistaken
492 for that reference for the purposes of deciding whether it can be
493 assigned to.  [perl #130578]
494
495 =item *
496
497 Lengthy hexadecimal, octal, or binary floating point literals no
498 longer cause undefined behaviour when parsing digits that are of such
499 low significance that they can't affect the floating point value.
500 [perl #131894]
501
502 =item *
503
504 C<open $$scalarref...> and similar invocations no longer leak the file
505 handle.  [perl #115814]
506
507 =item *
508
509 The default typemap, by avoiding C<newGVgen>, now no longer leaks when
510 XSUBs return file handles (C<PerlIO *> or C<FILE *>).  [perl #115814]
511
512 =item *
513
514 Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
515 crashes because of the early freeing of the subroutine.
516
517 =back
518
519 =head1 Known Problems
520
521 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
522 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
523 platform specific bugs also go here.
524
525 [ List each fix as an =item entry ]
526
527 =over 4
528
529 =item *
530
531 XXX
532
533 =back
534
535 =head1 Errata From Previous Releases
536
537 =over 4
538
539 =item *
540
541 XXX Add anything here that we forgot to add, or were mistaken about, in
542 the perldelta of a previous release.
543
544 =back
545
546 =head1 Obituary
547
548 XXX If any significant core contributor or member of the CPAN community has
549 died, add a short obituary here.
550
551 =head1 Acknowledgements
552
553 XXX Generate this with:
554
555   perl Porting/acknowledgements.pl v5.27.6..HEAD
556
557 =head1 Reporting Bugs
558
559 If you find what you think is a bug, you might check the perl bug database
560 at L<https://rt.perl.org/> .  There may also be information at
561 L<http://www.perl.org/> , the Perl Home Page.
562
563 If you believe you have an unreported bug, please run the L<perlbug> program
564 included with your release.  Be sure to trim your bug down to a tiny but
565 sufficient test case.  Your bug report, along with the output of C<perl -V>,
566 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
567
568 If the bug you are reporting has security implications which make it
569 inappropriate to send to a publicly archived mailing list, then see
570 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
571 for details of how to report the issue.
572
573 =head1 Give Thanks
574
575 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
576 you can do so by running the C<perlthanks> program:
577
578     perlthanks
579
580 This will send an email to the Perl 5 Porters list with your show of thanks.
581
582 =head1 SEE ALSO
583
584 The F<Changes> file for an explanation of how to view exhaustive details on
585 what changed.
586
587 The F<INSTALL> file for how to build Perl.
588
589 The F<README> file for general stuff.
590
591 The F<Artistic> and F<Copying> files for copyright information.
592
593 =cut