This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
12ce3dd2617e74295a5ff4f45b1d5901e89aba37
[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 API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()>
202 are now documented comprehensively, where previously the only
203 documentation was a reference to the L<perlembed> tutorial.
204
205 The documentation of C<newGIVENOP()> has been belatedly updated to
206 account for the removal of lexical C<$_>.
207
208 The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are
209 documented much more comprehensively than before.
210
211 =head3 L<perlop>
212
213 The general explanation of operator precedence and associativity has
214 been corrected and clarified.  [perl #127391]
215
216 The documentation for the C<\> referencing operator now explains the
217 unusual context that it supplies to its operand.  [perl #131061]
218
219 =head3 L<perlsyn>
220
221 The means to disambiguate between code blocks and hash constructors,
222 already documented in L<perlref>, are now documented in L<perlsyn> too.
223 [perl #130958]
224
225 =head3 L<perlfunc>
226
227 The documentation for the C<exists> operator no longer says that
228 autovivification behaviour "may be fixed in a future release".
229 We've determined that we're not going to change the default behaviour.
230 [perl #127712]
231
232 A couple of small details in the documentation for the C<bless> operator
233 have been clarified.  [perl #124428]
234
235 =head3 L<perluniprops>
236
237 For each binary table or property, the documentation now includes which
238 characters in the range C<\x00-\xFF> it matches, as well as a list of
239 the first few ranges of code points matched above that.
240
241 =head3 L<perlembed>
242
243 The examples in L<perlembed> have been made more portable in the way
244 they exit, and the example that gets an exit code from the embedded Perl
245 interpreter now gets it from the right place.  The examples that pass
246 a constructed argv to Perl now show the mandatory null C<argv[argc]>.
247
248 =head3 L<perldebguts>
249
250 The description of the conditions under which C<DB::sub()> will be called
251 has been clarified.  [perl #131672]
252
253 =head3 L<perlintern>
254
255 The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are
256 now documented.
257
258 =over 4
259
260 =item *
261
262 XXX Description of the change here
263
264 =back
265
266 =head1 Diagnostics
267
268 The following additions or changes have been made to diagnostic output,
269 including warnings and fatal error messages.  For the complete list of
270 diagnostic messages, see L<perldiag>.
271
272 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
273 include any changes in L<perldiag> that reconcile it to the C<C> code.
274
275 =head2 New Diagnostics
276
277 XXX Newly added diagnostic messages go under here, separated into New Errors
278 and New Warnings
279
280 =head3 New Errors
281
282 =over 4
283
284 =item *
285
286 L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block">
287
288 (F) A "goto" statement was executed to jump into the middle of a C<given>
289 block.  You can't get there from here.  See L<perlfunc/goto>.
290
291 =back
292
293 =head3 New Warnings
294
295 =over 4
296
297 =item *
298
299 L<Old package separator used in string|perldiag/"Old package separator used in string">
300
301 (W syntax) You used the old package separator, "'", in a variable
302 named inside a double-quoted string; e.g., C<"In $name's house">.  This
303 is equivalent to C<"In $name::s house">.  If you meant the former, put
304 a backslash before the apostrophe (C<"In $name\'s house">).
305
306 =back
307
308 =head2 Changes to Existing Diagnostics
309
310 XXX Changes (i.e. rewording) of diagnostic messages go here
311
312 =over 4
313
314 =item *
315
316 XXX Describe change here
317
318 =item *
319
320 Warnings that a variable or subroutine "masks earlier declaration in same
321 ...", or that an C<our> variable has been redeclared, have been moved to a
322 new warnings category "shadow".  Previously they were in category "misc".
323
324 =item *
325
326 The deprecation warning from C<Sys::Hostname::hostname()> saying that
327 it doesn't accept arguments now states the Perl version in which the
328 warning will be upgraded to an error.  [perl #124349]
329
330 =back
331
332 =head1 Utility Changes
333
334 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
335 Most of these are built within the directory F<utils>.
336
337 [ List utility changes as a =head2 entry for each utility and =item
338 entries for each change
339 Use L<XXX> with program names to get proper documentation linking. ]
340
341 =head2 L<XXX>
342
343 =over 4
344
345 =item *
346
347 XXX
348
349 =back
350
351 =head1 Configuration and Compilation
352
353 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
354 go here.  Any other changes to the Perl build process should be listed here.
355 However, any platform-specific changes should be listed in the
356 L</Platform Support> section, instead.
357
358 [ List changes as an =item entry ].
359
360 =over 4
361
362 =item *
363
364 XXX
365
366 =back
367
368 =head1 Testing
369
370 XXX Any significant changes to the testing of a freshly built perl should be
371 listed here.  Changes which create B<new> files in F<t/> go here as do any
372 large changes to the testing harness (e.g. when parallel testing was added).
373 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
374 that they represent may be covered elsewhere.
375
376 XXX If there were no significant test changes, say this:
377
378 Tests were added and changed to reflect the other additions and changes
379 in this release.
380
381 XXX If instead there were significant changes, say this:
382
383 Tests were added and changed to reflect the other additions and
384 changes in this release.  Furthermore, these significant changes were
385 made:
386
387 [ List each test improvement as an =item entry ]
388
389 =over 4
390
391 =item *
392
393 XXX
394
395 =back
396
397 =head1 Platform Support
398
399 XXX Any changes to platform support should be listed in the sections below.
400
401 [ Within the sections, list each platform as an =item entry with specific
402 changes as paragraphs below it. ]
403
404 =head2 New Platforms
405
406 XXX List any platforms that this version of perl compiles on, that previous
407 versions did not.  These will either be enabled by new files in the F<hints/>
408 directories, or new subdirectories and F<README> files at the top level of the
409 source tree.
410
411 =over 4
412
413 =item XXX-some-platform
414
415 XXX
416
417 =back
418
419 =head2 Discontinued Platforms
420
421 XXX List any platforms that this version of perl no longer compiles on.
422
423 =over 4
424
425 =item XXX-some-platform
426
427 XXX
428
429 =back
430
431 =head2 Platform-Specific Notes
432
433 XXX List any changes for specific platforms.  This could include configuration
434 and compilation changes or changes in portability/compatibility.  However,
435 changes within modules for platforms should generally be listed in the
436 L</Modules and Pragmata> section.
437
438 =over 4
439
440 =item Windows
441
442 We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++
443 versions earlier than 14.1.
444
445 =back
446
447 =head1 Internal Changes
448
449 XXX Changes which affect the interface available to C<XS> code go here.  Other
450 significant internal changes for future core maintainers should be noted as
451 well.
452
453 =over 4
454
455 =item *
456
457 XS modules can now automatically get reentrant versions of system
458 functions on threaded perls.
459
460 By saying
461
462  #define PERL_REENTRANT
463
464 near the beginning of an C<XS> file, it will be compiled so that
465 whatever reentrant functions perl knows about on that system will
466 automatically and invisibly be used instead of the plain, non-reentrant
467 versions.  For example, if you write C<getpwnam()> in your code, on a
468 system that has C<pwnam_r()> all calls to the former will be translated
469 invisibly into the latter.  This does not happen except on threaded
470 perls, as they aren't needed otherwise.  Be aware that which functions
471 have reentrant versions varies from system to system.
472
473 =back
474
475 =head1 Selected Bug Fixes
476
477 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
478 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
479
480 [ List each fix as an =item entry ]
481
482 =over 4
483
484 =item *
485
486 XXX
487
488 =item *
489
490 Digits past the radix point in octal and binary floating point literals
491 now have the correct weight on platforms where a floating point
492 significand doesn't fit into an integer type.
493
494 =item *
495
496 C<exit(0)> in a C<UNITCHECK> or C<CHECK> block no longer permits the
497 main program to run, and C<exit(0)> in a C<BEGIN> block no longer permits
498 C<INIT> blocks to run before exiting.  [perl #2754]
499
500 =item *
501
502 The canonical truth value no longer has a spurious special meaning as
503 a callable.  It used to be a magic placeholder for a missing C<import>
504 or C<unimport> method.  It is now treated like any other string C<1>.
505 [perl #126042]
506
507 =item *
508
509 Perl's own C<malloc> no longer gets confused by attempts to allocate
510 more than a gigabyte on a 64-bit platform.  [perl #119829]
511
512 =item *
513
514 Stacked file test operators in a sort comparator expression no longer
515 cause a crash.  [perl #129347]
516
517 =item *
518
519 An identity C<tr///> transformation on a reference is no longer mistaken
520 for that reference for the purposes of deciding whether it can be
521 assigned to.  [perl #130578]
522
523 =item *
524
525 Lengthy hexadecimal, octal, or binary floating point literals no
526 longer cause undefined behaviour when parsing digits that are of such
527 low significance that they can't affect the floating point value.
528 [perl #131894]
529
530 =item *
531
532 C<open $$scalarref...> and similar invocations no longer leak the file
533 handle.  [perl #115814]
534
535 =item *
536
537 Some convoluted kinds of regexp no longer cause an arithmetic overflow
538 when compiled.  [perl #131893]
539
540 =item *
541
542 The default typemap, by avoiding C<newGVgen>, now no longer leaks when
543 XSUBs return file handles (C<PerlIO *> or C<FILE *>).  [perl #115814]
544
545 =item *
546
547 Creating a C<BEGIN> block as an XS subroutine with a prototype no longer
548 crashes because of the early freeing of the subroutine.
549
550 =back
551
552 =head1 Known Problems
553
554 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
555 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
556 platform specific bugs also go here.
557
558 [ List each fix as an =item entry ]
559
560 =over 4
561
562 =item *
563
564 XXX
565
566 =back
567
568 =head1 Errata From Previous Releases
569
570 =over 4
571
572 =item *
573
574 XXX Add anything here that we forgot to add, or were mistaken about, in
575 the perldelta of a previous release.
576
577 =back
578
579 =head1 Obituary
580
581 XXX If any significant core contributor or member of the CPAN community has
582 died, add a short obituary here.
583
584 =head1 Acknowledgements
585
586 XXX Generate this with:
587
588   perl Porting/acknowledgements.pl v5.27.6..HEAD
589
590 =head1 Reporting Bugs
591
592 If you find what you think is a bug, you might check the perl bug database
593 at L<https://rt.perl.org/> .  There may also be information at
594 L<http://www.perl.org/> , the Perl Home Page.
595
596 If you believe you have an unreported bug, please run the L<perlbug> program
597 included with your release.  Be sure to trim your bug down to a tiny but
598 sufficient test case.  Your bug report, along with the output of C<perl -V>,
599 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
600
601 If the bug you are reporting has security implications which make it
602 inappropriate to send to a publicly archived mailing list, then see
603 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
604 for details of how to report the issue.
605
606 =head1 Give Thanks
607
608 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
609 you can do so by running the C<perlthanks> program:
610
611     perlthanks
612
613 This will send an email to the Perl 5 Porters list with your show of thanks.
614
615 =head1 SEE ALSO
616
617 The F<Changes> file for an explanation of how to view exhaustive details on
618 what changed.
619
620 The F<INSTALL> file for how to build Perl.
621
622 The F<README> file for general stuff.
623
624 The F<Artistic> and F<Copying> files for copyright information.
625
626 =cut