This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
0790fc1077427883cae3dbad5ae6ae044aa8ae3d
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment complete up to commit 80b8b050d2c6976822563e9f8edb2baa83539b12
4
5 =head1 NAME
6
7 [ this is a template for a new perldelta file. Any text flagged as
8 XXX needs to be processed before release. ]
9
10 perldelta - what is new for perl v5.17.0
11
12 =head1 DESCRIPTION
13
14 This document describes differences between the 5.16.0 release and
15 the 5.17.0 release.
16
17 If you are upgrading from an earlier release such as 5.16.0, first read
18 L<perl5160delta>, which describes differences between 5.15.0 and
19 5.16.0.
20
21 =head1 Notice
22
23 XXX Any important notices here
24
25 =head1 Core Enhancements
26
27 XXX New core language features go here. Summarise user-visible core language
28 enhancements. Particularly prominent performance optimisations could go
29 here, but most should go in the L</Performance Enhancements> section.
30
31 [ List each enhancement as a =head2 entry ]
32
33 =head1 Security
34
35 XXX Any security-related notices go here.  In particular, any security
36 vulnerabilities closed should be noted here rather than in the
37 L</Selected Bug Fixes> section.
38
39 [ List each security issue as a =head2 entry ]
40
41 =head1 Incompatible Changes
42
43 XXX For a release on a stable branch, this section aspires to be:
44
45     There are no changes intentionally incompatible with 5.XXX.XXX
46     If any exist, they are bugs, and we request that you submit a
47     report.  See L</Reporting Bugs> below.
48
49 [ List each incompatible change as a =head2 entry ]
50
51 =head2 C<\s> in regular expressions now matches a Vertical Tab (experimental)
52
53 This is an experiment early in the development cycle to see what
54 repercussions arise from this change.  It may well be that we decide
55 to require a C<"use feature"> to activate this behavior.  Because
56 of the experimental nature of this, which may be reversed, the
57 documentation has not been changed to reflect it.
58
59 =head1 Deprecations
60
61 XXX Any deprecated features, syntax, modules etc. should be listed here.
62 In particular, deprecated modules should be listed here even if they are
63 listed as an updated module in the L</Modules and Pragmata> section.
64
65 [ List each deprecation as a =head2 entry ]
66
67 =head2 Unescaped braces in regexps
68
69 Literal unescaped C<{> in regular expressions is now deprecated.  Every
70 brace character should be either escaped (by a preceding backslash) or
71 part of a construct where it's a metacharacter.  This catches likely typos
72 such as C</f{,3}/>.  It will also allow braces to be used in the future
73 to delimit parameters to metacharacters that currently take no parameters.
74
75 =head1 Performance Enhancements
76
77 XXX Changes which enhance performance without changing behaviour go here. There
78 may well be none in a stable release.
79
80 [ List each enhancement as a =item entry ]
81
82 =over 4
83
84 =item *
85
86 Filetest ops manage the stack in a fractionally more efficient manner.
87
88 =item *
89
90 Globs used in a numeric context are now numerified directly in most cases,
91 rather than being numerified via stringification.
92
93 =item *
94
95 XXX
96
97 =back
98
99 =head1 Modules and Pragmata
100
101 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
102 go here.  If Module::CoreList is updated, generate an initial draft of the
103 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
104 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
105 below.  A paragraph summary for important changes should then be added by hand.
106 In an ideal world, dual-life modules would have a F<Changes> file that could be
107 cribbed.
108
109 [ Within each section, list entries as a =item entry ]
110
111 =head2 New Modules and Pragmata
112
113 =over 4
114
115 =item *
116
117 XXX
118
119 =back
120
121 =head2 Updated Modules and Pragmata
122
123 =over 4
124
125 =item *
126
127 L<B> has been upgraded from version 1.34 to 1.35.
128
129 The C<stashlen> method of COPs has been added.   This provides access to an
130 internal field added in perl 5.16 under threaded builds [perl #113034].
131
132 =item *
133
134 L<ExtUtils::ParseXS> has been upgraded from version 3.16 to 3.17.
135
136 The generated C code now avoids unnecessarily incrementing
137 C<PL_amagic_generation> on Perl versions where it's done automatically
138 (or on current Perl where the variable no longer exists).
139
140 =item *
141
142 L<File::DosGlob> has been upgraded from version 1.06 to 1.07.
143
144 Small documentation and comment fixes.
145
146 =item *
147
148 L<File::Find> has been upgraded from version 1.20 to 1.21.
149
150 Individual files may now appear in list of directories to be searched
151 [perl #59750].
152
153 =item *
154
155 L<File::stat> has been upgraded from version 1.05 to 1.06.
156
157 C<File::stat> ignores the L<filetest> pragma, and warns when used in
158 combination therewith.  But it was not warning for C<-r>.  This has been
159 fixed [perl #111640].
160
161 C<-p> now works, and does not return false for pipes [perl #111638].
162
163 =item *
164
165 L<Hash::Util> has been upgraded from version 0.11 to 0.12.
166
167 C<hash_unlocked> and C<hashref_unlocked> now returns true if the hash is
168 unlocked, instead of always returning false [perl #112126].
169
170 C<hash_unlocked>, C<hashref_unlocked>, C<lock_hash_recurse> and
171 C<unlock_hash_recurse> are now exportable [perl #112126].
172
173 Two new functions, C<hash_locked> and C<hashref_locked>, have been added.
174 Oddly enough, these two functions were already exported, even though they
175 did not exist [perl #112126].
176
177 =item *
178
179 L<overload> has been upgraded from version 1.18 to 1.19.
180
181 C<no overload> now warns for invalid arguments, just like C<use overload>.
182
183 =item *
184
185 L<Pod::Functions> has been upgraded from version 1.05 to 1.06.
186
187 Typo fix in generated documentation.
188
189 =item *
190
191 L<Storable> has been upgraded from version 2.34 to 2.35.
192
193 Modifying C<$_[0]> within C<STORABLE_freeze> no longer results in crashes
194 [perl #112358].
195
196 An object whose class implements C<STORABLE_attach> is now thawed only once
197 when there are multiple references to it in the structure being thawed
198 [perl #111918].
199
200 =item *
201
202 L<utf8> has been upgraded from version 1.09 to 1.10.
203
204 Some documentation has been clarified.
205
206 =back
207
208 =head2 Removed Modules and Pragmata
209
210 =over 4
211
212 =item *
213
214 L<Version::Requirements> has been removed from the core distribution.  It is
215 available under a different name: L<CPAN::Meta::Requirements>.
216
217 =back
218
219 =head1 Documentation
220
221 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
222 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
223
224 =head2 New Documentation
225
226 XXX Changes which create B<new> files in F<pod/> go here.
227
228 =head3 L<XXX>
229
230 XXX Description of the purpose of the new file here
231
232 =head2 Changes to Existing Documentation
233
234 XXX Changes which significantly change existing files in F<pod/> go here.
235 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
236 section.
237
238 =head3 L<perldata>
239
240 =over 4
241
242 =item *
243
244 Now explicitly documents the behaviour of hash initializer lists that
245 contain duplicate keys.
246
247 =item *
248
249 XXX Description of the change here
250
251 =back
252
253 =head3 L<perldiag>
254
255 =over 4
256
257 =item *
258
259 The explanation of symbolic references being prevented by "strict refs"
260 now doesn't assume that the reader knows what symbolic references are.
261
262 =item *
263
264 XXX Description of the change here
265
266 =back
267
268 =head3 L<perlfunc>
269
270 =over 4
271
272 =item *
273
274 The return value of C<pipe> is now documented.
275
276 =item *
277
278 XXX Description of the change here
279
280 =back
281
282 =head3 L<XXX>
283
284 =over 4
285
286 =item *
287
288 XXX Description of the change here
289
290 =back
291
292 =head1 Diagnostics
293
294 The following additions or changes have been made to diagnostic output,
295 including warnings and fatal error messages.  For the complete list of
296 diagnostic messages, see L<perldiag>.
297
298 XXX New or changed warnings emitted by the core's C<C> code go here. Also
299 include any changes in L<perldiag> that reconcile it to the C<C> code.
300
301 [ Within each section, list entries as a =item entry that links to perldiag,
302   e.g.
303
304   =item *
305
306   L<Invalid version object|perldiag/"Invalid version object">
307 ]
308
309 =head2 New Diagnostics
310
311 XXX Newly added diagnostic messages go here
312
313 =head3 New Errors
314
315 =over 4
316
317 =item *
318
319 XXX L<message|perldiag/"message">
320
321 =back
322
323 =head3 New Warnings
324
325 =over 4
326
327 =item *
328
329 "L<Unescaped left brace in regex is deprecated, passed
330 through|perldiag/"Unescaped left brace in regex is deprecated, passed
331 through">" is a new deprecation warning.  See L</Unescaped braces in
332 regexps>.
333
334 =item *
335
336 XXX L<message|perldiag/"message">
337
338 =back
339
340 =head2 Changes to Existing Diagnostics
341
342 XXX Changes (i.e. rewording) of diagnostic messages go here
343
344 =over 4
345
346 =item *
347
348 XXX Describe change here
349
350 =back
351
352 =head1 Utility Changes
353
354 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
355 here. Most of these are built within the directories F<utils> and F<x2p>.
356
357 [ List utility changes as a =head3 entry for each utility and =item
358 entries for each change
359 Use L<XXX> with program names to get proper documentation linking. ]
360
361 =head3 L<XXX>
362
363 =over 4
364
365 =item *
366
367 XXX
368
369 =back
370
371 =head1 Configuration and Compilation
372
373 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
374 go here.  Any other changes to the Perl build process should be listed here.
375 However, any platform-specific changes should be listed in the
376 L</Platform Support> section, instead.
377
378 [ List changes as a =item entry ].
379
380 =over 4
381
382 =item *
383
384 The test suite now has a section for tests that require very large amounts
385 of memory.  These tests won't run by default; they can be enabled by
386 setting the C<PERL_TEST_MEMORY> environment variable to the number of
387 gibibytes of memory that may be safely used.
388
389 =item *
390
391 XXX
392
393 =back
394
395 =head1 Testing
396
397 XXX Any significant changes to the testing of a freshly built perl should be
398 listed here.  Changes which create B<new> files in F<t/> go here as do any
399 large changes to the testing harness (e.g. when parallel testing was added).
400 Changes to existing files in F<t/> aren't worth summarising, although the bugs
401 that they represent may be covered elsewhere.
402
403 [ List each test improvement as a =item entry ]
404
405 =over 4
406
407 =item *
408
409 XXX
410
411 =back
412
413 =head1 Platform Support
414
415 XXX Any changes to platform support should be listed in the sections below.
416
417 [ Within the sections, list each platform as a =item entry with specific
418 changes as paragraphs below it. ]
419
420 =head2 New Platforms
421
422 XXX List any platforms that this version of perl compiles on, that previous
423 versions did not. These will either be enabled by new files in the F<hints/>
424 directories, or new subdirectories and F<README> files at the top level of the
425 source tree.
426
427 =over 4
428
429 =item clang++
430
431 There is now a workaround for a compiler bug that prevented compiling
432 with clang++ since Perl 5.15.7 [perl #112786].
433
434 =item C++
435
436 When compiling the Perl core as C++ (which is only semi-supported), the
437 mathom functions are now compiled as C<extern "C">, to ensure proper
438 binary compatibility.  (However, binary compatibility isn't generally
439 guaranteed anyway in the situations where this would matter.)
440
441 =item VMS
442
443 It should now be possible to compile Perl as C++ on VMS.
444
445 =item XXX-some-platform
446
447 XXX
448
449 =back
450
451 =head2 Discontinued Platforms
452
453 XXX List any platforms that this version of perl no longer compiles on.
454
455 =over 4
456
457 =item XXX-some-platform
458
459 XXX
460
461 =back
462
463 =head2 Platform-Specific Notes
464
465 XXX List any changes for specific platforms. This could include configuration
466 and compilation changes or changes in portability/compatibility.  However,
467 changes within modules for platforms should generally be listed in the
468 L</Modules and Pragmata> section.
469
470 =over 4
471
472 =item XXX-some-platform
473
474 XXX
475
476 =back
477
478 =head1 Internal Changes
479
480 XXX Changes which affect the interface available to C<XS> code go here.
481 Other significant internal changes for future core maintainers should
482 be noted as well.
483
484 [ List each change as a =item entry ]
485
486 =over 4
487
488 =item *
489
490 The C<CV *> typemap entry now supports C<&{}> overloading and typeglobs,
491 just like C<&{...}> [perl #96872].
492
493 =item *
494
495 The C<SVf_AMAGIC> flag to indicate overloading is now on the stash, not the
496 object.  It is now set automatically whenever a method or @ISA changes, so
497 its meaning has changed, too.  It now means "potentially overloaded".  When
498 the overload table is calculated, the flag is automatically turned off if
499 there is no overloading, so there should be no noticeable slowdown.
500
501 The staleness of the overload tables is now checked when overload methods
502 are invoked, rather than during C<bless>.
503
504 "A" magic is gone.  The changes to the handling of the C<SVf_AMAGIC> flag
505 eliminate the need for it.
506
507 C<PL_amagic_generation> has been removed as no longer necessary.  For XS
508 modules, it is now a macro alias to C<PL_na>.
509
510 The fallback overload setting is now stored in a stash entry separate from
511 overloadedness itself.
512
513 =item *
514
515 The character-processing code has been cleaned up in places.  The changes
516 should be operationally invisible.
517
518 =back
519
520 =head1 Selected Bug Fixes
521
522 XXX Important bug fixes in the core language are summarised here.
523 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
524 L</Modules and Pragmata>.
525
526 [ List each fix as a =item entry ]
527
528 =over 4
529
530 =item *
531
532 C<goto ''> now looks for an empty label, producing the "goto must have
533 label" error message, instead of exiting the program [perl #111794].
534
535 =item *
536
537 C<goto "\0"> now dies with "Can't find label" instead of "goto must have
538 label".
539
540 =item *
541
542 The C function C<hv_store> used to result in crashes when used on C<%^H>
543 [perl #111000].
544
545 =item *
546
547 A call checker attached to a closure prototype via C<cv_set_call_checker>
548 is now copied to closures cloned from it.  So C<cv_set_call_checker> now
549 works inside an attribute handler for a closure.
550
551 =item *
552
553 Writing to C<$^N> used to have no effect.  Now it croaks with "Modification
554 of a read-only value" by default, but that can be overridden by a custom
555 regular expression engine, as with C<$1> [perl #112184].
556
557 =item *
558
559 C<undef> on a control character glob (C<undef *^H>) no longer emits an
560 erroneous warning about ambiguity [perl #112456].
561
562 =item *
563
564 For efficiency's sake, many operators and built-in functions return the
565 same scalar each time.  Lvalue subroutines and subroutines in the CORE::
566 namespace were allowing this implementation detail to leak through.
567 C<print &CORE::uc("a"), &CORE::uc("b")> used to print "BB".  The same thing
568 would happen with an lvalue subroutine returning the return value of C<uc>.
569 Now the value is copied in such cases.
570
571 =item *
572
573 C<method {}> syntax with an empty block or a block returning an empty list
574 used to crash or use some random value left on the stack as its invocant.
575 Now it produces an error.
576
577 =item *
578
579 C<vec> now works with extremely large offsets (>2 GB) [perl #111730].
580
581 =item *
582
583 Changes to overload settings now take effect immediately, as do changes to
584 inheritance that affect overloading.  They used to take effect only after
585 C<bless>.
586
587 Objects that were created before a class had any overloading used to remain
588 non-overloaded even if the class gained overloading through C<use overload>
589 or @ISA changes, and even after C<bless>.  This has been fixed
590 [perl #112708].
591
592 =item *
593
594 Classes with overloading can now inherit fallback values.
595
596 =item *
597
598 Overloading was not respecting a fallback value of 0 if there were
599 overloaded objects on both sides of an assignment operator like C<+=>
600 [perl #111856].
601
602 =item *
603
604 C<pos> now croaks with hash and array arguments, instead of producing
605 erroneous warnings.
606
607 =item *
608
609 C<while(each %h)> now implies C<while(defined($_ = each %h))>, like
610 C<readline> and C<readdir>.
611
612 =item *
613
614 Subs in the CORE:: namespace no longer crash after C<undef *_> when called
615 with no argument list (C<&CORE::time> with no parentheses).
616
617 =item *
618
619 Unicode 6.1 published an incorrect alias for one of the
620 Canonical_Combining_Class property's values (which range between 0 and
621 254).  The alias C<CCC133> should have been C<CCC132>.  Perl now
622 overrides the data file furnished by Unicode to give the correct value.
623
624 =item *
625
626 C<unpack> no longer produces the "'/' must follow a numeric type in unpack"
627 error when it is the data that are at fault [perl #60204].
628
629 =item *
630
631 C<join> and C<"@array"> now call FETCH only once on a tied C<$">
632 [perl #8931].
633
634 =item *
635
636 Some subroutine calls generated by compiling core ops affected by a
637 C<CORE::GLOBAL> override had op checking performed twice.  The checking
638 is always idempotent for pure Perl code, but the double checking can
639 matter when custom call checkers are involved.
640
641 =back
642
643 =head1 Known Problems
644
645 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
646 tests that had to be C<TODO>ed for the release would be noted here, unless
647 they were specific to a particular platform (see below).
648
649 This is a list of some significant unfixed bugs, which are regressions
650 from either 5.XXX.XXX or 5.XXX.XXX.
651
652 [ List each fix as a =item entry ]
653
654 =over 4
655
656 =item *
657
658 XXX
659
660 =back
661
662 =head1 Obituary
663
664 XXX If any significant core contributor has died, we've added a short obituary
665 here.
666
667 =head1 Acknowledgements
668
669 XXX Generate this with:
670
671   perl Porting/acknowledgements.pl v5.16.0..HEAD
672
673 =head1 Reporting Bugs
674
675 If you find what you think is a bug, you might check the articles
676 recently posted to the comp.lang.perl.misc newsgroup and the perl
677 bug database at http://rt.perl.org/perlbug/ .  There may also be
678 information at http://www.perl.org/ , the Perl Home Page.
679
680 If you believe you have an unreported bug, please run the L<perlbug>
681 program included with your release.  Be sure to trim your bug down
682 to a tiny but sufficient test case.  Your bug report, along with the
683 output of C<perl -V>, will be sent off to perlbug@perl.org to be
684 analysed by the Perl porting team.
685
686 If the bug you are reporting has security implications, which make it
687 inappropriate to send to a publicly archived mailing list, then please send
688 it to perl5-security-report@perl.org. This points to a closed subscription
689 unarchived mailing list, which includes
690 all the core committers, who will be able
691 to help assess the impact of issues, figure out a resolution, and help
692 co-ordinate the release of patches to mitigate or fix the problem across all
693 platforms on which Perl is supported. Please only use this address for
694 security issues in the Perl core, not for modules independently
695 distributed on CPAN.
696
697 =head1 SEE ALSO
698
699 The F<Changes> file for an explanation of how to view exhaustive details
700 on what changed.
701
702 The F<INSTALL> file for how to build Perl.
703
704 The F<README> file for general stuff.
705
706 The F<Artistic> and F<Copying> files for copyright information.
707
708 =cut