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