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