This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Updated JSON-PP to CPAN version 2.27203
[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<JSON::PP> has been upgraded from version 2.27202 to 2.27203
266
267 Fixed return/or in C<_incr_parse>.
268
269 =item *
270
271 L<List::Util> has been upgraded from version 1.32 to 1.34.
272
273 The list reduction functions C<any>, C<all>, C<none> and C<notall> have been
274 added.
275
276 =item *
277
278 L<Module::CoreList> has been upgraded from version 2.99 to 3.00.
279
280 The list of Perl versions covered has been updated, %delta is now exported, and
281 a bug in C<is_core> whereby it wrongly assumed a linear list of releases has
282 been fixed.
283
284 =item *
285
286 L<Module::Metadata> has been upgraded from version 1.000018 to 1.000019.
287
288 Warnings are now disabled during version evaluation.
289
290 =item *
291
292 L<Parse::CPAN::Meta> has been upgraded from version 1.4407 to 1.4409.
293
294 No changes have been made to the installed code other than the version bump to
295 keep in sync with the latest CPAN release.
296
297 =item *
298
299 L<Perl::OSType> has been upgraded from version 1.005 to 1.006.
300
301 No changes have been made to the installed code other than the version bump to
302 keep in sync with the latest CPAN release.
303
304 =item *
305
306 The podlators modules have been upgraded from version 2.5.1 to 2.5.3.
307
308 Numerous updates and bug fixes are incorporated.  See the F<Changes> file in
309 the CPAN distribution for full details.
310
311 =item *
312
313 L<Test::Harness> has been upgraded from version 3.28 to 3.29.
314
315 All modules now use C<our> rather than C<use vars>, have C<use warnings>
316 enabled and C<use parent> instead of @ISA.
317
318 =item *
319
320 L<threads> has been upgraded from version 1.87 to 1.89.
321
322 The documentation of C<alarm> and C<_handle> has been updated.
323
324 =item *
325
326 L<Unicode::Normalize> has been upgraded from version 1.16 to 1.17.
327
328 The module now C<die>s if it cannot get Unicode code points using C<unpack>.
329 (There is already a similar C<die> if Unicode code points cannot be stringified
330 using C<pack>.)
331
332 =item *
333
334 L<warnings> has been upgraded from version 1.19 to 1.20.
335
336 The new warnings category C<experimental::postderef> has been added.
337
338 =back
339
340 =head2 Removed Modules and Pragmata
341
342 =over 4
343
344 =item *
345
346 XXX
347
348 =back
349
350 =head1 Documentation
351
352 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
353 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
354
355 =head2 New Documentation
356
357 XXX Changes which create B<new> files in F<pod/> go here.
358
359 =head3 L<XXX>
360
361 XXX Description of the purpose of the new file here
362
363 =head2 Changes to Existing Documentation
364
365 XXX Changes which significantly change existing files in F<pod/> go here.
366 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
367 section.
368
369 =head3 L<perlref>
370
371 =over 4
372
373 =item *
374
375 Documentation of the new postfix dereference syntax has been added.
376
377 =back
378
379 =head3 L<perlreguts>
380
381 =over 4
382
383 =item *
384
385 The documentation has been updated in the light of recent changes to
386 F<regcomp.c>.
387
388 =back
389
390 =head3 L<perlvar>
391
392 =over 4
393
394 =item *
395
396 Three L<English> variable names which have long been documented but do not
397 actually exist have been removed from the documentation.
398
399 =back
400
401 =head1 Diagnostics
402
403 The following additions or changes have been made to diagnostic output,
404 including warnings and fatal error messages.  For the complete list of
405 diagnostic messages, see L<perldiag>.
406
407 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
408 include any changes in L<perldiag> that reconcile it to the C<C> code.
409
410 =head2 New Diagnostics
411
412 XXX Newly added diagnostic messages go under here, separated into New Errors
413 and New Warnings
414
415 =head3 New Errors
416
417 =over 4
418
419 =item *
420
421 XXX L<message|perldiag/"message">
422
423 =back
424
425 =head3 New Warnings
426
427 =over 4
428
429 =item *
430
431 L<Attribute prototype(%s) discards earlier prototype attribute in same sub|perldiag/"Attribute prototype(%s) discards earlier prototype attribute in same sub">
432
433 (W misc) A sub was declared as sub foo : prototype(A) : prototype(B) {}, for
434 example.  Since each sub can only have one prototype, the earlier
435 declaration(s) are discarded while the last one is applied.
436
437 =item *
438
439 L<Postfix dereference is experimental|perldiag/"Postfix dereference is experimental">
440
441 (S experimental::postderef) This warning is emitted if you use the experimental
442 postfix dereference syntax.  Simply suppress the warning if you want to use the
443 feature, but know that in doing so you are taking the risk of using an
444 experimental feature which may change or be removed in a future Perl version:
445
446     no warnings "experimental::postderef";
447     use feature "postderef", "postderef_qq";
448     $ref->$*;
449     $aref->@*;
450     $aref->@[@indices];
451     ... etc ...
452
453 =item *
454
455 L<Prototype '%s' overridden by attribute 'prototype(%s)' in %s|perldiag/"Prototype '%s' overridden by attribute 'prototype(%s)' in %s">
456
457 (W prototype) A prototype was declared in both the parentheses after the sub
458 name and via the prototype attribute.  The prototype in parentheses is useless,
459 since it will be replaced by the prototype from the attribute before it's ever
460 used.
461
462 =back
463
464 =head2 Changes to Existing Diagnostics
465
466 XXX Changes (i.e. rewording) of diagnostic messages go here
467
468 =over 4
469
470 =item *
471
472 XXX Describe change here
473
474 =back
475
476 =head1 Utility Changes
477
478 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
479 Most of these are built within the directories F<utils> and F<x2p>.
480
481 [ List utility changes as a =head3 entry for each utility and =item
482 entries for each change
483 Use L<XXX> with program names to get proper documentation linking. ]
484
485 =head3 L<XXX>
486
487 =over 4
488
489 =item *
490
491 XXX
492
493 =back
494
495 =head1 Configuration and Compilation
496
497 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
498 go here.  Any other changes to the Perl build process should be listed here.
499 However, any platform-specific changes should be listed in the
500 L</Platform Support> section, instead.
501
502 [ List changes as a =item entry ].
503
504 =over 4
505
506 =item *
507
508 XXX
509
510 =back
511
512 =head1 Testing
513
514 XXX Any significant changes to the testing of a freshly built perl should be
515 listed here.  Changes which create B<new> files in F<t/> go here as do any
516 large changes to the testing harness (e.g. when parallel testing was added).
517 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
518 that they represent may be covered elsewhere.
519
520 [ List each test improvement as a =item entry ]
521
522 =over 4
523
524 =item *
525
526 The new postfix dereference syntax is tested by a new test script,
527 F<t/op/postfixderef.t>.
528
529 =back
530
531 =head1 Platform Support
532
533 XXX Any changes to platform support should be listed in the sections below.
534
535 [ Within the sections, list each platform as a =item entry with specific
536 changes as paragraphs below it. ]
537
538 =head2 New Platforms
539
540 XXX List any platforms that this version of perl compiles on, that previous
541 versions did not.  These will either be enabled by new files in the F<hints/>
542 directories, or new subdirectories and F<README> files at the top level of the
543 source tree.
544
545 =over 4
546
547 =item XXX-some-platform
548
549 XXX
550
551 =back
552
553 =head2 Discontinued Platforms
554
555 XXX List any platforms that this version of perl no longer compiles on.
556
557 =over 4
558
559 =item XXX-some-platform
560
561 XXX
562
563 =back
564
565 =head2 Platform-Specific Notes
566
567 XXX List any changes for specific platforms.  This could include configuration
568 and compilation changes or changes in portability/compatibility.  However,
569 changes within modules for platforms should generally be listed in the
570 L</Modules and Pragmata> section.
571
572 =over 4
573
574 =item XXX-some-platform
575
576 XXX
577
578 =back
579
580 =head1 Internal Changes
581
582 XXX Changes which affect the interface available to C<XS> code go here.  Other
583 significant internal changes for future core maintainers should be noted as
584 well.
585
586 [ List each change as a =item entry ]
587
588 =over 4
589
590 =item *
591
592 XXX
593
594 =back
595
596 =head1 Selected Bug Fixes
597
598 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
599 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
600
601 [ List each fix as a =item entry ]
602
603 =over 4
604
605 =item *
606
607 C<last> no longer returns values that the same statement has accumulated so
608 far, fixing amongst other things the long-standing bug that C<push @a, last>
609 would try to return the @a, copying it like a scalar in the process and
610 resulting in the error, "Bizarre copy of ARRAY in last."  [perl #3112]
611
612 =item *
613
614 An optimization in Perl 5.18 made incorrect assumptions causing a bad
615 interaction with the L<Devel::CallParser> CPAN module.  This was partially
616 fixed in Perl 5.19.4, but the fix was not sufficient and another fault has now
617 been corrected.
618
619 =item *
620
621 In some cases, closing file handled opened to pipe to or from a process, which
622 had been duplicated into a standard handle, would call perl's internal waitpid
623 wrapper with a pid of zero.  With the fix for [perl #85228] this zero pid was
624 passed to waitpid(), possibly blocking the process.  This wait for process
625 zero no longer occurs.  [perl #119893]
626
627 =back
628
629 =head1 Known Problems
630
631 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
632 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
633 platform specific bugs also go here.
634
635 [ List each fix as a =item entry ]
636
637 =over 4
638
639 =item *
640
641 XXX
642
643 =back
644
645 =head1 Obituary
646
647 XXX If any significant core contributor has died, we've added a short obituary
648 here.
649
650 =head1 Acknowledgements
651
652 XXX Generate this with:
653
654   perl Porting/acknowledgements.pl v5.19.4..HEAD
655
656 =head1 Reporting Bugs
657
658 If you find what you think is a bug, you might check the articles recently
659 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
660 http://rt.perl.org/perlbug/ .  There may also be information at
661 http://www.perl.org/ , the Perl Home Page.
662
663 If you believe you have an unreported bug, please run the L<perlbug> program
664 included with your release.  Be sure to trim your bug down to a tiny but
665 sufficient test case.  Your bug report, along with the output of C<perl -V>,
666 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
667
668 If the bug you are reporting has security implications, which make it
669 inappropriate to send to a publicly archived mailing list, then please send it
670 to perl5-security-report@perl.org.  This points to a closed subscription
671 unarchived mailing list, which includes all the core committers, who will be
672 able to help assess the impact of issues, figure out a resolution, and help
673 co-ordinate the release of patches to mitigate or fix the problem across all
674 platforms on which Perl is supported.  Please only use this address for
675 security issues in the Perl core, not for modules independently distributed on
676 CPAN.
677
678 =head1 SEE ALSO
679
680 The F<Changes> file for an explanation of how to view exhaustive details on
681 what changed.
682
683 The F<INSTALL> file for how to build Perl.
684
685 The F<README> file for general stuff.
686
687 The F<Artistic> and F<Copying> files for copyright information.
688
689 =cut