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