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<$,> flexibilty
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 lexically 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->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 This describes the new F<perlthanks> utility.
587 =head1 Changes to Existing Documentation
589 The various large F<Changes*> files (which listed every change made to perl
590 over the last 18 years) have been removed, and replaced by a small file,
591 also called F<Changes>, which just explains how that same information may
592 be extracted from the git version control system.
594 The file F<Porting/patching.pod> has been deleted, as it mainly described
595 interacting with the old Perforce-based repository, which is now obsolete.
596 Information still relevant has been moved to L<perlrepository>.
598 L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
599 generated at build time, rather than being shipped as part of the release.
605 Documented -X overloading.
609 Documented that C<when()> treats specially most of the filetest operators
613 Documented when as a syntax modifier
617 Eliminated "Old Perl threads tutorial", which describes 5005 threads.
619 F<pod/perlthrtut.pod> is the same material reworked for ithreads.
623 Correct previous documentation: v-strings are not deprecated
625 With version objects, we need them to use MODULE VERSION syntax. This
626 patch removes the deprecation note.
630 Added security contact information to L<perlsec>
634 =head1 Performance Enhancements
641 A new internal cache means that C<isa()> will often be faster.
645 The implementation of C<C3> Method Resolution Order has been optimised -
646 linearisation for classes with single inheritance is 40% faster. Performance
647 for multiple inheritance is unchanged.
651 Under C<use locale>, the locale-relevant information is now cached on
652 read-only values, such as the list returned by C<keys %hash>. This makes
653 operations such as C<sort keys %hash> in the scope of C<use locale> much
658 Empty C<DESTROY> methods are no longer called.
662 Faster C<Perl_sv_utf8_upgrade()>
666 Speed up C<keys> on empty hash
670 =head1 Installation and Configuration Improvements
672 =head2 F<ext/> reorganisation
674 The layout of directories in F<ext> has been revised. Specifically, all
675 extensions are now flat, and at the top level, with C</> in pathnames
676 replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
677 etc. The names of the extensions as specified to F<Configure>, and as
678 reported by C<%Config::Config> under the keys C<dynamic_ext>,
679 C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
680 still use C</>. Hence this change will not have any affect once perl is
681 installed. C<Safe> has been split out from being part of C<Opcode>, and
682 C<mro> is now an extension in its own right.
684 Nearly all dual-life modules have been moved from F<lib> to F<ext>, and will
685 now appear as known C<nonxs_ext>. This will made no difference to the
686 structure of an installed perl, nor will the modules installed differ,
687 unless you run F<Configure> with options to specify an exact list of
688 extensions to build. In this case, you will rapidly become aware that you
689 need to add to your list, because various modules needed to complete the
690 build, such as C<ExtUtils::ParseXS>, have now become extensions, and
691 without them the build will fail well before it attempts to run the
694 =head2 Configuration improvements
696 If C<vendorlib> and C<vendorarch> are the same, then they are only added to
699 C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
700 perl is built with C<-Dusedevel>.
702 F<Configure> will enable use of C<-fstack-protector>, to provide protection
703 against stack-smashing attacks, if the compiler supports it.
705 F<Configure> will now determine the correct prototypes for re-entrant
706 functions, and for C<gconvert>, if you are using a C++ compiler rather
709 On Unix, if you build from a tree containing a git repository, the
710 configuration process will note the commit hash you have checked out, for
711 display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
712 are automatically added to the list of local patches displayed by
715 =head2 Compilation improvements
717 As part of the flattening of F<ext>, all extensions on all platforms are
718 built by F<make_ext.pl>. This replaces the Unix-specific
719 F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
720 F<win32/buildext.pl>.
722 =head2 Platform Specific Changes
728 Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
730 Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
731 optional package with the AIX Toolbox. Unfortunately the 64 bit version
734 Hints changes mean that AIX 4.2 should work again.
738 On Cygwin we now strip the last number from the DLL. This has been the
739 behaviour in the cygwin.com build for years. The hints files have been
744 Support for Apollo DomainOS was removed in Perl 5.11.0
748 The hints files now identify the correct threading libraries on FreeBSD 7
753 We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
754 C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
758 Patches from the Haiku maintainers have been merged in. Perl should now
763 Support for Tenon Intersystems MachTen Unix layer for MacOS Classic was
764 removed in Perl 5.11.0
768 Support for Atari MiNT was removed in Perl 5.11.0.
772 Perl should now build on MirOS BSD.
776 Hints now supports versions 5.*.
780 Various changes from Stratus have been merged in.
784 There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
788 Improved message window handling means that C<alarm> and C<kill> messages
789 will no longer be dropped under race conditions.
793 Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
794 if C<$/> was set to a numeric reference (to indicate record-style reads).
797 VMS now supports C<getgrgid>.
799 Many improvements and cleanups have been made to the VMS file name handling
802 Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
803 status in a VMS condition value for better interaction with GNV's bash
804 shell and other utilities that depend on POSIX exit values. See
805 L<perlvms/"$?"> for details.
807 C<File::Copy> now detects Unix compatibility mode on VMS.
811 =head1 Selected Bug Fixes
817 C<-I> on shebang line now adds directories in front of @INC
818 as documented, and as does C<-I> when specified on the command-line.
822 C<kill> is now fatal when called on non-numeric process identifiers.
823 Previously, an 'undef' process identifier would be interpreted as a request to
824 kill process "0", which would terminate the current process group on POSIX
825 systems. Since process identifiers are always integers, killing a non-numeric
826 process is now fatal.
830 5.10.0 inadvertently disabled an optimisation, which caused a measurable
831 performance drop in list assignment, such as is often used to assign
832 function parameters from C<@_>. The optimisation has been re-instated, and
833 the performance regression fixed.
837 Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
841 Some potential coredumps in PerlIO fixed [RT #57322,54828].
845 The debugger now works with lvalue subroutines.
849 The debugger's C<m> command was broken on modules that defined constants
854 C<crypt> and string complement could return tainted values for untainted
855 arguments [RT #59998].
859 The C<-i>I<.suffix> command-line switch now recreates the file using
860 restricted permissions, before changing its mode to match the original
861 file. This eliminates a potential race condition [RT #60904].
865 On some UNIX systems, the value in C<$?> would not have the top bit set
866 (C<$? & 128>) even if the child core dumped.
870 Under some circumstances, C<$^R> could incorrectly become undefined
875 In the XS API, various hash functions, when passed a pre-computed hash where
876 the key is UTF-8, might result in an incorrect lookup.
880 XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
885 C<< $object->isa('Foo') >> would report false if the package C<Foo> didn't
886 exist, even if the object's C<@ISA> contained C<Foo>.
890 Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
891 C<@ISA>, have been found and fixed.
895 Bitwise operations on references could crash the interpreter, e.g.
896 C<$x=\$y; $x |= "foo"> [RT #54956].
900 Patterns including alternation might be sensitive to the internal UTF-8
904 my $utf8 = chr(192); utf8::upgrade($utf8);
905 $utf8 =~ /$byte|X}/i; # failed in 5.10.0
909 Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
910 effect), double-quoted literal strings could be corrupted where a C<\xNN>,
911 C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
912 greater than 255 [RT #59908].
916 C<B::Deparse> failed to correctly deparse various constructs:
917 C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
918 C<sub foo(_)> [RT #62484].
922 Using C<setpgrp> with no arguments could corrupt the perl stack.
926 The block form of C<eval> is now specifically trappable by C<Safe> and
927 C<ops>. Previously it was erroneously treated like string C<eval>.
931 In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
932 match operator (C<~~>) [RT #63854].
936 In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
937 C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
939 ("ab" x 32768) =~ /^(ab)*$/
943 C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
947 Using C<next> or C<last> to exit a C<given> block no longer produces a
948 spurious warning like the following:
950 Exiting given via last at foo.pl line 123
954 On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than
955 C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
959 Assigning a format to a glob could corrupt the format; e.g.:
961 *bar=*foo{FORMAT}; # foo format now bad
965 Attempting to coerce a typeglob to a string or number could cause an
966 assertion failure. The correct error message is now generated,
967 C<Can't coerce GLOB to I<$type>>.
971 Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
972 has been fixed [RT #49003].
976 C<length> on a tied scalar that returned a Unicode value would not be
977 correct the first time. This has been fixed.
981 Using an array C<tie> inside in array C<tie> could SEGV. This has been
986 A race condition inside C<PerlIOStdio_close()> has been identified and
987 fixed. This used to cause various threading issues, including SEGVs.
991 In C<unpack>, the use of C<()> groups in scalar context was internally
992 placing a list on the interpreter's stack, which manifested in various
993 ways, including SEGVs. This is now fixed [RT #50256].
997 Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
998 These have all been fixed.
1002 A 5.10.0 optimisation to clear the temporary stack within the implicit
1003 loop of C<s///ge> has been reverted, as it turned out to be the cause of
1004 obscure bugs in seemingly unrelated parts of the interpreter [commit
1009 The line numbers for warnings inside C<elsif> are now correct.
1013 The C<..> operator now works correctly with ranges whose ends are at or
1014 close to the values of the smallest and largest integers.
1018 C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
1019 This has been fixed [RT #54828].
1023 An off-by-one error meant that C<index $str, ...> was effectively being
1024 executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
1028 Various leaks associated with named captures in regexes have been fixed
1033 A weak reference to a hash would leak. This was affecting C<DBI>
1038 Using (?|) in a regex could cause a segfault [RT #59734].
1042 Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
1046 Calling C<Perl_sv_chop()> or otherwise upgrading an SV could result in an
1047 unaligned 64-bit access on the SPARC architecture [RT #60574].
1051 In the 5.10.0 release, C<inc_version_list> would incorrectly list
1052 C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
1057 In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
1062 In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
1063 C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
1068 In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
1069 missed (method cache issue) [RT #60220,60232].
1073 In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
1074 cause a memory leak [RT #63110].
1078 C<-C> on the shebang (C<#!>) line is once more permitted if it is also
1079 specified on the command line. C<-C> on the shebang line used to be a
1080 silent no-op I<if> it was not also on the command line, so perl 5.10.0
1081 disallowed it, which broke some scripts. Now perl checks whether it is
1082 also on the command line and only dies if it is not [RT #67880].
1086 In 5.10.0, certain types of re-entrant regular expression could crash,
1087 or cause the following assertion failure [RT #60508]:
1089 Assertion rx->sublen >= (s - rx->subbeg) + i failed
1093 Previously missing files from Unicode 5.1 Character Database are now included.
1097 C<TMPDIR> is now honored when opening an anonymous temporary file
1101 =head1 New or Changed Diagnostics
1105 =item C<panic: sv_chop %s>
1107 This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1108 passed a position that is not within the scalar's string buffer. This
1109 could be caused by buggy XS code, and at this point recovery is not
1112 =item C<Can't locate package %s for the parents of %s>
1114 This warning has been removed. In general, it only got produced in
1115 conjunction with other warnings, and removing it allowed an ISA lookup
1116 optimisation to be added.
1118 =item C<v-string in use/require is non-portable>
1120 This warning has been removed.
1122 =item C<Deep recursion on subroutine "%s">
1124 It is now possible to change the depth threshold for this warning from the
1125 default of 100, by recompiling the F<perl> binary, setting the C
1126 pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1130 =head1 Changed Internals
1136 TODO: C<SVt_RV> is gone. RVs are now stored in IVs
1140 TODO: REGEXPs are first class
1144 TODO: OOK is reworked, such that an OOKed scalar is PV not PVIV
1148 The J.R.R. Tolkien quotes at the head of C source file have been checked and
1149 proper citations added, thanks to a patch from Tom Christiansen.
1153 C<Perl_vcroak()> now accepts a null first argument. In addition, a full audit
1154 was made of the "not NULL" compiler annotations, and those for several
1155 other internal functions were corrected.
1159 New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1160 have been added to formalise the temporary saving of the C<errno>
1165 The function C<Perl_sv_insert_flags> has been added to augment
1170 The function C<Perl_newSV_type(type)> has been added, equivalent to
1171 C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1175 The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1176 C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1178 Two flag bits are currently supported.
1184 This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1185 sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1186 is available for this.
1190 Call C<Perl_sv_2mortal()> on the new SV.
1194 There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1198 The function C<Perl_croak_xs_usage> has been added as a wrapper to
1203 The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1208 C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1209 temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1210 which is a pointer deference into the interpreter structure under ithreads,
1211 and a global variable otherwise.
1215 C<Perl_mg_free()> used to leave freed memory accessible via C<SvMAGIC()> on
1216 the scalar. It now updates the linked list to remove each piece of magic
1221 Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1222 eliminates a lot of hackish workarounds to cope with it not being reference
1227 C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1228 This has been fixed.
1232 The I<public> IV and NV flags are now not set if the string value has
1233 trailing "garbage". This behaviour is consistent with not setting the
1234 public IV or NV flags if the value is out of range for the type.
1238 SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1239 The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1240 that was enabled when the F<perl> binary was compiled.
1244 Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to
1250 A new debugging flag C<-DB> now dumps subroutine definitions, leaving
1251 C<-Dx> for its original purpose of dumping syntax trees.
1255 Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1256 replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1257 is clearer to those unfamiliar with the core code.
1261 A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1262 not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1263 C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1264 casting away C<const>. This allows proper compile-time auditing of
1265 C<const> correctness in the core, and helped picked up some errors (now
1270 Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1271 stack and mortalizing them.
1275 Use of the private structure C<mro_meta> has changed slightly. Nothing
1276 outside the core should be accessing this directly anyway.
1280 A new tool, F<Porting/expand-macro.pl> has been added, that allows you
1281 to view how a C preprocessor macro would be expanded when compiled.
1282 This is handy when trying to decode the macro hell that is the perl
1289 Many modules updated from CPAN incorporate new tests.
1291 Several tests that have the potential to hang forever if they fail now
1292 incorporate a "watchdog" functionality that will kill them after a timeout,
1293 which helps ensure that C<make test> and C<make test_harness> run to
1294 completion automatically. (Jerry Hedden).
1296 Some core-specific tests have been added:
1300 =item t/comp/retainedlines.t
1302 Check that the debugger can retain source lines from C<eval>.
1304 =item t/io/perlio_fail.t
1306 Check that bad layers fail.
1308 =item t/io/perlio_leaks.t
1310 Check that PerlIO layers are not leaking.
1312 =item t/io/perlio_open.t
1314 Check that certain special forms of open work.
1318 General PerlIO tests.
1322 Check that there is no unexpected interaction between the internal types
1323 C<PVBM> and C<PVGV>.
1325 =item t/mro/package_aliases.t
1327 Check that mro works properly in the presence of aliased packages.
1331 Tests for C<dbmopen> and C<dbmclose>.
1333 =item t/op/index_thr.t
1335 Tests for the interaction of C<index> and threads.
1337 =item t/op/pat_thr.t
1339 Tests for the interaction of esoteric patterns and threads.
1343 Test that C<qr> doesn't leak.
1345 =item t/op/reg_email_thr.t
1347 Tests for the interaction of regex recursion and threads.
1349 =item t/op/regexp_qr_embed_thr.t
1351 Tests for the interaction of patterns with embedded C<qr//> and threads.
1353 =item t/op/regexp_unicode_prop.t
1355 Tests for Unicode properties in regular expressions.
1357 =item t/op/regexp_unicode_prop_thr.t
1359 Tests for the interaction of Unicode properties and threads.
1361 =item t/op/reg_nc_tie.t
1363 Test the tied methods of C<Tie::Hash::NamedCapture>.
1365 =item t/op/reg_posixcc.t
1367 Check that POSIX character classes behave consistently.
1371 Check that exportable C<re> functions in F<universal.c> work.
1373 =item t/op/setpgrpstack.t
1375 Check that C<setpgrp> works.
1377 =item t/op/substr_thr.t
1379 Tests for the interaction of C<substr> and threads.
1381 =item t/op/upgrade.t
1383 Check that upgrading and assigning scalars works.
1385 =item t/uni/lex_utf8.t
1387 Check that Unicode in the lexer works.
1391 Check that Unicode and C<tie> work.
1395 =head1 Known Problems
1397 This is a list of some significant unfixed bugs, which are regressions
1398 from either 5.10.0 or 5.8.x.
1404 C<List::Util::first> misbehaves in the presence of a lexical C<$_>
1405 (typically introduced by C<my $_> or implicitly by C<given>). The variable
1406 which gets set for each iteration is the package variable C<$_>, not the
1407 lexical C<$_> [RT #67694].
1409 A similar issue may occur in other modules that provide functions which
1410 take a block as their first argument, like
1412 foo { ... $_ ...} list
1416 The C<charnames> pragma may generate a run-time error when a regex is
1417 interpolated [RT #56444]:
1419 use charnames ':full';
1420 my $r1 = qr/\N{THAI CHARACTER SARA I}/;
1421 "foo" =~ $r1; # okay
1422 "foo" =~ /$r1+/; # runtime error
1424 A workaround is to generate the character outside of the regex:
1426 my $a = "\N{THAI CHARACTER SARA I}";
1431 Some regexes may run much more slowly when run in a child thread compared
1432 with the thread the pattern was compiled into [RT #55600].
1438 The following items are now deprecated.
1444 C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
1445 intended that any use of the core version of this module will emit a
1446 warning, and that the module will eventually be removed from the core
1447 (probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
1452 The following modules will be removed from the core distribution in a future
1453 release, and should be installed from CPAN instead. Distributions on CPAN
1454 which require these should add them to their prerequisites. The core versions
1455 of these modules warnings will issue a deprecation warning.
1473 Currently support to install from CPAN without a I<force> is C<TODO> in CPAN
1474 and CPANPLUS. This will be addressed before 5.12.0 ships.
1478 C<suidperl> has been removed. It used to provide a mechanism to
1479 emulate setuid permission bits on systems that don't support it properly.
1483 Deprecate assignment to $[
1487 Remove attrs, which has been deprecated since 1999/10/02.
1491 Deprecate use of the attribute :locked on subroutines.
1495 Deprecate using "locked" with the attributes pragma.
1499 Deprecate using "unique" with the attributes pragma.
1503 warn if ++ or -- are unable to change the value because it's beyond the limit of representation
1505 This uses a new warnings category: "imprecision".
1509 Make lc/uc/lcfirst/ucfirst warn when passed undef.
1513 Show constant in "Useless use of a constant in void context"
1517 Make the new warning report undef constants as undef
1521 Add a new warning, "Prototype after '%s'"
1525 Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _
1529 Unintented interpolation of $\ in regex
1533 Make overflow warnings in gmtime/localtime only occur when warnings are on
1537 Improve mro merging error messages.
1539 They are now very similar to those produced by Algorithm::C3.
1543 Amelioration of the error message "Unrecognized character %s in column %d"
1545 Changes the error message to "Unrecognized character %s; marked by <--
1546 HERE after %s<-- HERE near column %d". This should make it a little
1547 simpler to spot and correct the suspicious character.
1551 Explicitely point to $. when it causes an uninitialized warning for ranges in scalar context
1556 Deprecated numerous Perl 4-era libraries:
1558 F<termcap.pl>, F<tainted.pl>, F<stat.pl>, F<shellwords.pl>, F<pwd.pl>,
1559 F<open3.pl>, F<open2.pl>, F<newgetopt.pl>, F<look.pl>, F<find.pl>,
1560 F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
1561 F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
1562 F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
1563 F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
1564 F<timelocal.pl> are all now deprecated. Using them will incur a warning.
1568 =head1 Acknowledgements
1570 Some of the work in this release was funded by a TPF grant funded by
1571 Dijkmat BV, The Netherlands.
1573 Steffen Mueller and David Golden in particular helped getting CPAN modules
1574 polished and synchronised with their in-core equivalents.
1576 Craig Berry was tireless in getting maint to run under VMS, no matter how
1577 many times we broke it for him.
1579 The other core committers contributed most of the changes, and applied most
1580 of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
1582 Much of the work of categorizing changes in this perldelta file was contributed
1583 by the following porters using changelogger.bestpractical.com:
1585 Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
1586 anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
1587 Mark Fowler, chorny, anonymous, tmtm
1589 Finally, thanks to Larry Wall, without whom none of this would be
1592 =head1 Reporting Bugs
1594 If you find what you think is a bug, you might check the articles
1595 recently posted to the comp.lang.perl.misc newsgroup and the perl
1596 bug database at http://rt.perl.org/perlbug/ . There may also be
1597 information at http://www.perl.org/ , the Perl Home Page.
1599 If you believe you have an unreported bug, please run the B<perlbug>
1600 program included with your release. Be sure to trim your bug down
1601 to a tiny but sufficient test case. Your bug report, along with the
1602 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1603 analysed by the Perl porting team.
1605 If the bug you are reporting has security implications, which make it
1606 inappropriate to send to a publicly archived mailing list, then please send
1607 it to perl5-security-report@perl.org. This points to a closed subscription
1608 unarchived mailing list, which includes all the core committers, who be able
1609 to help assess the impact of issues, figure out a resolution, and help
1610 co-ordinate the release of patches to mitigate or fix the problem across all
1611 platforms on which Perl is supported. Please only use this address for
1612 security issues in the Perl core, not for modules independently
1613 distributed on CPAN.
1617 The F<Changes> file for an explanation of how to view exhaustive details
1620 The F<INSTALL> file for how to build Perl.
1622 The F<README> file for general stuff.
1624 The F<Artistic> and F<Copying> files for copyright information.