5 perl5110delta - what is new for perl v5.11.0
9 This document describes differences between the 5.10.0 release and
10 the 5.11.0 development release.
12 =head1 Incompatible Changes
14 =head2 Unicode interpretation of \w, \d, \s, and the POSIX character classes redefined.
16 Previous versions of Perl tried to map POSIX style character class definitions onto
17 Unicode property names so that patterns would "dwim" when matches were made against latin-1 or
18 unicode strings. This proved to be a mistake, breaking character class negation, causing
19 forward compatibility problems (as Unicode keeps updating their property definitions and adding
20 new characters), and other problems.
22 Therefore we have now defined a new set of artificial "unicode" property names which will be
23 used to do unicode matching of patterns using POSIX style character classes and perl short-form
24 escape character classes like \w and \d.
26 The key change here is that \d will no longer match every digit in the unicode standard
27 (there are thousands) nor will \w match every word character in the standard, instead they
28 will match precisely their POSIX or Perl definition.
30 Those needing to match based on Unicode properties can continue to do so by using the \p{} syntax
31 to match whichever property they like, including the new artificial definitions.
33 B<NOTE:> This is a backwards incompatible no-warning change in behaviour. If you are upgrading
34 and you process large volumes of text look for POSIX and Perl style character classes and
35 change them to the relevent property name (by removing the word 'Posix' from the current name).
37 The following table maps the POSIX character class names, the escapes and the old and new
38 Unicode property mappings:
40 POSIX Esc Class New-Property ! Old-Property
41 ----------------------------------------------+-------------
42 alnum [0-9A-Za-z] IsPosixAlnum ! IsAlnum
43 alpha [A-Za-z] IsPosixAlpha ! IsAlpha
44 ascii [\000-\177] IsASCII = IsASCII
45 blank [\011 ] IsPosixBlank !
46 cntrl [\0-\37\177] IsPosixCntrl ! IsCntrl
47 digit \d [0-9] IsPosixDigit ! IsDigit
48 graph [!-~] IsPosixGraph ! IsGraph
49 lower [a-z] IsPosixLower ! IsLower
50 print [ -~] IsPosixPrint ! IsPrint
51 punct [!-/:-@[-`{-~] IsPosixPunct ! IsPunct
52 space [\11-\15 ] IsPosixSpace ! IsSpace
53 \s [\11\12\14\15 ] IsPerlSpace ! IsSpacePerl
54 upper [A-Z] IsPosixUpper ! IsUpper
55 word \w [0-9A-Z_a-z] IsPerlWord ! IsWord
56 xdigit [0-9A-Fa-f] IsXDigit = IsXDigit
58 If you wish to build perl with the old mapping you may do so by setting
60 #define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 1
62 in regcomp.h, and then setting
64 PERL_TEST_LEGACY_POSIX_CC
66 to true your enviornment when testing.
69 =head2 @INC reorganization
71 In @INC, ARCHLIB and PRIVLIB now occur after after the current version's
72 site_perl and vendor_perl.
74 =head2 Switch statement changes
76 The handling of complex expressions by the C<given>/C<when> switch
77 statement has been enhanced. These enhancements are also available in
78 5.10.1 and subsequent 5.10 releases. There are two new cases where C<when> now
79 interprets its argument as a boolean, instead of an expression to be used
84 =item flip-flop operators
86 The C<..> and C<...> flip-flop operators are now evaluated in boolean
87 context, following their usual semantics; see L<perlop/"Range Operators">.
89 Note that, as in perl 5.10.0, C<when (1..10)> will not work to test
90 whether a given value is an integer between 1 and 10; you should use
91 C<when ([1..10])> instead (note the array reference).
93 However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
94 context ensures it can now be useful in a C<when()>, notably for
95 implementing bistable conditions, like in:
97 when (/^=begin/ .. /^=end/) {
101 =item defined-or operator
103 A compound expression involving the defined-or operator, as in
104 C<when (expr1 // expr2)>, will be treated as boolean if the first
105 expression is boolean. (This just extends the existing rule that applies
106 to the regular or operator, as in C<when (expr1 || expr2)>.)
110 The next section details more changes brought to the semantics to
111 the smart match operator, that naturally also modify the behaviour
112 of the switch statements where smart matching is implicitly used.
113 These changers were also made for the 5.10.1 release, and will remain in
114 subsequent 5.10 releases.
116 =head2 Smart match changes
118 =head3 Changes to type-based dispatch
120 The smart match operator C<~~> is no longer commutative. The behaviour of
121 a smart match now depends primarily on the type of its right hand
122 argument. Moreover, its semantics have been adjusted for greater
123 consistency or usefulness in several cases. While the general backwards
124 compatibility is maintained, several changes must be noted:
130 Code references with an empty prototype are no longer treated specially.
131 They are passed an argument like the other code references (even if they
132 choose to ignore it).
136 C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine
137 returns a true value for each key of the hash (or element of the
138 array), instead of passing the whole hash or array as a reference to
143 Due to the commutativity breakage, code references are no longer
144 treated specially when appearing on the left of the C<~~> operator,
145 but like any vulgar scalar.
149 C<undef ~~ %hash> is always false (since C<undef> can't be a key in a
150 hash). No implicit conversion to C<""> is done (as was the case in perl
155 C<$scalar ~~ @array> now always distributes the smart match across the
156 elements of the array. It's true if one element in @array verifies
157 C<$scalar ~~ $element>. This is a generalization of the old behaviour
158 that tested whether the array contained the scalar.
162 The full dispatch table for the smart match operator is given in
163 L<perlsyn/"Smart matching in detail">.
165 =head3 Smart match and overloading
167 According to the rule of dispatch based on the rightmost argument type,
168 when an object overloading C<~~> appears on the right side of the
169 operator, the overload routine will always be called (with a 3rd argument
170 set to a true value, see L<overload>.) However, when the object will
171 appear on the left, the overload routine will be called only when the
172 rightmost argument is a simple scalar. This way distributivity of smart match
173 across arrays is not broken, as well as the other behaviours with complex
174 types (coderefs, hashes, regexes). Thus, writers of overloading routines
175 for smart match mostly need to worry only with comparing against a scalar,
176 and possibly with stringification overloading; the other common cases
177 will be automatically handled consistently.
179 C<~~> will now refuse to work on objects that do not overload it (in order
180 to avoid relying on the object's underlying structure). (However, if the
181 object overloads the stringification or the numification operators, and
182 if overload fallback is active, it will be used instead, as usual.)
184 =head2 Labels can't be keywords
186 Labels used as targets for the C<goto>, C<last>, C<next> or C<redo>
187 statements cannot be keywords anymore. This restriction will prevent
188 potential confusion between the C<goto LABEL> and C<goto EXPR> syntaxes:
189 for example, a statement like C<goto print> would jump to a label whose
190 name would be the return value of C<print()>, (usually 1), instead of a
191 label named C<print>. Moreover, the other control flow statements
192 would just ignore any keyword passed to them as a label name. Since
193 such labels cannot be defined anymore, this kind of error will be
196 =head2 Other incompatible changes
202 The semantics of C<use feature :5.10*> have changed slightly.
203 See L<"Modules and Pragmata"> for more information.
207 It is now a run-time error to use the smart match operator C<~~>
208 with an object that has no overload defined for it. (This way
209 C<~~> will not break encapsulation by matching against the
210 object's internal representation as a reference.)
214 The version control system used for the development of the perl
215 interpreter has been switched from Perforce to git. This is mainly an
216 internal issue that only affects people actively working on the perl core;
217 but it may have minor external visibility, for example in some of details
218 of the output of C<perl -V>. See L<perlrepository> for more information.
222 The internal structure of the C<ext/> directory in the perl source has
223 been reorganised. In general, a module C<Foo::Bar> whose source was
224 stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also,
225 nearly all dual-life modules have been moved from F<lib/> to F<ext/>. This
226 is purely a source tarball change, and should make no difference to the
227 compilation or installation of perl, unless you have a very customised build
228 process that explicitly relies on this structure, or which hard-codes the
229 C<nonxs_ext> F<Configure> parameter. Specifically, this change does not by
230 default alter the location of any files in the final installation.
234 As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental
235 C<Test::Harness::Straps> module has been removed.
236 See L</"Updated Modules"> for more details.
240 As part of the C<ExtUtils::MakeMaker> upgrade, the
241 C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> modules
242 have been removed from this distribution.
246 C<Module::CoreList> no longer contains the C<%:patchlevel> hash.
250 This one is actually a change introduced in 5.10.0, but it was missed
251 from that release's perldelta, so it is mentioned here instead.
253 A bugfix related to the handling of the C</m> modifier and C<qr> resulted
254 in a change of behaviour between 5.8.x and 5.10.0:
256 # matches in 5.8.x, doesn't match in 5.10.0
257 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
261 C<length undef> now returns undef.
265 Unsupported private C API functions are now declared "static" to prevent
266 leakage to Perl's public API.
270 To support the bootstrapping process, F<miniperl> no longer builds with
271 UTF-8 support in the regexp engine.
273 This allows a build to complete with PERL_UNICODE set and a UTF-8 locale.
274 Without this there's a bootstrapping problem, as miniperl can't load the UTF-8
275 components of the regexp engine, because they're not yet built.
279 F<miniperl>'s @INC is now restricted to just -I..., the split of $ENV{PERL5LIB}, and "."
283 A space or a newline is now required after a C<"#line XXX"> directive.
287 Tied filehandles now have an additional method EOF which provides the EOF type
291 To better match all other flow control statements, C<foreach> may no longer be used as an attribute.
295 =head1 Core Enhancements
297 =head2 Unicode Character Database 5.1.0
299 The copy of the Unicode Character Database included in Perl 5.11.0 has
300 been updated to 5.1.0 from 5.0.0. See
301 L<http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> for the
304 =head2 A proper interface for pluggable Method Resolution Orders
306 As of Perl 5.11.0 there is a new interface for plugging and using method
307 resolution orders other than the default (linear depth first search).
308 The C3 method resolution order added in 5.10.0 has been re-implemented as
309 a plugin, without changing its Perl-space interface. See L<perlmroapi> for
312 =head2 The C<overloading> pragma
314 This pragma allows you to lexically disable or enable overloading
315 for some or all operations. (Yuval Kogman)
317 =head2 C<\N> regex escape
319 A new regex escape has been added, C<\N>. It will match any character that
320 is not a newline, independently from the presence or absence of the single
321 line match modifier C</s>. (If C<\N> is followed by an opening brace and
322 by a letter, perl will still assume that a Unicode character name is
323 coming, so compatibility is preserved.) (Rafael Garcia-Suarez)
325 =head2 Implicit strictures
327 Using the C<use VERSION> syntax with a version number greater or equal
328 to 5.11.0 will also lexically enable strictures just like C<use strict>
329 would do (in addition to enabling features.) So, the following:
338 =head2 Parallel tests
340 The core distribution can now run its regression tests in parallel on
341 Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> in
342 your environment to the number of tests to run in parallel, and run
343 C<make test_harness>. On a Bourne-like shell, this can be done as
345 TEST_JOBS=3 make test_harness # Run 3 tests in parallel
347 An environment variable is used, rather than parallel make itself, because
348 L<TAP::Harness> needs to be able to schedule individual non-conflicting test
349 scripts itself, and there is no standard interface to C<make> utilities to
350 interact with their job schedulers.
352 Note that currently some test scripts may fail when run in parallel (most
353 notably C<ext/IO/t/io_dir.t>). If necessary run just the failing scripts
354 again sequentially and see if the failures go away.
356 =head2 The C<...> operator
358 A new operator, C<...>, nicknamed the Yada Yada operator, has been added.
359 It is intended to mark placeholder code, that is not yet implemented.
360 See L<perlop/"Yada Yada Operator">. (chromatic)
362 =head2 DTrace support
364 Some support for DTrace has been added. See "DTrace support" in F<INSTALL>.
366 =head2 Support for C<configure_requires> in CPAN module metadata
368 Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword
369 in the F<META.yml> metadata file included in most recent CPAN distributions.
370 This allows distribution authors to specify configuration prerequisites that
371 must be installed before running F<Makefile.PL> or F<Build.PL>.
373 See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for more
374 on how to specify C<configure_requires> when creating a distribution for CPAN.
376 =head2 C<each> is now more flexible
378 The C<each> function can now operate on arrays.
380 =head2 Y2038 compliance
382 Perl's core time-related functions are now Y2038 compliant. (With 29
385 =head2 C<$,> flexibility
387 The variable C<$,> may now be tied.
389 =head2 // in where clauses
391 // now behaves like || in when clauses
393 =head2 Enabling warnings from your shell environment
395 You can now set C<-W> from the C<PERL5OPT> environment variable
397 =head2 C<delete local>
399 C<delete local> now allows you to locally delete a hash entry.
401 =head2 New support for Abstract namespace sockets
403 Abstract namespace sockets are Linux-specific socket type that live in
404 AF_UNIX family, slightly abusing it to be able to use arbitrary
405 character arrays as addresses: They start with nul byte and are not
406 terminated by nul byte, but with the length passed to the socket()
409 =head1 Modules and Pragmata
411 =head2 Dual-lifed modules moved
413 Dual-lifed modules maintained primarily in the Perl core now live in dist/.
414 Dual-lifed modules maintained primarily on CPAN now live in cpan/
416 In previous releases of Perl, it was customary to enumerate all module
417 changes in this section of the C<perldelta> file. From 5.11.0 forward
418 only notable updates (such as new or deprecated modules ) will be
419 listed in this section. For a complete reference to the versions of
420 modules shipped in a given release of perl, please see L<Module::CoreList>.
422 =head2 New Modules and Pragmata
428 This is a new lexically-scoped alternative for the C<Fatal> module.
429 The bundled version is 2.06_01. Note that in this release, using a string
430 eval when C<autodie> is in effect can cause the autodie behaviour to leak
431 into the surrounding scope. See L<autodie/"BUGS"> for more details.
433 =item C<Compress::Raw::Bzip2>
435 This has been added to the core (version 2.020).
439 This pragma establishes an ISA relationship with base classes at compile
440 time. It provides the key feature of C<base> without the feature creep.
442 =item C<Parse::CPAN::Meta>
444 This has been added to the core (version 1.39).
448 =head2 Pragmata Changes
454 See L</"The C<overloading> pragma"> above.
458 The C<attrs> pragma has been removed. It had been marked as deprecated since
463 The Unicode F<NameAliases.txt> database file has been added. This has the
464 effect of adding some extra C<\N> character names that formerly wouldn't
465 have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">.
469 The meaning of the C<:5.10> and C<:5.10.X> feature bundles has
470 changed slightly. The last component, if any (i.e. C<X>) is simply ignored.
471 This is predicated on the assumption that new features will not, in
472 general, be added to maintenance releases. So C<:5.10> and C<:5.10.X>
473 have identical effect. This is a change to the behaviour documented for
478 Upgraded from version 1.00 to 1.01. Performance for single inheritance is 40%
479 faster - see L</"Performance Enhancements"> below.
481 C<mro> is now implemented as an XS extension. The documented interface has not
482 changed. Code relying on the implementation detail that some C<mro::>
483 methods happened to be available at all times gets to "keep both pieces".
487 =head2 Updated Modules
491 =item C<ExtUtils::MakeMaker>
493 Upgraded from version 6.42 to 6.55_02.
495 Note that C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish>
496 have been removed from this distribution.
498 =item C<Test::Harness>
500 Upgraded from version 2.64 to 3.17.
502 Note that one side-effect of the 2.x to 3.x upgrade is that the
503 experimental C<Test::Harness::Straps> module (and its supporting
504 C<Assert>, C<Iterator>, C<Point> and C<Results> modules) have been
505 removed. If you still need this, then they are available in the
506 (unmaintained) C<Test-Harness-Straps> distribution on CPAN.
510 Upgraded from version 1.04 to 1.05.
512 C<< UNIVERSAL-E<gt>import() >> is now deprecated.
516 =head1 Utility Changes
522 Now looks in C<include-fixed> too, which is a recent addition to gcc's
527 No longer incorrectly treats enum values like macros (Daniel Burr).
529 Now handles C++ style constants (C<//>) properly in enums. (A patch from
530 Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
534 C<LVALUE> subroutines now work under the debugger.
536 The debugger now correctly handles proxy constant subroutines, and
541 F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out upstream bug
544 Where the user names a module that their bug report is about, and we know the
545 URL for its upstream bug tracker, provide a message to the user explaining
546 that the core copies the CPAN version directly, and provide the URL for
547 reporting the bug directly to upstream.
551 Perl 5.11.0 added a new utility F<perlthanks>, which is a variant of
552 F<perlbug>, but for sending non-bug-reports to the authors and maintainers
553 of Perl. Getting nothing but bug reports can become a bit demoralising:
554 we'll see if this changes things.
558 =head1 New Documentation
564 This contains instructions on how to build perl for the Haiku platform.
568 This describes the new interface for pluggable Method Resolution Orders.
572 This document, by Richard Foley, provides an introduction to the use of
573 performance and optimization techniques which can be used with particular
574 reference to perl programs.
576 =item L<perlrepository>
578 This describes how to access the perl source using the I<git> version
583 =head1 Changes to Existing Documentation
585 The various large F<Changes*> files (which listed every change made to perl
586 over the last 18 years) have been removed, and replaced by a small file,
587 also called F<Changes>, which just explains how that same information may
588 be extracted from the git version control system.
590 The file F<Porting/patching.pod> has been deleted, as it mainly described
591 interacting with the old Perforce-based repository, which is now obsolete.
592 Information still relevant has been moved to L<perlrepository>.
594 L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
595 generated at build time, rather than being shipped as part of the release.
601 Documented -X overloading.
605 Documented that C<when()> treats specially most of the filetest operators
609 Documented when as a syntax modifier
613 Eliminated "Old Perl threads tutorial", which describes 5005 threads.
615 F<pod/perlthrtut.pod> is the same material reworked for ithreads.
619 Correct previous documentation: v-strings are not deprecated
621 With version objects, we need them to use MODULE VERSION syntax. This
622 patch removes the deprecation note.
626 Added security contact information to L<perlsec>
630 =head1 Performance Enhancements
637 A new internal cache means that C<isa()> will often be faster.
641 The implementation of C<C3> Method Resolution Order has been optimised -
642 linearisation for classes with single inheritance is 40% faster. Performance
643 for multiple inheritance is unchanged.
647 Under C<use locale>, the locale-relevant information is now cached on
648 read-only values, such as the list returned by C<keys %hash>. This makes
649 operations such as C<sort keys %hash> in the scope of C<use locale> much
654 Empty C<DESTROY> methods are no longer called.
658 Faster C<Perl_sv_utf8_upgrade()>
662 Speed up C<keys> on empty hash
666 =head1 Installation and Configuration Improvements
668 =head2 F<ext/> reorganisation
670 The layout of directories in F<ext> has been revised. Specifically, all
671 extensions are now flat, and at the top level, with C</> in pathnames
672 replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
673 etc. The names of the extensions as specified to F<Configure>, and as
674 reported by C<%Config::Config> under the keys C<dynamic_ext>,
675 C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
676 still use C</>. Hence this change will not have any affect once perl is
677 installed. C<Safe> has been split out from being part of C<Opcode>, and
678 C<mro> is now an extension in its own right.
680 Nearly all dual-life modules have been moved from F<lib> to F<ext>, and will
681 now appear as known C<nonxs_ext>. This will made no difference to the
682 structure of an installed perl, nor will the modules installed differ,
683 unless you run F<Configure> with options to specify an exact list of
684 extensions to build. In this case, you will rapidly become aware that you
685 need to add to your list, because various modules needed to complete the
686 build, such as C<ExtUtils::ParseXS>, have now become extensions, and
687 without them the build will fail well before it attempts to run the
690 =head2 Configuration improvements
692 If C<vendorlib> and C<vendorarch> are the same, then they are only added to
695 C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
696 perl is built with C<-Dusedevel>.
698 F<Configure> will enable use of C<-fstack-protector>, to provide protection
699 against stack-smashing attacks, if the compiler supports it.
701 F<Configure> will now determine the correct prototypes for re-entrant
702 functions, and for C<gconvert>, if you are using a C++ compiler rather
705 On Unix, if you build from a tree containing a git repository, the
706 configuration process will note the commit hash you have checked out, for
707 display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
708 are automatically added to the list of local patches displayed by
711 =head2 Compilation improvements
713 As part of the flattening of F<ext>, all extensions on all platforms are
714 built by F<make_ext.pl>. This replaces the Unix-specific
715 F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
716 F<win32/buildext.pl>.
718 =head2 Platform Specific Changes
724 Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
726 Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
727 optional package with the AIX Toolbox. Unfortunately the 64 bit version
730 Hints changes mean that AIX 4.2 should work again.
734 On Cygwin we now strip the last number from the DLL. This has been the
735 behaviour in the cygwin.com build for years. The hints files have been
740 Support for Apollo DomainOS was removed in Perl 5.11.0
744 The hints files now identify the correct threading libraries on FreeBSD 7
749 We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
750 C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
754 Patches from the Haiku maintainers have been merged in. Perl should now
759 Support for Tenon Intersystems MachTen Unix layer for MacOS Classic was
760 removed in Perl 5.11.0
764 Support for Atari MiNT was removed in Perl 5.11.0.
768 Perl should now build on MirOS BSD.
772 Hints now supports versions 5.*.
776 Various changes from Stratus have been merged in.
780 There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
784 Improved message window handling means that C<alarm> and C<kill> messages
785 will no longer be dropped under race conditions.
789 Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
790 if C<$/> was set to a numeric reference (to indicate record-style reads).
793 VMS now supports C<getgrgid>.
795 Many improvements and cleanups have been made to the VMS file name handling
798 Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
799 status in a VMS condition value for better interaction with GNV's bash
800 shell and other utilities that depend on POSIX exit values. See
801 L<perlvms/"$?"> for details.
803 C<File::Copy> now detects Unix compatibility mode on VMS.
807 =head1 Selected Bug Fixes
813 C<-I> on shebang line now adds directories in front of @INC
814 as documented, and as does C<-I> when specified on the command-line.
818 C<kill> is now fatal when called on non-numeric process identifiers.
819 Previously, an 'undef' process identifier would be interpreted as a request to
820 kill process "0", which would terminate the current process group on POSIX
821 systems. Since process identifiers are always integers, killing a non-numeric
822 process is now fatal.
826 5.10.0 inadvertently disabled an optimisation, which caused a measurable
827 performance drop in list assignment, such as is often used to assign
828 function parameters from C<@_>. The optimisation has been re-instated, and
829 the performance regression fixed.
833 Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
837 Some potential coredumps in PerlIO fixed [RT #57322,54828].
841 The debugger now works with lvalue subroutines.
845 The debugger's C<m> command was broken on modules that defined constants
850 C<crypt> and string complement could return tainted values for untainted
851 arguments [RT #59998].
855 The C<-i>I<.suffix> command-line switch now recreates the file using
856 restricted permissions, before changing its mode to match the original
857 file. This eliminates a potential race condition [RT #60904].
861 On some Unix systems, the value in C<$?> would not have the top bit set
862 (C<$? & 128>) even if the child core dumped.
866 Under some circumstances, C<$^R> could incorrectly become undefined
871 In the XS API, various hash functions, when passed a pre-computed hash where
872 the key is UTF-8, might result in an incorrect lookup.
876 XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
881 C<< $object-E<gt>isa('Foo') >> would report false if the package C<Foo> didn't
882 exist, even if the object's C<@ISA> contained C<Foo>.
886 Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
887 C<@ISA>, have been found and fixed.
891 Bitwise operations on references could crash the interpreter, e.g.
892 C<$x=\$y; $x |= "foo"> [RT #54956].
896 Patterns including alternation might be sensitive to the internal UTF-8
900 my $utf8 = chr(192); utf8::upgrade($utf8);
901 $utf8 =~ /$byte|X}/i; # failed in 5.10.0
905 Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
906 effect), double-quoted literal strings could be corrupted where a C<\xNN>,
907 C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
908 greater than 255 [RT #59908].
912 C<B::Deparse> failed to correctly deparse various constructs:
913 C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
914 C<sub foo(_)> [RT #62484].
918 Using C<setpgrp> with no arguments could corrupt the perl stack.
922 The block form of C<eval> is now specifically trappable by C<Safe> and
923 C<ops>. Previously it was erroneously treated like string C<eval>.
927 In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
928 match operator (C<~~>) [RT #63854].
932 In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
933 C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
935 ("ab" x 32768) =~ /^(ab)*$/
939 C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
943 Using C<next> or C<last> to exit a C<given> block no longer produces a
944 spurious warning like the following:
946 Exiting given via last at foo.pl line 123
950 On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than
951 C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
955 Assigning a format to a glob could corrupt the format; e.g.:
957 *bar=*foo{FORMAT}; # foo format now bad
961 Attempting to coerce a typeglob to a string or number could cause an
962 assertion failure. The correct error message is now generated,
963 C<Can't coerce GLOB to I<$type>>.
967 Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
968 has been fixed [RT #49003].
972 C<length> on a tied scalar that returned a Unicode value would not be
973 correct the first time. This has been fixed.
977 Using an array C<tie> inside in array C<tie> could SEGV. This has been
982 A race condition inside C<PerlIOStdio_close()> has been identified and
983 fixed. This used to cause various threading issues, including SEGVs.
987 In C<unpack>, the use of C<()> groups in scalar context was internally
988 placing a list on the interpreter's stack, which manifested in various
989 ways, including SEGVs. This is now fixed [RT #50256].
993 Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
994 These have all been fixed.
998 A 5.10.0 optimisation to clear the temporary stack within the implicit
999 loop of C<s///ge> has been reverted, as it turned out to be the cause of
1000 obscure bugs in seemingly unrelated parts of the interpreter [commit
1005 The line numbers for warnings inside C<elsif> are now correct.
1009 The C<..> operator now works correctly with ranges whose ends are at or
1010 close to the values of the smallest and largest integers.
1014 C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
1015 This has been fixed [RT #54828].
1019 An off-by-one error meant that C<index $str, ...> was effectively being
1020 executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
1024 Various leaks associated with named captures in regexes have been fixed
1029 A weak reference to a hash would leak. This was affecting C<DBI>
1034 Using (?|) in a regex could cause a segfault [RT #59734].
1038 Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
1042 Calling C<Perl_sv_chop()> or otherwise upgrading an SV could result in an
1043 unaligned 64-bit access on the SPARC architecture [RT #60574].
1047 In the 5.10.0 release, C<inc_version_list> would incorrectly list
1048 C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
1053 In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
1058 In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
1059 C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
1064 In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
1065 missed (method cache issue) [RT #60220,60232].
1069 In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
1070 cause a memory leak [RT #63110].
1074 C<-C> on the shebang (C<#!>) line is once more permitted if it is also
1075 specified on the command line. C<-C> on the shebang line used to be a
1076 silent no-op I<if> it was not also on the command line, so perl 5.10.0
1077 disallowed it, which broke some scripts. Now perl checks whether it is
1078 also on the command line and only dies if it is not [RT #67880].
1082 In 5.10.0, certain types of re-entrant regular expression could crash,
1083 or cause the following assertion failure [RT #60508]:
1085 Assertion rx->sublen >= (s - rx->subbeg) + i failed
1089 Previously missing files from Unicode 5.1 Character Database are now included.
1093 C<TMPDIR> is now honored when opening an anonymous temporary file
1097 =head1 New or Changed Diagnostics
1101 =item C<panic: sv_chop %s>
1103 This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1104 passed a position that is not within the scalar's string buffer. This
1105 could be caused by buggy XS code, and at this point recovery is not
1108 =item C<Can't locate package %s for the parents of %s>
1110 This warning has been removed. In general, it only got produced in
1111 conjunction with other warnings, and removing it allowed an ISA lookup
1112 optimisation to be added.
1114 =item C<v-string in use/require is non-portable>
1116 This warning has been removed.
1118 =item C<Deep recursion on subroutine "%s">
1120 It is now possible to change the depth threshold for this warning from the
1121 default of 100, by recompiling the F<perl> binary, setting the C
1122 pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1126 =head1 Changed Internals
1132 TODO: C<SVt_RV> is gone. RVs are now stored in IVs
1136 TODO: REGEXPs are first class
1140 TODO: OOK is reworked, such that an OOKed scalar is PV not PVIV
1144 The J.R.R. Tolkien quotes at the head of C source file have been checked and
1145 proper citations added, thanks to a patch from Tom Christiansen.
1149 C<Perl_vcroak()> now accepts a null first argument. In addition, a full audit
1150 was made of the "not NULL" compiler annotations, and those for several
1151 other internal functions were corrected.
1155 New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1156 have been added to formalise the temporary saving of the C<errno>
1161 The function C<Perl_sv_insert_flags> has been added to augment
1166 The function C<Perl_newSV_type(type)> has been added, equivalent to
1167 C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1171 The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1172 C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1174 Two flag bits are currently supported.
1180 This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1181 sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1182 is available for this.
1186 Call C<Perl_sv_2mortal()> on the new SV.
1190 There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1194 The function C<Perl_croak_xs_usage> has been added as a wrapper to
1199 The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1204 C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1205 temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1206 which is a pointer deference into the interpreter structure under ithreads,
1207 and a global variable otherwise.
1211 C<Perl_mg_free()> used to leave freed memory accessible via C<SvMAGIC()> on
1212 the scalar. It now updates the linked list to remove each piece of magic
1217 Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1218 eliminates a lot of hackish workarounds to cope with it not being reference
1223 C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1224 This has been fixed.
1228 The I<public> IV and NV flags are now not set if the string value has
1229 trailing "garbage". This behaviour is consistent with not setting the
1230 public IV or NV flags if the value is out of range for the type.
1234 SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1235 The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1236 that was enabled when the F<perl> binary was compiled.
1240 Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to
1246 A new debugging flag C<-DB> now dumps subroutine definitions, leaving
1247 C<-Dx> for its original purpose of dumping syntax trees.
1251 Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1252 replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1253 is clearer to those unfamiliar with the core code.
1257 A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1258 not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1259 C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1260 casting away C<const>. This allows proper compile-time auditing of
1261 C<const> correctness in the core, and helped picked up some errors (now
1266 Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1267 stack and mortalizing them.
1271 Use of the private structure C<mro_meta> has changed slightly. Nothing
1272 outside the core should be accessing this directly anyway.
1276 A new tool, F<Porting/expand-macro.pl> has been added, that allows you
1277 to view how a C preprocessor macro would be expanded when compiled.
1278 This is handy when trying to decode the macro hell that is the perl
1285 Many modules updated from CPAN incorporate new tests.
1287 Several tests that have the potential to hang forever if they fail now
1288 incorporate a "watchdog" functionality that will kill them after a timeout,
1289 which helps ensure that C<make test> and C<make test_harness> run to
1290 completion automatically. (Jerry Hedden).
1292 Some core-specific tests have been added:
1296 =item t/comp/retainedlines.t
1298 Check that the debugger can retain source lines from C<eval>.
1300 =item t/io/perlio_fail.t
1302 Check that bad layers fail.
1304 =item t/io/perlio_leaks.t
1306 Check that PerlIO layers are not leaking.
1308 =item t/io/perlio_open.t
1310 Check that certain special forms of open work.
1314 General PerlIO tests.
1318 Check that there is no unexpected interaction between the internal types
1319 C<PVBM> and C<PVGV>.
1321 =item t/mro/package_aliases.t
1323 Check that mro works properly in the presence of aliased packages.
1327 Tests for C<dbmopen> and C<dbmclose>.
1329 =item t/op/index_thr.t
1331 Tests for the interaction of C<index> and threads.
1333 =item t/op/pat_thr.t
1335 Tests for the interaction of esoteric patterns and threads.
1339 Test that C<qr> doesn't leak.
1341 =item t/op/reg_email_thr.t
1343 Tests for the interaction of regex recursion and threads.
1345 =item t/op/regexp_qr_embed_thr.t
1347 Tests for the interaction of patterns with embedded C<qr//> and threads.
1349 =item t/op/regexp_unicode_prop.t
1351 Tests for Unicode properties in regular expressions.
1353 =item t/op/regexp_unicode_prop_thr.t
1355 Tests for the interaction of Unicode properties and threads.
1357 =item t/op/reg_nc_tie.t
1359 Test the tied methods of C<Tie::Hash::NamedCapture>.
1361 =item t/op/reg_posixcc.t
1363 Check that POSIX character classes behave consistently.
1367 Check that exportable C<re> functions in F<universal.c> work.
1369 =item t/op/setpgrpstack.t
1371 Check that C<setpgrp> works.
1373 =item t/op/substr_thr.t
1375 Tests for the interaction of C<substr> and threads.
1377 =item t/op/upgrade.t
1379 Check that upgrading and assigning scalars works.
1381 =item t/uni/lex_utf8.t
1383 Check that Unicode in the lexer works.
1387 Check that Unicode and C<tie> work.
1391 =head1 Known Problems
1393 This is a list of some significant unfixed bugs, which are regressions
1394 from either 5.10.0 or 5.8.x.
1400 C<List::Util::first> misbehaves in the presence of a lexical C<$_>
1401 (typically introduced by C<my $_> or implicitly by C<given>). The variable
1402 which gets set for each iteration is the package variable C<$_>, not the
1403 lexical C<$_> [RT #67694].
1405 A similar issue may occur in other modules that provide functions which
1406 take a block as their first argument, like
1408 foo { ... $_ ...} list
1412 The C<charnames> pragma may generate a run-time error when a regex is
1413 interpolated [RT #56444]:
1415 use charnames ':full';
1416 my $r1 = qr/\N{THAI CHARACTER SARA I}/;
1417 "foo" =~ $r1; # okay
1418 "foo" =~ /$r1+/; # runtime error
1420 A workaround is to generate the character outside of the regex:
1422 my $a = "\N{THAI CHARACTER SARA I}";
1427 Some regexes may run much more slowly when run in a child thread compared
1428 with the thread the pattern was compiled into [RT #55600].
1434 The following items are now deprecated.
1440 C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
1441 intended that any use of the core version of this module will emit a
1442 warning, and that the module will eventually be removed from the core
1443 (probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
1448 The following modules will be removed from the core distribution in a future
1449 release, and should be installed from CPAN instead. Distributions on CPAN
1450 which require these should add them to their prerequisites. The core versions
1451 of these modules warnings will issue a deprecation warning.
1469 Currently support to install from CPAN without a I<force> is C<TODO> in CPAN
1470 and CPANPLUS. This will be addressed before 5.12.0 ships.
1474 C<suidperl> has been removed. It used to provide a mechanism to
1475 emulate setuid permission bits on systems that don't support it properly.
1479 Deprecate assignment to $[
1483 Remove attrs, which has been deprecated since 1999/10/02.
1487 Deprecate use of the attribute :locked on subroutines.
1491 Deprecate using "locked" with the attributes pragma.
1495 Deprecate using "unique" with the attributes pragma.
1499 warn if ++ or -- are unable to change the value because it's beyond the limit of representation
1501 This uses a new warnings category: "imprecision".
1505 Make lc/uc/lcfirst/ucfirst warn when passed undef.
1509 Show constant in "Useless use of a constant in void context"
1513 Make the new warning report undef constants as undef
1517 Add a new warning, "Prototype after '%s'"
1521 Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _
1525 Unintended interpolation of $\ in regex
1529 Make overflow warnings in gmtime/localtime only occur when warnings are on
1533 Improve mro merging error messages.
1535 They are now very similar to those produced by Algorithm::C3.
1539 Amelioration of the error message "Unrecognized character %s in column %d"
1541 Changes the error message to "Unrecognized character %s; marked by E<lt>--
1542 HERE after %sE<lt>-- HERE near column %d". This should make it a little
1543 simpler to spot and correct the suspicious character.
1547 Explicitely point to $. when it causes an uninitialized warning for ranges in scalar context
1552 Deprecated numerous Perl 4-era libraries:
1554 F<termcap.pl>, F<tainted.pl>, F<stat.pl>, F<shellwords.pl>, F<pwd.pl>,
1555 F<open3.pl>, F<open2.pl>, F<newgetopt.pl>, F<look.pl>, F<find.pl>,
1556 F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
1557 F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
1558 F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
1559 F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
1560 F<timelocal.pl> are all now deprecated. Using them will incur a warning.
1564 =head1 Acknowledgements
1566 Some of the work in this release was funded by a TPF grant funded by
1567 Dijkmat BV, The Netherlands.
1569 Steffen Mueller and David Golden in particular helped getting CPAN modules
1570 polished and synchronised with their in-core equivalents.
1572 Craig Berry was tireless in getting maint to run under VMS, no matter how
1573 many times we broke it for him.
1575 The other core committers contributed most of the changes, and applied most
1576 of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
1578 Much of the work of categorizing changes in this perldelta file was contributed
1579 by the following porters using changelogger.bestpractical.com:
1581 Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
1582 anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
1583 Mark Fowler, chorny, anonymous, tmtm
1585 Finally, thanks to Larry Wall, without whom none of this would be
1588 =head1 Reporting Bugs
1590 If you find what you think is a bug, you might check the articles
1591 recently posted to the comp.lang.perl.misc newsgroup and the perl
1592 bug database at http://rt.perl.org/perlbug/ . There may also be
1593 information at http://www.perl.org/ , the Perl Home Page.
1595 If you believe you have an unreported bug, please run the B<perlbug>
1596 program included with your release. Be sure to trim your bug down
1597 to a tiny but sufficient test case. Your bug report, along with the
1598 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1599 analysed by the Perl porting team.
1601 If the bug you are reporting has security implications, which make it
1602 inappropriate to send to a publicly archived mailing list, then please send
1603 it to perl5-security-report@perl.org. This points to a closed subscription
1604 unarchived mailing list, which includes all the core committers, who be able
1605 to help assess the impact of issues, figure out a resolution, and help
1606 co-ordinate the release of patches to mitigate or fix the problem across all
1607 platforms on which Perl is supported. Please only use this address for
1608 security issues in the Perl core, not for modules independently
1609 distributed on CPAN.
1613 The F<Changes> file for an explanation of how to view exhaustive details
1616 The F<INSTALL> file for how to build Perl.
1618 The F<README> file for general stuff.
1620 The F<Artistic> and F<Copying> files for copyright information.