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