This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for e9d373c4
[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.19.5
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.4 release and the 5.19.5
13 release.
14
15 If you are upgrading from an earlier release such as 5.19.3, first read
16 L<perl5194delta>, which describes differences between 5.19.3 and 5.19.4.
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 Unicode 6.3 now supported
31
32 Perl now supports and is shipped with Unicode 6.3 (though Perl may be
33 recompiled with any previous Unicode release as well).  A detailed list of
34 Unicode 6.3 changes is at L<http://www.unicode.org/versions/Unicode6.3.0/>.
35
36 =head2 Experimental Postfix Dereferencing
37
38 When the C<postderef> feature is in effect, the following syntactical
39 equivalencies are set up:
40
41   $sref->$*;  # same as ${ $sref }  # interpolates
42   $aref->@*;  # same as @{ $aref }  # interpolates
43   $href->%*;  # same as %{ $href }
44   $cref->&*;  # same as &{ $cref }
45   $gref->**;  # same as *{ $gref }
46
47   $gref->*{ $slot }; # same as *{ $gref }{ $slot }
48
49   $aref->@[ ... ];  # same as @$aref[ ... ]  # interpolates
50   $href->@{ ... };  # same as @$href{ ... }  # interpolates
51   $aref->%[ ... ];  # same as %$aref[ ... ]
52   $href->%{ ... };  # same as %$href{ ... }
53
54 Those marked as interpolating only interpolate if the associated
55 C<postderef_qq> feature is also enabled.  This feature is B<experimental> and
56 will trigger C<experimental::postderef>-category warnings when used, unless
57 they are suppressed.
58
59 For more information, consult L<the Postfix Dereference Syntax section of
60 perlref|perlref/Postfix Dereference Syntax>.
61
62 =head2 C<sub>s now take a C<prototype> attribute
63
64 When declaring or defining a C<sub>, the prototype can now be specified inside
65 of a C<prototype> attribute instead of in parens following the name.
66
67 For example, C<sub foo($$){}> could be rewritten as
68 C<sub foo : prototype($$){}>.
69
70 =head1 Security
71
72 XXX Any security-related notices go here.  In particular, any security
73 vulnerabilities closed should be noted here rather than in the
74 L</Selected Bug Fixes> section.
75
76 [ List each security issue as a =head2 entry ]
77
78 =head1 Incompatible Changes
79
80 XXX For a release on a stable branch, this section aspires to be:
81
82     There are no changes intentionally incompatible with 5.XXX.XXX
83     If any exist, they are bugs, and we request that you submit a
84     report.  See L</Reporting Bugs> below.
85
86 [ List each incompatible change as a =head2 entry ]
87
88 =head2 Functions C<PerlIO_vsprintf> and C<PerlIO_sprintf> have been removed
89
90 These two functions, undocumented, unused in CPAN, and problematic have been
91 removed.
92
93 =head1 Deprecations
94
95 XXX Any deprecated features, syntax, modules etc. should be listed here.
96
97 =head2 Module removals
98
99 XXX Remove this section if inapplicable.
100
101 The following modules will be removed from the core distribution in a
102 future release, and will at that time need to be installed from CPAN.
103 Distributions on CPAN which require these modules will need to list them as
104 prerequisites.
105
106 The core versions of these modules will now issue C<"deprecated">-category
107 warnings to alert you to this fact.  To silence these deprecation warnings,
108 install the modules in question from CPAN.
109
110 Note that these are (with rare exceptions) fine modules that you are encouraged
111 to continue to use.  Their disinclusion from core primarily hinges on their
112 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
113 not usually on concerns over their design.
114
115 =over
116
117 XXX Note that deprecated modules should be listed here even if they are listed
118 as an updated module in the L</Modules and Pragmata> section.
119
120 =back
121
122 [ List each other deprecation as a =head2 entry ]
123
124 =head1 Performance Enhancements
125
126 XXX Changes which enhance performance without changing behaviour go here.
127 There may well be none in a stable release.
128
129 [ List each enhancement as a =item entry ]
130
131 =over 4
132
133 =item *
134
135 Perl has an optimizer for regular expression patterns.  It analyzes the pattern
136 to find things such as the minimum length a string has to be to match, etc.  It
137 now better handles code points that are above the Latin1 range.
138
139 =back
140
141 =head1 Modules and Pragmata
142
143 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
144 go here.  If Module::CoreList is updated, generate an initial draft of the
145 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
146 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
147 below.  A paragraph summary for important changes should then be added by hand.
148 In an ideal world, dual-life modules would have a F<Changes> file that could be
149 cribbed.
150
151 [ Within each section, list entries as a =item entry ]
152
153 =head2 New Modules and Pragmata
154
155 =over 4
156
157 =item *
158
159 XXX
160
161 =back
162
163 =head2 Updated Modules and Pragmata
164
165 =over 4
166
167 =item *
168
169 L<attributes> has been upgraded from version 0.21 to 0.22.
170
171 Support has been added for the C<prototype> attribute.
172
173 =item *
174
175 L<autodie> has been upgraded from version 2.21 to 2.22.
176
177 No changes have been made to the installed code other than the version bump to
178 keep in sync with the latest CPAN release.
179
180 =item *
181
182 L<CPAN::Meta> has been upgraded from version 2.132620 to 2.132830.
183
184 L<CPAN::Meta::Prereqs> now has a C<merged_requirements> method for combining
185 requirements across multiple phases and types, and an invalid 'meta-spec' is no
186 longer a fatal error.
187
188 =item *
189
190 L<CPAN::Meta::Requirements> has been upgraded from version 2.123 to 2.125.
191
192 No changes have been made to the installed code other than the version bump to
193 keep in sync with the latest CPAN release.
194
195 =item *
196
197 L<CPAN::Meta::YAML> has been upgraded from version 0.008 to 0.010.
198
199 No material changes have been made to the installed code other than the version
200 bump to keep in sync with the latest CPAN release.
201
202 =item *
203
204 L<Cwd> has been upgraded from version 3.44 to 3.45.
205
206 An obsolete #define has been removed from the XS code.
207
208 =item *
209
210 L<ExtUtils::Install> has been upgraded from version 1.60 to 1.61.
211
212 Some POD formatting errors in the documentation have been corrected.
213
214 =item *
215
216 L<ExtUtils::MakeMaker> has been upgraded from version 6.76 to 6.80.
217
218 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
219 full details.
220
221 =item *
222
223 L<feature> has been upgraded from version 1.33 to 1.34.
224
225 The new features C<postderef> and C<postderef_qq> have been added.
226
227 =item *
228
229 L<File::Fetch> has been upgraded from version 0.42 to 0.44.
230
231 No changes have been made to the installed code other than the version bump to
232 keep in sync with the latest CPAN release.
233
234 =item *
235
236 L<File::Glob> has been upgraded from version 1.21 to 1.22.
237
238 Since Perl 5.16, code that used C<glob> inside a thread had been
239 unintentionally sharing state between threads.  This has now been fixed.  [perl
240 #119897/#117823]
241
242 =item *
243
244 L<File::Temp> has been upgraded from version 0.2301 to 0.2304.
245
246 Required versions of other modules used are now listed more explicitly, L<base>
247 is now used instead of L<parent>, and L<Exporter> is no longer inherited from.
248
249 =item *
250
251 L<Getopt::Long> has been upgraded from version 2.41 to 2.42.
252
253 The floating point specifier C<name=f> no longer erroneously accepts values
254 like 1.2.3.  [cpan #88707]
255
256 =item *
257
258 L<HTTP::Tiny> has been upgraded from version 0.035 to 0.036.
259
260 No changes have been made to the installed code other than the version bump to
261 keep in sync with the latest CPAN release.
262
263 =item *
264
265 L<List::Util> has been upgraded from version 1.32 to 1.34.
266
267 The list reduction functions C<any>, C<all>, C<none> and C<notall> have been
268 added.
269
270 =item *
271
272 L<Module::CoreList> has been upgraded from version 2.99 to 3.00.
273
274 The list of Perl versions covered has been updated, %delta is now exported, and
275 a bug in C<is_core> whereby it wrongly assumed a linear list of releases has
276 been fixed.
277
278 =item *
279
280 L<Module::Metadata> has been upgraded from version 1.000018 to 1.000019.
281
282 Warnings are now disabled during version evaluation.
283
284 =item *
285
286 L<Parse::CPAN::Meta> has been upgraded from version 1.4407 to 1.4409.
287
288 No changes have been made to the installed code other than the version bump to
289 keep in sync with the latest CPAN release.
290
291 =item *
292
293 L<Perl::OSType> has been upgraded from version 1.005 to 1.006.
294
295 No changes have been made to the installed code other than the version bump to
296 keep in sync with the latest CPAN release.
297
298 =item *
299
300 The podlators modules have been upgraded from version 2.5.1 to 2.5.3.
301
302 Numerous updates and bug fixes are incorporated.  See the F<Changes> file in
303 the CPAN distribution for full details.
304
305 =item *
306
307 L<Test::Harness> has been upgraded from version 3.28 to 3.29.
308
309 All modules now use C<our> rather than C<use vars>, have C<use warnings>
310 enabled and C<use parent> instead of @ISA.
311
312 =item *
313
314 L<threads> has been upgraded from version 1.87 to 1.89.
315
316 The documentation of C<alarm> and C<_handle> has been updated.
317
318 =item *
319
320 L<Unicode::Normalize> has been upgraded from version 1.16 to 1.17.
321
322 The module now C<die>s if it cannot get Unicode code points using C<unpack>.
323 (There is already a similar C<die> if Unicode code points cannot be stringified
324 using C<pack>.)
325
326 =item *
327
328 L<warnings> has been upgraded from version 1.19 to 1.20.
329
330 The new warnings category C<experimental::postderef> has been added.
331
332 =back
333
334 =head2 Removed Modules and Pragmata
335
336 =over 4
337
338 =item *
339
340 XXX
341
342 =back
343
344 =head1 Documentation
345
346 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
347 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
348
349 =head2 New Documentation
350
351 XXX Changes which create B<new> files in F<pod/> go here.
352
353 =head3 L<XXX>
354
355 XXX Description of the purpose of the new file here
356
357 =head2 Changes to Existing Documentation
358
359 XXX Changes which significantly change existing files in F<pod/> go here.
360 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
361 section.
362
363 =head3 L<perlref>
364
365 =over 4
366
367 =item *
368
369 Documentation of the new postfix dereference syntax has been added.
370
371 =back
372
373 =head3 L<perlreguts>
374
375 =over 4
376
377 =item *
378
379 The documentation has been updated in the light of recent changes to
380 F<regcomp.c>.
381
382 =back
383
384 =head3 L<perlvar>
385
386 =over 4
387
388 =item *
389
390 Three L<English> variable names which have long been documented but do not
391 actually exist have been removed from the documentation.
392
393 =back
394
395 =head1 Diagnostics
396
397 The following additions or changes have been made to diagnostic output,
398 including warnings and fatal error messages.  For the complete list of
399 diagnostic messages, see L<perldiag>.
400
401 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
402 include any changes in L<perldiag> that reconcile it to the C<C> code.
403
404 =head2 New Diagnostics
405
406 XXX Newly added diagnostic messages go under here, separated into New Errors
407 and New Warnings
408
409 =head3 New Errors
410
411 =over 4
412
413 =item *
414
415 XXX L<message|perldiag/"message">
416
417 =back
418
419 =head3 New Warnings
420
421 =over 4
422
423 =item *
424
425 L<Attribute prototype(%s) discards earlier prototype attribute in same sub|perldiag/"Attribute prototype(%s) discards earlier prototype attribute in same sub">
426
427 (W misc) A sub was declared as sub foo : prototype(A) : prototype(B) {}, for
428 example.  Since each sub can only have one prototype, the earlier
429 declaration(s) are discarded while the last one is applied.
430
431 =item *
432
433 L<Postfix dereference is experimental|perldiag/"Postfix dereference is experimental">
434
435 (S experimental::postderef) This warning is emitted if you use the experimental
436 postfix dereference syntax.  Simply suppress the warning if you want to use the
437 feature, but know that in doing so you are taking the risk of using an
438 experimental feature which may change or be removed in a future Perl version:
439
440     no warnings "experimental::postderef";
441     use feature "postderef", "postderef_qq";
442     $ref->$*;
443     $aref->@*;
444     $aref->@[@indices];
445     ... etc ...
446
447 =item *
448
449 L<Prototype '%s' overridden by attribute 'prototype(%s)' in %s|perldiag/"Prototype '%s' overridden by attribute 'prototype(%s)' in %s">
450
451 (W prototype) A prototype was declared in both the parentheses after the sub
452 name and via the prototype attribute.  The prototype in parentheses is useless,
453 since it will be replaced by the prototype from the attribute before it's ever
454 used.
455
456 =back
457
458 =head2 Changes to Existing Diagnostics
459
460 XXX Changes (i.e. rewording) of diagnostic messages go here
461
462 =over 4
463
464 =item *
465
466 XXX Describe change here
467
468 =back
469
470 =head1 Utility Changes
471
472 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
473 Most of these are built within the directories F<utils> and F<x2p>.
474
475 [ List utility changes as a =head3 entry for each utility and =item
476 entries for each change
477 Use L<XXX> with program names to get proper documentation linking. ]
478
479 =head3 L<XXX>
480
481 =over 4
482
483 =item *
484
485 XXX
486
487 =back
488
489 =head1 Configuration and Compilation
490
491 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
492 go here.  Any other changes to the Perl build process should be listed here.
493 However, any platform-specific changes should be listed in the
494 L</Platform Support> section, instead.
495
496 [ List changes as a =item entry ].
497
498 =over 4
499
500 =item *
501
502 XXX
503
504 =back
505
506 =head1 Testing
507
508 XXX Any significant changes to the testing of a freshly built perl should be
509 listed here.  Changes which create B<new> files in F<t/> go here as do any
510 large changes to the testing harness (e.g. when parallel testing was added).
511 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
512 that they represent may be covered elsewhere.
513
514 [ List each test improvement as a =item entry ]
515
516 =over 4
517
518 =item *
519
520 The new postfix dereference syntax is tested by a new test script,
521 F<t/op/postfixderef.t>.
522
523 =back
524
525 =head1 Platform Support
526
527 XXX Any changes to platform support should be listed in the sections below.
528
529 [ Within the sections, list each platform as a =item entry with specific
530 changes as paragraphs below it. ]
531
532 =head2 New Platforms
533
534 XXX List any platforms that this version of perl compiles on, that previous
535 versions did not.  These will either be enabled by new files in the F<hints/>
536 directories, or new subdirectories and F<README> files at the top level of the
537 source tree.
538
539 =over 4
540
541 =item XXX-some-platform
542
543 XXX
544
545 =back
546
547 =head2 Discontinued Platforms
548
549 XXX List any platforms that this version of perl no longer compiles on.
550
551 =over 4
552
553 =item XXX-some-platform
554
555 XXX
556
557 =back
558
559 =head2 Platform-Specific Notes
560
561 XXX List any changes for specific platforms.  This could include configuration
562 and compilation changes or changes in portability/compatibility.  However,
563 changes within modules for platforms should generally be listed in the
564 L</Modules and Pragmata> section.
565
566 =over 4
567
568 =item XXX-some-platform
569
570 XXX
571
572 =back
573
574 =head1 Internal Changes
575
576 XXX Changes which affect the interface available to C<XS> code go here.  Other
577 significant internal changes for future core maintainers should be noted as
578 well.
579
580 [ List each change as a =item entry ]
581
582 =over 4
583
584 =item *
585
586 XXX
587
588 =back
589
590 =head1 Selected Bug Fixes
591
592 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
593 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
594
595 [ List each fix as a =item entry ]
596
597 =over 4
598
599 =item *
600
601 C<last> no longer returns values that the same statement has accumulated so
602 far, fixing amongst other things the long-standing bug that C<push @a, last>
603 would try to return the @a, copying it like a scalar in the process and
604 resulting in the error, "Bizarre copy of ARRAY in last."  [perl #3112]
605
606 =item *
607
608 An optimization in Perl 5.18 made incorrect assumptions causing a bad
609 interaction with the L<Devel::CallParser> CPAN module.  This was partially
610 fixed in Perl 5.19.4, but the fix was not sufficient and another fault has now
611 been corrected.
612
613 =item *
614
615 In some cases, closing file handled opened to pipe to or from a process, which
616 had been duplicated into a standard handle, would call perl's internal waitpid
617 wrapper with a pid of zero.  With the fix for [perl #85228] this zero pid was
618 passed to waitpid(), possibly blocking the process.  This wait for process
619 zero no longer occurs.  [perl #119893]
620
621 =back
622
623 =head1 Known Problems
624
625 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
626 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
627 platform specific bugs also go here.
628
629 [ List each fix as a =item entry ]
630
631 =over 4
632
633 =item *
634
635 XXX
636
637 =back
638
639 =head1 Obituary
640
641 XXX If any significant core contributor has died, we've added a short obituary
642 here.
643
644 =head1 Acknowledgements
645
646 XXX Generate this with:
647
648   perl Porting/acknowledgements.pl v5.19.4..HEAD
649
650 =head1 Reporting Bugs
651
652 If you find what you think is a bug, you might check the articles recently
653 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
654 http://rt.perl.org/perlbug/ .  There may also be information at
655 http://www.perl.org/ , the Perl Home Page.
656
657 If you believe you have an unreported bug, please run the L<perlbug> program
658 included with your release.  Be sure to trim your bug down to a tiny but
659 sufficient test case.  Your bug report, along with the output of C<perl -V>,
660 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
661
662 If the bug you are reporting has security implications, which make it
663 inappropriate to send to a publicly archived mailing list, then please send it
664 to perl5-security-report@perl.org.  This points to a closed subscription
665 unarchived mailing list, which includes all the core committers, who will be
666 able to help assess the impact of issues, figure out a resolution, and help
667 co-ordinate the release of patches to mitigate or fix the problem across all
668 platforms on which Perl is supported.  Please only use this address for
669 security issues in the Perl core, not for modules independently distributed on
670 CPAN.
671
672 =head1 SEE ALSO
673
674 The F<Changes> file for an explanation of how to view exhaustive details on
675 what changed.
676
677 The F<INSTALL> file for how to build Perl.
678
679 The F<README> file for general stuff.
680
681 The F<Artistic> and F<Copying> files for copyright information.
682
683 =cut