From 6fa4f5e39a4e2b5d7a131bd1ed0247c1c70c25dc Mon Sep 17 00:00:00 2001 From: Aaron Crane Date: Thu, 20 Mar 2014 13:32:16 +0000 Subject: [PATCH] Update perldelta for recent core changes --- pod/perldelta.pod | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 79 insertions(+), 3 deletions(-) diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 548cb32..aba96ba 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -111,6 +111,11 @@ or CE> operator, the data is no longer copied unnecessarily. =item * +Executing a regex that contains the C<^> anchor (or its variant under the +C flag) has been made much faster in several situations. + +=item * + It is now faster to create certain sorts of lists, including array and hash slices. @@ -129,6 +134,29 @@ doesn't overload any of the dereferencing methods C<@{}>, C<%{}>, and so on. =item * +The first iteration over a large hash (using C or C) is now +faster. This is achieved by preallocating the hash's internal iterator +state, rather than lazily creating it when the hash is first iterated. (For +small hashes, the iterator is still created only when first needed. The +assumption is that small hashes are more likely to be used as objects, and +therefore never allocated. For large hashes, that's less likely to be true, +and the cost of allocating the iterator is swamped by the cost of allocating +space for the hash itself.) + +=item * + +Perl's optimiser no longer skips optimising code that follows certain +C expressions (including those with an apparent infinite loop). + +=item * + +The implementation now does a better job of avoiding meaningless work at +runtime. Internal effect-free "null" operations (created as a side-effect of +parsing Perl programs) are normally deleted during compilation. That +deletion is now applied in some situations that weren't previously handled. + +=item * + A few micro-optimisations have been applied to performance-sensitive parts of the implementation, including subroutine invocation and scope exit. @@ -234,13 +262,17 @@ XXX Changes which significantly change existing files in F go here. However, any changes to F should go in the L section. -=head3 L +=head3 L and L =over 4 =item * -XXX Description of the change here +The L documentation used to describe the hierarchy of warning +categories understood by the L pragma. That description has now +been moved to the L documentation itself, leaving L +as a stub that points to it. This change consolidates all documentation for +lexical warnings in a single place. =back @@ -329,6 +361,11 @@ build. Currently around 80 extensions can be processed directly by the F tool, meaning that 80 invocations of F and 160 invocations of F are no longer made. +=item * + +The build system now works correctly when compiling under GCC or Clang with +link-time optimization enabled (the C<-flto> option). [perl #113022] + =back =head1 Testing @@ -345,7 +382,17 @@ that they represent may be covered elsewhere. =item * -XXX +The test suite no longer fails when the user's interactive shell maintains a +C<$PWD> environment variable, but the F used for running tests +doesn't. + +=item * + +The C make target now allows tests to be run in parallel. +This target allows Perl's test suite to be run under Valgrind, which detects +certain sorts of C programming errors, though at significant cost in running +time. On suitable hardware, allowing parallel execution claws back a lot of +that additional cost. [perl #121431] =back @@ -390,6 +437,29 @@ and compilation changes or changes in portability/compatibility. However, changes within modules for platforms should generally be listed in the L section. +=head3 Linux + +=over 4 + +=item * + +The hints file now looks for C only if C itself is +also wanted. The former is never useful without the latter, and in some +circumstances, including it could actually prevent building. + +=back + +=head3 Mac OS + +=over 4 + +=item * + +The build system now honours an C setting supplied by the user running +F. + +=back + =head3 Win32 =over 4 @@ -442,6 +512,12 @@ files in F and F are best summarized in L. Static builds, as configured with C<-Uusedl> now build correctly. [perl #121291] +=item * + +Regexes with backreferences nested inside subpattern references now behave +more consistently: match variables are dynamically scoped during the +execution of the subpattern call. [perl #121299] + =back =head1 Known Problems -- 2.7.4