This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove my todo commits from perldelta template
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to c19fd8b40, except for:
5 d9018cbe5b480ba29cc6151aba8f5102a7e009c4 (Eric Brine)
6     -- while I (use git blame to find out who) see how this change within
7        lex_read_unichar is correct, I cannot tell at a glance what visible
8        effects this bug has at the Perl level or through the lexer API.
9 a04eb69c733e84250299f12df200f10b76b0a45c (David Golden)
10 7a799f6bb3cac2e1bf9bede83579324cffa59c16 (David Golden)
11 be48bbe8d671b6841c3ec7cb734b98071afe3cd9 (Chip)
12
13 =head1 NAME
14
15 [ this is a template for a new perldelta file. Any text flagged as
16 XXX needs to be processed before release. ]
17
18 perldelta - what is new for perl v5.15.4
19
20 =head1 DESCRIPTION
21
22 This document describes differences between the 5.15.3 release and
23 the 5.15.4 release.
24
25 If you are upgrading from an earlier release such as 5.15.3, first read
26 L<perl5153delta>, which describes differences between 5.15.3 and
27 5.15.4.
28
29 =head1 Notice
30
31 XXX Any important notices here
32
33 =head1 Core Enhancements
34
35 =head2 $^X converted to an absolute path on FreeBSD, OS X and Solaris
36
37 C<$^X> is now converted to an absolute path on OS X, FreeBSD (without
38 needing F</proc> mounted) and Solaris 10 and 11. This augments the
39 previous approach of using F</proc> on Linux, FreeBSD and NetBSD
40 (in all cases, where mounted).
41
42 This makes relocatable perl installations more useful on these platforms.
43 (See "Relocatable @INC" in F<INSTALL>)
44
45 =head2 Unicode Symbol Names
46
47 Perl now has proper support for Unicode in symbol names.  It used to be
48 that C<*{$foo}> would ignore the internal UTF8 flag and use the bytes of
49 the underlying representation to look up the symbol.  That meant that
50 C<*{"\x{100}"}> and C<*{"\xc4\x80"}> would return the same thing.  All
51 these parts of Perl have been fixed to account for Unicode:
52
53 =over
54
55 =item *
56
57 Method names (including those passed to C<use overload>)
58
59 =item *
60
61 Typeglob names (including names of variables, subroutines and filehandles)
62
63 =item *
64
65 Package names
66
67 =item *
68
69 Constant subroutine names (not null-clean yet)
70
71 =item *
72
73 C<goto>
74
75 =item *
76
77 Symbolic dereferencing
78
79 =item *
80
81 Second argument to C<bless()> and C<tie()>
82
83 =item *
84
85 Return value of C<ref()>
86
87 =item *
88
89 Package names returned by C<caller()>
90
91 =item *
92
93 Subroutine prototypes
94
95 =item *
96
97 Attributes
98
99 =item *
100
101 Various warnings and error messages that mention variable names or values,
102 methods, etc.
103
104 =back
105
106 In addition, a parsing bug has been fixed that prevented C<*{é}> from
107 implicitly quoting the name, but instead interpreted it as C<*{+é}>, which
108 would cause a strict violation.
109
110 C<*{"*a::b"}> automatically strips off the * if it is followed by an ASCII
111 letter.  That has been extended to all Unicode identifier characters.
112
113 C<$é> is now subject to "Used only once" warnings.  It used to be exempt,
114 as it was treated as a punctuation variable.
115
116 Also, single-character Unicode punctuation variables (like $‰) are now
117 supported [perl #69032].  They are also supported with C<our> and C<my>,
118 but that is a mistake that will be fixed before 5.16.
119
120 =head2 Support for Embedded Nulls
121
122 Some parts of Perl did not work correctly with nulls (C<chr 0>) embedded in
123 strings.  That meant that, for instance, C<< $m = "a\0b"; foo->$m >> would
124 call the "a" method, instead of the actual method name contained in $m.
125 These parts of perl have been fixed to support nulls:
126
127 =over
128
129 =item *
130
131 Method names
132
133 =item *
134
135 Typeglob names (including filehandle names)
136
137 =item *
138
139 Package names
140
141 =item *
142
143 Autoloading
144
145 =item *
146
147 Return value of C<ref()>
148
149 =item *
150
151 Package names returned by C<caller()>
152
153 =item *
154
155 Filehandle warnings
156
157 =item *
158
159 Typeglob elements (C<*foo{"THING\0stuff"}>)
160
161 =item *
162
163 Signal names
164
165 =item *
166
167 Various warnings and error messages that mention variable names or values,
168 methods, etc.
169
170 =back
171
172 One side effect of these changes is that blessing into "\0" no longer
173 causes C<ref()> to return false.
174
175 =head2 Autoloaded sort Subroutines
176
177 Custom sort subroutines can now be autoloaded [perl #30661]:
178
179     sub AUTOLOAD { ... }
180     @sorted = sort foo @list; # uses AUTOLOAD
181
182 =head2 Improved typemaps for Some Builtin Types
183
184 Most XS authors will be aware that there is a longstanding bug
185 in the OUTPUT typemap for T_AVREF (C<AV*>), T_HVREF (C<HV*>),
186 T_CVREF (C<CV*>), and T_SVREF (C<SVREF> or C<\$foo>) that requires
187 manually decrementing the reference count of the return value
188 instead of the typemap taking care of this. For
189 backwards-compatibility, this cannot be changed in the default
190 typemaps. But we now provide additional typemaps
191 C<T_AVREF_REFCOUNT_FIXED>, etc. that do not exhibit this bug.
192 Using them in your extension is as simple as having one line
193 in your C<TYPEMAP> section:
194
195   HV*   T_HVREF_REFCOUNT_FIXED
196
197 =head1 Security
198
199 XXX Any security-related notices go here.  In particular, any security
200 vulnerabilities closed should be noted here rather than in the
201 L</Selected Bug Fixes> section.
202
203 [ List each security issue as a =head2 entry ]
204
205 =head1 Incompatible Changes
206
207 XXX For a release on a stable branch, this section aspires to be:
208
209     There are no changes intentionally incompatible with 5.XXX.XXX
210     If any exist, they are bugs and reports are welcome.
211
212 [ List each incompatible change as a =head2 entry ]
213
214 =head1 Deprecations
215
216 XXX Any deprecated features, syntax, modules etc. should be listed here.
217 In particular, deprecated modules should be listed here even if they are
218 listed as an updated module in the L</Modules and Pragmata> section.
219
220 [ List each deprecation as a =head2 entry ]
221
222 =head1 Performance Enhancements
223
224 XXX Changes which enhance performance without changing behaviour go here. There
225 may well be none in a stable release.
226
227 [ List each enhancement as a =item entry ]
228
229 =over 4
230
231 =item *
232
233 C<substr> no longer calculates a value to return when called in void
234 context.
235
236 =back
237
238 =head1 Modules and Pragmata
239
240 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
241 go here.  If Module::CoreList is updated, generate an initial draft of the
242 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
243 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
244 below.  A paragraph summary for important changes should then be added by hand.
245 In an ideal world, dual-life modules would have a F<Changes> file that could be
246 cribbed.
247
248 [ Within each section, list entries as a =item entry ]
249
250 =head2 New Modules and Pragmata
251
252 =over 4
253
254 =item *
255
256 XXX
257
258 =back
259
260 =head2 Updated Modules and Pragmata
261
262 =over 4
263
264 =item *
265
266 L<Archive::Tar> has been upgraded from version 1.78 to version 1.80.
267
268 =item *
269
270 L<base> has been upgraded from version 2.17 to version 2.18.
271
272 C<base> no longer sets a module's C<$VERSION> to "-1" when a module it loads
273 does not define a C<$VERSION>.  This change has been made because "-1" is not
274 a valid version number under the new "lax" criteria used internally by
275 C<UNIVERSAL::VERSION>.  (See L<version> for more on "lax" version criteria.)
276
277 C<base> no longer internally skips loading modules it has already loaded and
278 instead relies on C<require> to inspect C<%INC>.  This fixes a bug when C<base>
279 is used with code that clear C<%INC> to force a module to be reloaded.
280
281 =item *
282
283 L<Digest> has been upgraded from version 1.16 to version 1.17.
284
285 =item *
286
287 L<DynaLoader> has been upgraded from version 1.13 to 1.14.
288
289 It stopped exporting its symbols with the ExtUtils::ParseXS changes in
290 5.15.2.  Now it exports them once more.
291
292 =item *
293
294 L<ExtUtils::MakeMaker> has been upgraded from version 6.59 to version 6.61_01.
295
296 =item *
297
298 L<ExtUtils::ParseXS> has been upgraded from version 3.04_04 to version 3.05.
299
300 =item *
301
302 L<Module::Load> has been upgraded from version 0.20 to version 0.22.
303
304 Resolve possible security problem [http://goo.gl/YzHRU] where a '::' prefixed
305 module can 'jump' out of @INC
306
307 =item *
308
309 L<perlfaq> has been upgraded from version 5.0150034 to version 5.0150035.
310
311 =item *
312
313 L<Unicode::Collate> has been upgraded from version 0.78 to version 0.80.
314
315 Locales updated to CLDR 2.0: ar, be, bg, ha, hr, kk, lt.
316 Newly supported locales: as, fi__phonebook, gu, hi, kn, kok and ln.
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<perlfunc>, L<open>
350
351 =over 4
352
353 =item *
354
355 As an accident of history, C<open $fh, "<:", ...> applies the default
356 layers for the platform (C<:raw> on Unix, C<:crlf> on Windows), ignoring
357 whatever is declared by L<open.pm|open>.  This seems such a useful feature
358 it has been documented in L<perlfunc|perlfunc/open> and L<open>.
359
360 =back
361
362 =head3 L<perlapi>
363
364 =over 4
365
366 =item *
367
368 The HV API has long accepted negative lengths to indicate that the key is
369 in UTF8.  Now this is documented.
370
371 =back
372
373 =head3 L<perlguts>
374
375 =over 4
376
377 =item *
378
379 A new section, L<Autoloading with XSUBs|perlguts/Autoloading with XSUBs>,
380 has been added, which explains the two APIs for accessing the name of the
381 autoloaded sub.
382
383 =back
384
385 =head1 Diagnostics
386
387 The following additions or changes have been made to diagnostic output,
388 including warnings and fatal error messages.  For the complete list of
389 diagnostic messages, see L<perldiag>.
390
391 XXX New or changed warnings emitted by the core's C<C> code go here. Also
392 include any changes in L<perldiag> that reconcile it to the C<C> code.
393
394 [ Within each section, list entries as a =item entry that links to perldiag,
395   e.g.
396
397   =item *
398
399   L<Invalid version object|perldiag/"Invalid version object">
400 ]
401
402 =head2 New Diagnostics
403
404 XXX Newly added diagnostic messages go here
405
406 =head3 New Errors
407
408 =over 4
409
410 =item *
411
412 XXX L<message|perldiag/"message">
413
414 =back
415
416 =head3 New Warnings
417
418 =over 4
419
420 =item *
421
422 XXX L<message|perldiag/"message">
423
424 =back
425
426 =head2 Changes to Existing Diagnostics
427
428 XXX Changes (i.e. rewording) of diagnostic messages go here
429
430 =over 4
431
432 =item *
433
434 The message,
435 "Code point 0x%X is not Unicode, no properties match it; all inverse
436 prop erties do" has been changed to "Code point 0x%X is not Unicode, all
437 \p{} matches fail; all \P{} matches succeed"
438
439
440 =back
441
442 =head1 Utility Changes
443
444 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
445 here. Most of these are built within the directories F<utils> and F<x2p>.
446
447 [ List utility changes as a =head3 entry for each utility and =item
448 entries for each change
449 Use L<XXX> with program names to get proper documentation linking. ]
450
451 =head3 L<XXX>
452
453 =over 4
454
455 =item *
456
457 XXX
458
459 =back
460
461 =head1 Configuration and Compilation
462
463 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
464 go here.  Any other changes to the Perl build process should be listed here.
465 However, any platform-specific changes should be listed in the
466 L</Platform Support> section, instead.
467
468 [ List changes as a =item entry ].
469
470 =over 4
471
472 =item *
473
474 XXX
475
476 =back
477
478 =head1 Testing
479
480 XXX Any significant changes to the testing of a freshly built perl should be
481 listed here.  Changes which create B<new> files in F<t/> go here as do any
482 large changes to the testing harness (e.g. when parallel testing was added).
483 Changes to existing files in F<t/> aren't worth summarising, although the bugs
484 that they represent may be covered elsewhere.
485
486 [ List each test improvement as a =item entry ]
487
488 =over 4
489
490 =item *
491
492 F<t/porting/checkcfgvar.t> now tests that all config.sh-style files are
493 complete. These are used by the various non-*nix to generate their
494 F<config.h>, and an incomplete input file will generate invalid output.
495
496 =back
497
498 =head1 Platform Support
499
500 XXX Any changes to platform support should be listed in the sections below.
501
502 [ Within the sections, list each platform as a =item entry with specific
503 changes as paragraphs below it. ]
504
505 =head2 New Platforms
506
507 XXX List any platforms that this version of perl compiles on, that previous
508 versions did not. These will either be enabled by new files in the F<hints/>
509 directories, or new subdirectories and F<README> files at the top level of the
510 source tree.
511
512 =over 4
513
514 =item XXX-some-platform
515
516 XXX
517
518 =back
519
520 =head2 Discontinued Platforms
521
522 XXX List any platforms that this version of perl no longer compiles on.
523
524 =over 4
525
526 =item XXX-some-platform
527
528 XXX
529
530 =back
531
532 =head2 Platform-Specific Notes
533
534 XXX List any changes for specific platforms. This could include configuration
535 and compilation changes or changes in portability/compatibility.  However,
536 changes within modules for platforms should generally be listed in the
537 L</Modules and Pragmata> section.
538
539 =over 4
540
541 =item XXX-some-platform
542
543 XXX
544
545 =back
546
547 =head1 Internal Changes
548
549 XXX Changes which affect the interface available to C<XS> code go here.
550 Other significant internal changes for future core maintainers should
551 be noted as well.
552
553 [ List each change as a =item entry ]
554
555 =over 4
556
557 =item *
558
559 These new functions have been added as part of the work on Unicode symbols:
560
561     HvNAMELEN
562     HvNAMEUTF8
563     HvENAMELEN
564     HvENAMEUTF8
565     gv_init_pv
566     gv_init_pvn
567     gv_init_pvsv
568     gv_fetchmeth_pv
569     gv_fetchmeth_pvn
570     gv_fetchmeth_sv
571     gv_fetchmeth_pv_autoload
572     gv_fetchmeth_pvn_autoload
573     gv_fetchmeth_sv_autoload
574     gv_fetchmethod_pv_flags
575     gv_fetchmethod_pvn_flags
576     gv_fetchmethod_sv_flags
577     gv_autoload_pv
578     gv_autoload_pvn
579     gv_autoload_sv
580     newGVgen_flags
581     sv_derived_from_pv
582     sv_derived_from_pvn
583     sv_derived_from_sv
584     sv_does_pv
585     sv_does_pvn
586     sv_does_sv
587     whichsig_pv
588     whichsig_pvn
589     whichsig_sv
590
591 The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags, are
592 experimental and may change in a future release.
593
594 =item *
595
596 The following functions were added.  These are I<not> part of the API:
597
598     GvNAMEUTF8
599     GvENAMELEN
600     GvENAME_HEK
601     CopSTASH_flags
602     CopSTASH_flags_set
603     PmopSTASH_flags
604     PmopSTASH_flags_set
605     sv_sethek
606     HEKfARG
607
608 There is also a C<HEKf> macro corresponding to C<SVf>, for
609 interpolating HEKs in formatted strings.
610
611 =item *
612
613 C<sv_catpvn_flags> takes a couple of new internal-only flags,
614 C<SV_CATBYTES> and C<SV_CATUTF8>, which tell it whether the char array to
615 be concatenated is UTF8.  This allows for more efficient concatenation than
616 creating temporary SVs to pass to C<sv_catsv>.
617
618 =item *
619
620 For XS AUTOLOAD subs, $AUTOLOAD is set once more, as it was in 5.6.0.  This
621 is in addition to setting C<SvPVX(cv)>, for compatibility with 5.8 to 5.14.
622 See L<perlguts/Autoloading with XSUBs>.
623
624 =item *
625
626 Perl now checks whether the array (the linearised isa) returned by a MRO
627 plugin begins with the name of the class itself, for which the array was
628 created, instead of assuming that it does.  This prevents the first element
629 from being skipped during method lookup.  It also means that
630 C<mro::get_linear_isa> may return an array with one more element than the
631 MRO plugin provided [perl #94306].
632
633 =back
634
635 =head1 Selected Bug Fixes
636
637 XXX Important bug fixes in the core language are summarised here.
638 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
639 L</Modules and Pragmata>.
640
641 [ List each fix as a =item entry ]
642
643 =over 4
644
645 =item *
646
647 In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly.  Sometimes
648 it would erroneously fail (when C<$tainted> contained a string that occurs
649 in the array I<after> the first element) or erroneously succeed (when
650 C<undef> occurred after the first element) [perl #93590].
651
652 =item *
653
654 Perl 5.15.0 introduced a minor regression, in that an object referenced by
655 a deleted hash element would be able to access the freed element from its
656 DESTROY method, causing panic errors [perl #99660].
657
658 =item *
659
660 Functions in the CORE package can now be called as methods.  That used to
661 work only when they had been called or referenced already.  So
662 C<< "foo"->CORE::ucfirst >> returns Foo.
663
664 =item *
665
666 C<use> and C<require> are no longer affected by the I/O layers active in
667 the caller's scope (enabled by L<open.pm|open>) [perl #96008].
668
669 =item *
670
671 Errors that occur when methods cannot be found during overloading now
672 mention the correct package name, as they did in 5.8.x, instead of
673 erroneously mentioning the "overload" package, as they have since 5.10.0.
674
675 =item *
676
677 Undefining C<%overload::> no longer causes a crash.
678
679 =item *
680
681 C<our $::é; $é> (which is invalid) no longer produces the "Compilation
682 error at lib/utf8_heavy.pl..." error message, which it started emitting in
683 5.10.0 [perl #99984].
684
685 =item *
686
687 A minor regression, introduced Perl 5.15.0, has been fixed in which some
688 regular expression Unicode property matches (C<\p{...}>) matched
689 non-Unicode code points.
690
691 =item *
692
693 In case-insensitive regular expression pattern matching, no longer on
694 UTF-8 encoded strings does the scan for the start of match only look at
695 the first possible position.  This caused matches such as
696 C<"f\x{FB00}" =~ /ff/i> to fail.
697
698 =item *
699
700 On 64-bit systems, C<read()> now understands large string offsets beyond
701 the 32-bit range.
702
703 =item *
704
705 Errors that occur when processing subroutine attributes no longer cause the
706 subroutine's op tree to leak.
707
708 =item *
709
710 C<sort> now works once more with custom sort routines that are XSUBs.  It
711 stopped working in 5.10.0.
712
713 =item *
714
715 C<sort> with a constant for a custom sort routine, although it produces
716 unsorted results, no longer crashes.  It started crashing in 5.10.0.
717
718 =item *
719
720 Warnings produced when a custom sort routine returns a non-numeric value
721 now contain "in sort"; e.g., "Use of uninitialized value in sort".
722
723 =item *
724
725 C<< sort { $a <=> $b } >>, which is optimised internally, now produces
726 "uninitialized" warnings for NaNs (not-a-number values), since C<< <=> >>
727 returns C<undef> for those.  This brings it in line with
728 S<C<< sort { 1; $a <=> $b } >>> and other more complex cases, which are not
729 optimised [perl #94390].
730
731 =item *
732
733 C<..> and C<...> in list context now call FETCH only once on tied
734 arguments, instead of three or four times [perl #53554].
735
736 =item *
737
738 C<..> and C<...> in list context now mention the name of the variable in
739 "uninitialized" warnings for string (as opposed to numeric) ranges.
740
741 =back
742
743 =head1 Known Problems
744
745 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
746 tests that had to be C<TODO>ed for the release would be noted here, unless
747 they were specific to a particular platform (see below).
748
749 This is a list of some significant unfixed bugs, which are regressions
750 from either 5.XXX.XXX or 5.XXX.XXX.
751
752 [ List each fix as a =item entry ]
753
754 =over 4
755
756 =item *
757
758 XXX A couple of modules were broken by stdbool.h changes, or was that in
759 5.15.3?
760
761 =back
762
763 =head1 Obituary
764
765 XXX If any significant core contributor has died, we've added a short obituary
766 here.
767
768 =head1 Acknowledgements
769
770 XXX Generate this with:
771
772   perl Porting/acknowledgements.pl v5.15.3..HEAD
773
774 =head1 Reporting Bugs
775
776 If you find what you think is a bug, you might check the articles
777 recently posted to the comp.lang.perl.misc newsgroup and the perl
778 bug database at http://rt.perl.org/perlbug/ .  There may also be
779 information at http://www.perl.org/ , the Perl Home Page.
780
781 If you believe you have an unreported bug, please run the L<perlbug>
782 program included with your release.  Be sure to trim your bug down
783 to a tiny but sufficient test case.  Your bug report, along with the
784 output of C<perl -V>, will be sent off to perlbug@perl.org to be
785 analysed by the Perl porting team.
786
787 If the bug you are reporting has security implications, which make it
788 inappropriate to send to a publicly archived mailing list, then please send
789 it to perl5-security-report@perl.org. This points to a closed subscription
790 unarchived mailing list, which includes
791 all the core committers, who will be able
792 to help assess the impact of issues, figure out a resolution, and help
793 co-ordinate the release of patches to mitigate or fix the problem across all
794 platforms on which Perl is supported. Please only use this address for
795 security issues in the Perl core, not for modules independently
796 distributed on CPAN.
797
798 =head1 SEE ALSO
799
800 The F<Changes> file for an explanation of how to view exhaustive details
801 on what changed.
802
803 The F<INSTALL> file for how to build Perl.
804
805 The F<README> file for general stuff.
806
807 The F<Artistic> and F<Copying> files for copyright information.
808
809 =cut