4 This has been completed up to 0aae26c14, except for:
5 803e389 rurban CYG17 utf8 paths
6 d9298c1 rurban mymalloc isn't thread safe
10 [ this is a template for a new perldelta file. Any text flagged as
11 XXX needs to be processed before release. ]
13 perldelta - what is new for perl v5.15.8
17 This document describes differences between the 5.15.7 release and
20 If you are upgrading from an earlier release such as 5.15.6, first read
21 L<perl5157delta>, which describes differences between 5.15.6 and
26 XXX Any important notices here
28 =head1 Core Enhancements
30 XXX New core language features go here. Summarise user-visible core language
31 enhancements. Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
34 [ List each enhancement as a =head2 entry ]
36 =head2 Improved ability to mix locales and Unicode, including UTF-8 locales
38 An optional parameter has been added to C<use locale>
40 use locale ':not_characters';
42 which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
43 portions of the current locale. Instead, the character set is assumed
44 to be Unicode. This allows locales and Unicode to be seamlessly mixed,
45 including the increasingly frequent UTF-8 locales. When using this
46 hybrid form of locales, the C<:locale> layer to the L<open> pragma can
47 be used to interface with the file system, and there are CPAN modules
48 available for ARGV and environment variable conversions.
50 Full details are in L<perllocale>.
52 =head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
54 Unicode foldcase is an extension to lowercase that gives better results
55 when comparing two strings case-insensitively. It has long been used
56 internally in regular expression C</i> matching. Now it is available
57 explicitly through the new C<fc> function call (enabled by
58 S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
59 C<CORE::fc>) or through the new C<\F> sequence in double-quotish
62 Full details are in L<perlfunc/fc>.
64 =head2 C<_> in subroutine prototypes
66 The C<_> character in subroutine prototypes is now allowed before C<@> or
69 =head2 Supports (I<almost>) Unicode 6.1
71 Besides the addition of whole new scripts, and new characters in
72 existing scripts, this new version of Unicode, as always, makes some
73 changes to existing characters. One change that may trip up some
74 applications is that the General Category of two characters in the
75 Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
76 Other_Symbol to Other_Punctuation. The same change has been made for
77 a character in each of Tibetan, Ethiopic, and Aegean.
78 The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE
79 through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General
80 Category changed from Other_Symbol to Other_Numeric. The Line Break
81 property has changes for Hebrew and Japanese; and as a consequence of
82 other changes in 6.1, the Perl regular expression construct C<\X> now
83 works differently for some characters in Thai and Lao.
85 New aliases (synonyms) have been defined for many property values;
86 these, along with the previously existing ones, are all cross indexed in
89 The return value of C<charnames::viacode()> is affected by other
92 Code point Old Name New Name
93 U+000A LINE FEED (LF) LINE FEED
94 U+000C FORM FEED (FF) FORM FEED
95 U+000D CARRIAGE RETURN (CR) CARRIAGE RETURN
96 U+0085 NEXT LINE (NEL) NEXT LINE
97 U+008E SINGLE-SHIFT 2 SINGLE-SHIFT-2
98 U+008F SINGLE-SHIFT 3 SINGLE-SHIFT-3
99 U+0091 PRIVATE USE 1 PRIVATE USE-1
100 U+0092 PRIVATE USE 2 PRIVATE USE-2
101 U+2118 SCRIPT CAPITAL P WEIERSTRASS ELLIPTIC FUNCTION
103 Perl will accept any of these names as input, but
104 C<charnames::viacode()> now returns the new name of each pair. The
105 change for U+2118 is considered by Unicode to be a correction, that is
106 the original name was a mistake (but again, it will remain forever valid
107 to use it to refer to U+2118). But most of these changes are the
108 fallout of the mistake Unicode 6.0 made in naming a character used in
109 Japanese cell phones to be "BELL", which conflicts with the long
110 standing industry use of (and Unicode's recommendation to use) that name
111 to mean the ASCII control character at U+0007. As a result, that name
112 has been deprecated in Perl since v5.14; and any use of it will raise a
113 warning message (unless turned off). The name "ALERT" is now the
114 preferred name for this code point, with "BEL" being an acceptable short
115 form. The name for the new cell phone character, at code point U+1F514,
116 remains undefined in this version of Perl (hence we don't quite
117 implement all of Unicode 6.1), but starting in v5.18, BELL will mean
118 this character, and not U+0007.
120 Unicode has taken steps to make sure that this sort of mistake does not
121 happen again. The Standard now includes all the generally accepted
122 names and abbreviations for control characters, whereas previously it
123 didn't (though there were recommended names for most of them, which Perl
124 used). This means that most of those recommended names are now
125 officially in the Standard. Unicode did not recommend names for the
126 four code points listed above between U+008E and U+008F, and in
127 standardizing them Unicode subtly changed the names that Perl had
128 previously given them, by replacing the final blank in each name by a
129 hyphen. Unicode also officially accepts names that Perl had deprecated,
130 such as FILE SEPARATOR. Now the only deprecated name is BELL.
131 Finally, Perl now uses the new official names instead of the old
132 (now considered obsolete) names for the first four code points in the
133 list above (the ones which have the parentheses in them).
135 Now that the names have been placed in the Unicode standard, these kinds
136 of changes should not happen again, though corrections, such as to
137 U+2118, are still possible.
139 Unicode also added some name abbreviations, which Perl now accepts:
141 TAB for CHARACTER TABULATION;
142 NEW LINE, END OF LINE, NL, and EOL for LINE FEED;
143 LOCKING-SHIFT ONE for SHIFT OUT;
144 LOCKING-SHIFT ZERO for SHIFT IN;
145 and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
147 More details on this version of Unicode are provided in
148 L<http://www.unicode.org/versions/Unicode6.1.0/>.
150 =head2 Added C<is_utf8_char_buf()>
152 This function is designed to replace the deprecated L</is_utf8_char()>
153 function. It includes an extra parameter to make sure it doesn't read
154 past the end of the input buffer.
158 XXX Any security-related notices go here. In particular, any security
159 vulnerabilities closed should be noted here rather than in the
160 L</Selected Bug Fixes> section.
162 [ List each security issue as a =head2 entry ]
164 =head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()>
166 The latter function is now deprecated because its API is insufficient to
167 guarantee that it doesn't read (up to 12 bytes in the worst case) beyond
168 the end of its input string. See
169 L<is_utf8_char_buf()|/Added is_utf8_char_buf()>.
171 =head1 Incompatible Changes
173 XXX For a release on a stable branch, this section aspires to be:
175 There are no changes intentionally incompatible with 5.XXX.XXX
176 If any exist, they are bugs, and we request that you submit a
177 report. See L</Reporting Bugs> below.
179 [ List each incompatible change as a =head2 entry ]
181 =head2 Special blocks called in void context
183 Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
184 called in void context. This avoids wasteful copying of the result of the
185 last statement [perl #108794].
187 =head2 The C<overloading> pragma and regexp objects
189 With C<no overloading>, regular expression objects returned by C<qr//> are
190 now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
191 expression itself [perl #108780].
193 =head2 Two XS typemap Entries removed
195 Two presumably unused XS typemap entries have been removed from the
196 core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
197 a user of these, please see the instructions on how to regain them
200 =head2 Unicode 6.1 has incompatibilities with Unicode 6.0
202 These are detailed in L</Supports (almost) Unicode 6.1> above.
204 =head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()>
206 The return values for C<prop_invmap> have been changed for some
207 properties to make the returned lists significantly smaller. This
208 allows those lists to be searched faster.
210 This function was introduced earlier in the v5.15 series of releases,
211 and the API will not be considered stable until v5.16.
213 See L<Unicode::UCD/prop_invmap()> for details on the new interface.
215 =head2 C<$$> and C<getppid()> no longer emulate POSIX semantics under LinuxThreads
217 The POSIX emulation of C<$$> and C<getppid()> under the obsolete
218 LinuxThreads implementation has been removed (the C<$$> emulation was
219 actually removed in v5.15.0). This only impacts users of Linux 2.4 and
220 users of Debian GNU/kFreeBSD up to and including 6.0, not the vast
221 majority of Linux installations that use NPTL threads.
223 This means that C<getppid()> like C<$$> is now always guaranteed to
224 return the OS's idea of the current state of the process, not perl's
225 cached version of it.
227 See the documentation for L<$$|perlvar/$$> for details.
229 =head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed
231 This is unlikely to result in a real problem, as Perl does not attach
232 special meaning to any non-ASCII character, so it is currently
233 irrelevant which are quoted or not. This change fixes bug [perl #77654] and
234 bring Perl's behavior more into line with Unicode's recommendations.
235 See L<perlfunc/quotemeta>.
239 XXX Any deprecated features, syntax, modules etc. should be listed here.
240 In particular, deprecated modules should be listed here even if they are
241 listed as an updated module in the L</Modules and Pragmata> section.
243 [ List each deprecation as a =head2 entry ]
245 =head2 C<is_utf8_char()>
247 This function is deprecated because it could read beyond the end of the
248 input string. Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>
251 =head1 Performance Enhancements
253 XXX Changes which enhance performance without changing behaviour go here. There
254 may well be none in a stable release.
256 [ List each enhancement as a =item entry ]
266 =head1 Modules and Pragmata
268 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
269 go here. If Module::CoreList is updated, generate an initial draft of the
270 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
271 entries to STDOUT. Results can be pasted in place of the '=head2' entries
272 below. A paragraph summary for important changes should then be added by hand.
273 In an ideal world, dual-life modules would have a F<Changes> file that could be
276 [ Within each section, list entries as a =item entry ]
278 =head2 New Modules and Pragmata
284 The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
285 been moved out into the new L<PerlIO::mmap> module.
289 =head2 Updated Modules and Pragmata
295 L<arybase> has been upgraded from version 0.03 to version 0.04.
297 List slices no longer modify items on the stack belonging to outer lists
302 L<B> has been upgraded from version 1.33 to version 1.34.
304 C<B::COP> now has a C<stashflags> method, corresponding to a new internal
305 field added in 5.15.4 [perl #108860].
309 L<Carp> has been upgraded from version 1.24 to version 1.25.
311 It now puts a dot after the file and line number, just like errors from
312 C<die> [perl #106538].
316 L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
320 L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
324 L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
328 L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351.
330 Work around a memory leak bug involving version objects in boolean context.
334 L<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007.
338 L<CPANPLUS> has been upgraded from version 0.9116 to version 0.9118.
342 L<CPANPLUS::Dist::Build> has been upgraded from version 0.60 to version 0.62.
346 L<DB_File> has been upgraded from version 1.824 to version 1.826.
350 L<diagnostics> has been upgraded from version 1.27 to version 1.28.
352 When searching for F<perldiag.pod>, it no longer uses paths that were only
353 relevant on Perl 5.004 and earlier.
357 L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
359 The new version comes with important tools for sharing typemaps between
360 different CPAN distributions.
364 L<File::Copy> has been upgraded from version 2.21 to version 2.23.
366 It no longer emits warnings when copying files with newlines in their names
371 L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
375 L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
377 This avoids a new core warning.
381 L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009.
383 Adds C<provides> method to generate a CPAN META provides data structure
384 correctly; use of C<package_versions_from_directory> is discouraged.
388 L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
392 L<Pod::Functions> has been upgraded from version 1.04 to version 1.05.
394 F<Functions.pm> is now generated at perl build time from annotations in
395 F<perlfunc.pod>. This will ensure that L<Pod::Functions> and L<perlfunc>
396 remain in synchronisation.
400 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
404 L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
406 Its C<tkRunning> method now supports L<AnyEvent> event loops, and not just
407 L<Tk>. A more general mechanism has been proposed, so this may be reverted
408 before Perl 5.16 [perl #108470].
412 L<Socket> has been upgraded from version 1.97 to version 1.98.
416 L<Time::HiRes> has been upgraded from version 1.9724 to version 1.9725.
418 C<Time::HiRes::stat()> no longer corrupts the Perl stack.
422 L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
424 The only change is to fix a formatting error in the Pod.
428 L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
432 =head2 Removed Modules and Pragmata
438 F<t/porting/perlfunc.t> has been added, to test that changes to
439 F<pod/perlfunc.pod> do not inadvertently break the build of L<Pod::Functions>.
445 XXX Changes to files in F<pod/> go here. Consider grouping entries by
446 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
448 =head2 New Documentation
450 XXX Changes which create B<new> files in F<pod/> go here.
452 =head3 L<perlxstypemap>
454 The new manual describes the XS typemapping mechanism in unprecedented
455 detail and combines new documentation with information extracted from
456 L<perlxs> and the previously unofficial list of all core typemaps.
460 XXX Description of the purpose of the new file here
462 =head2 Changes to Existing Documentation
464 XXX Changes which significantly change existing files in F<pod/> go here.
465 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
474 XXX Description of the change here
480 The following additions or changes have been made to diagnostic output,
481 including warnings and fatal error messages. For the complete list of
482 diagnostic messages, see L<perldiag>.
484 XXX New or changed warnings emitted by the core's C<C> code go here. Also
485 include any changes in L<perldiag> that reconcile it to the C<C> code.
487 [ Within each section, list entries as a =item entry that links to perldiag,
492 L<Invalid version object|perldiag/"Invalid version object">
495 =head2 New Diagnostics
497 XXX Newly added diagnostic messages go here
505 XXX L<message|perldiag/"message">
515 XXX L<message|perldiag/"message">
519 =head2 Changes to Existing Diagnostics
521 XXX Changes (i.e. rewording) of diagnostic messages go here
527 XXX Describe change here
531 =head1 Utility Changes
533 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
534 here. Most of these are built within the directories F<utils> and F<x2p>.
536 [ List utility changes as a =head3 entry for each utility and =item
537 entries for each change
538 Use L<XXX> with program names to get proper documentation linking. ]
550 =head1 Configuration and Compilation
552 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
553 go here. Any other changes to the Perl build process should be listed here.
554 However, any platform-specific changes should be listed in the
555 L</Platform Support> section, instead.
557 [ List changes as a =item entry ].
569 XXX Any significant changes to the testing of a freshly built perl should be
570 listed here. Changes which create B<new> files in F<t/> go here as do any
571 large changes to the testing harness (e.g. when parallel testing was added).
572 Changes to existing files in F<t/> aren't worth summarising, although the bugs
573 that they represent may be covered elsewhere.
575 [ List each test improvement as a =item entry ]
585 The test suite for typemaps has been extended to cover a larger fraction of
590 =head1 Platform Support
592 XXX Any changes to platform support should be listed in the sections below.
594 [ Within the sections, list each platform as a =item entry with specific
595 changes as paragraphs below it. ]
599 XXX List any platforms that this version of perl compiles on, that previous
600 versions did not. These will either be enabled by new files in the F<hints/>
601 directories, or new subdirectories and F<README> files at the top level of the
606 =item XXX-some-platform
612 =head2 Discontinued Platforms
614 XXX List any platforms that this version of perl no longer compiles on.
618 =item XXX-some-platform
624 =head2 Platform-Specific Notes
626 XXX List any changes for specific platforms. This could include configuration
627 and compilation changes or changes in portability/compatibility. However,
628 changes within modules for platforms should generally be listed in the
629 L</Modules and Pragmata> section.
633 =item XXX-some-platform
639 =head1 Internal Changes
641 XXX Changes which affect the interface available to C<XS> code go here.
642 Other significant internal changes for future core maintainers should
645 [ List each change as a =item entry ]
655 =head1 Selected Bug Fixes
657 XXX Important bug fixes in the core language are summarised here.
658 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
659 L</Modules and Pragmata>.
661 [ List each fix as a =item entry ]
667 C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
668 by an overloaded object on the left-hand side.
672 C<stat _> no longer warns about unopened filehandles [perl #71002].
676 C<stat> on an unopened filehandle now warns consistently, instead of
677 skipping the warning at times.
681 A change in an earlier 5.15 release caused warning hints to propagate into
682 C<do $file>. This has been fixed [rt.cpan.org #72767].
686 Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
687 after assigning C<${ qr// }> to a hash element and locking it with
688 L<Hash::Util>. This could result in double frees, crashes or erratic
693 In 5.15.7, some typeglobs in the CORE namespace were made read-only by
694 mistake. This has been fixed [rt.cpan.org #74289].
698 C<-t> now works when stacked with other filetest operators [perl #77388].
702 Stacked filetest operators now only call FETCH once on a tied argument.
706 C</.*/g> would sometimes refuse to match at the end of a string that ends
707 with "\n". This has been fixed [perl #109206].
711 C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not
712 under a differing locale). This fixes a regression introduced in 5.14
713 in which the first expression could match characters outside of ASCII,
714 such as the KELVIN SIGN.
718 Method calls whose arguments were all surrounded with C<my()> or C<our()>
719 (as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
720 the subroutine. This would prevent lvalue methods from returning certain
721 values. Due to lvalue fixes earlier in the 5.15.x series, it would also
722 prevent non-lvalue methods from being called [perl #109264].
725 This bug I<did> affect earlier stable releases. It is just the last
726 sentence that does not apply to 5.14.
730 The C<SvPVutf8> C function no longer tries to modify its argument,
731 resulting in errors [perl #108994].
735 C<SvPVutf8> now works properly with magical variables.
739 C<SvPVbyte> now works properly non-PVs.
743 C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
744 C<use locale> when the platform supports that. Previously, they used
745 the platform's native character set.
749 A regression introduced in 5.13.6 was fixed. This involved an inverted
750 bracketed character class in a regular expression that consisted solely
751 of a Unicode property, that property wasn't getting inverted outside the
756 C<quotemeta> now quotes consistently the same non-ASCII characters under
757 C<use feature 'unicode_strings'>, regardless of whether the string is
758 encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the
759 infamous L<perlunicode/The "Unicode Bug">. [perl #77654].
761 Which of these code points is quoted has changed, based on Unicode's
762 recommendations. See L<perlfunc/quotemeta> for details.
766 =head1 Known Problems
768 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
769 tests that had to be C<TODO>ed for the release would be noted here, unless
770 they were specific to a particular platform (see below).
772 This is a list of some significant unfixed bugs, which are regressions
773 from either 5.XXX.XXX or 5.XXX.XXX.
775 [ List each fix as a =item entry ]
787 XXX If any significant core contributor has died, we've added a short obituary
790 =head1 Acknowledgements
792 XXX Generate this with:
794 perl Porting/acknowledgements.pl v5.15.7..HEAD
796 =head1 Reporting Bugs
798 If you find what you think is a bug, you might check the articles
799 recently posted to the comp.lang.perl.misc newsgroup and the perl
800 bug database at http://rt.perl.org/perlbug/ . There may also be
801 information at http://www.perl.org/ , the Perl Home Page.
803 If you believe you have an unreported bug, please run the L<perlbug>
804 program included with your release. Be sure to trim your bug down
805 to a tiny but sufficient test case. Your bug report, along with the
806 output of C<perl -V>, will be sent off to perlbug@perl.org to be
807 analysed by the Perl porting team.
809 If the bug you are reporting has security implications, which make it
810 inappropriate to send to a publicly archived mailing list, then please send
811 it to perl5-security-report@perl.org. This points to a closed subscription
812 unarchived mailing list, which includes
813 all the core committers, who will be able
814 to help assess the impact of issues, figure out a resolution, and help
815 co-ordinate the release of patches to mitigate or fix the problem across all
816 platforms on which Perl is supported. Please only use this address for
817 security issues in the Perl core, not for modules independently
822 The F<Changes> file for an explanation of how to view exhaustive details
825 The F<INSTALL> file for how to build Perl.
827 The F<README> file for general stuff.
829 The F<Artistic> and F<Copying> files for copyright information.