summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Crane <arc@cpan.org>2016-10-20 13:33:00 +0100
committerAaron Crane <arc@cpan.org>2016-10-20 13:34:53 +0100
commita6a32e9640ddebe08752e0f7357295d30420bf10 (patch)
tree6d662a96ea11d3afa0d654a81d0b5401973ff726
parent1946ca1569f5d47e6ceffab716bce3a4169646fe (diff)
downloadperl-a6a32e9640ddebe08752e0f7357295d30420bf10.tar.gz
perldelta: draft for commits up to 3cc6a05eed
-rw-r--r--pod/perldelta.pod57
1 files changed, 56 insertions, 1 deletions
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index c218051e31..cf243b531c 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -190,7 +190,11 @@ and New Warnings
=item *
-XXX L<message|perldiag/"message">
+Using the empty pattern (which re-executes the last successfully-matched
+pattern) inside a code block in another regex, as in C</(?{ s!!new! })/>, has
+always previously yielded a segfault. It now produces an error: L<Use of the
+empty pattern inside of a regex code block is forbidden|perldiag/"Use of the
+empty pattern inside of a regex code block is forbidden">.
=back
@@ -281,6 +285,14 @@ minutes. On slow systems they could otherwise take several hours, without
significantly improving our understanding of the correctness of the code
under test.
+In addition, some of those test cases have been split into more files, to
+allow them to be run in parallel on suitable systems.
+
+=item *
+
+A new internal facility allows analysing the time taken by the individual
+tests in Perl's own test suite; see F<Porting/harness-timer-report.pl>.
+
=back
=head1 Platform Support
@@ -384,12 +396,42 @@ that apply various restrictions to the UTF-8 recognized as valid.
=item *
+A new API function C<sv_setvpv_bufsize()> allows simultaneously setting the
+length and allocated size of the buffer in an C<SV>, growing the buffer if
+necessary.
+
+=item *
+
+A new API macro C<SvPVCLEAR()> sets its C<SV> argument to an empty string,
+like Perl-space C<$x = ''>, but with several optimisations.
+
+=item *
+
All parts of the internals now agree that the C<sassign> op is a C<BINOP>;
previously it was listed as a C<BASEOP> in F<regen/opcodes>, which meant
that several parts of the internals had to be special-cased to accommodate
it. This oddity's original motivation was to handle code like C<$x ||= 1>;
that is now handled in a simpler way.
+=item *
+
+Several new internal C macros have been added that take a string literal as
+arguments, alongside existing routines that take the equivalent value as two
+arguments, a character pointer and a length. The advantage of this is that
+the length of the string is calculated automatically, rather than having to
+be done manually. These routines are now used where appropriate across the
+entire codebase.
+
+=item *
+
+The code in F<gv.c> that determines whether a variable has a special meaning
+to Perl has been simplified.
+
+=item *
+
+The C<DEBUGGING>-mode output for regex compilation and execution has been
+enhanced.
+
=back
=head1 Selected Bug Fixes
@@ -418,6 +460,19 @@ Previously, a shebang line like C<#!perl -i u> could be erroneously
interpreted as requesting the C<-u> option. This has been fixed. [perl
#129336]
+=item *
+
+The regex engine was previously producing incorrect results in some rare
+situations when backtracking past a trie that matches only one thing; this
+showed up as capture buffers (C<$1>, C<$2>, etc) erroneously containing data
+from regex execution paths that weren't actually executed for the final
+match. [perl #129897]
+
+=item *
+
+Certain regexes making use of the experimental C<regex_sets> feature could
+trigger an assertion failure. This has been fixed. [perl #129322]
+
=back
=head1 Known Problems