diff options
author | Sawyer X <xsawyerx@cpan.org> | 2017-05-10 14:20:38 +0200 |
---|---|---|
committer | Sawyer X <xsawyerx@cpan.org> | 2017-05-10 14:20:38 +0200 |
commit | 439a85d1606c70158e8d4b6cb67d21a786087522 (patch) | |
tree | b4787e7c1107cd6ddd491016b0f7d1f0375fe88a | |
parent | da433f509cc50915c64dbe4a927cb33ed5e00ef0 (diff) | |
download | perl-439a85d1606c70158e8d4b6cb67d21a786087522.tar.gz |
Merge perl5256delta.pod
-rw-r--r-- | pod/perl5260delta.pod | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/pod/perl5260delta.pod b/pod/perl5260delta.pod index 98a35506b8..85be673be4 100644 --- a/pod/perl5260delta.pod +++ b/pod/perl5260delta.pod @@ -186,6 +186,18 @@ C<(keys @_) = ...>, which are also errors. [perl #128187] =item * +Converting a single-digit string to a number is now substantially faster. + +=item * + +The internal op implementing the C<split> builtin has been simplified and +sped up. Firstly, it no longer requires a subsidiary internal C<pushre> op +to do its work. Secondly, code of the form C<my @x = split(...)> is now +optimised in the same way as C<@x = split(...)>, and is therefore a few +percent faster. + +=item * + The rather slow implementation for the experimental subroutine signatures feature has been made much faster; it is now comparable in speed with the old-style C<my ($a, $b, @c) = @_>. @@ -213,6 +225,12 @@ this matches the behaviour for non-bareword constants. =item * +L<B::Concise> has been upgraded from version 0.998 to 0.999. + +Its output is now more descriptive for C<op_private> flags. + +=item * + L<encoding> has been upgraded from version 2.17 to 2.17_01. This module's default mode is no longer supported as of Perl 5.25.3. It now @@ -234,6 +252,25 @@ end-of-file. [perl #107726] =item * +L<HTTP::Tiny> has been upgraded from version 0.064 to 0.070. + +Internal 599-series errors now include the redirect history. + +=item * + +L<Net::Ping> has been upgraded from version 2.44 to 2.51. + +IPv6 addresses and C<AF_INET6> sockets are now supported, along with several +other enhancements. + +=item * + +L<overload> has been upgraded from version 1.26 to 1.27. + +Its compilation speed has been improved slightly. + +=item * + L<POSIX> has been upgraded from version 1.65 to 1.69. This remedies several defects in making its symbols exportable. [perl #127821] The C<POSIX::tmpnam()> interface has been removed, @@ -255,6 +292,13 @@ with 5.8 has been restored. =item * +L<Time::HiRes> has been upgraded from version 1.9739 to 1.9740_01. + +It now builds on systems with C++11 compilers (such as G++ 6 and Clang++ +3.9). + +=item * + L<XSLoader> has been upgraded from version 0.21 to 0.22, fixing a security hole in which binary files could be loaded from a path outside of L<C<@INC>|perlvar/@INC>. @@ -456,6 +500,14 @@ been removed> above. =item * +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">. + +=item * + L<The experimental declared_refs feature is not enabled|perldiag/"The experimental declared_refs feature is not enabled"> (F) To declare references to variables, as in C<my \%x>, you must first enable @@ -552,6 +604,18 @@ the C<encoding> pragma, is no longer supported as of Perl 5.26.0. =item * +Details as to the exact problem have been added to the diagnostics that +occur when malformed UTF-8 is encountered when trying to convert to a +code point. + +=item * + +Executing C<undef $x> where C<$x> is tied or magical no longer incorrectly +blames the variable for an uninitialized-value warning encountered by the +tied/magical code. + +=item * + L<Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in m/%s/"> The word "here" has been added to the message that was raised in @@ -620,6 +684,11 @@ tests for perlbug. [perl #128020] =item * +Builds using C<USE_PAD_RESET> now work again; this configuration had +bit-rotted. + +=item * + A probe for C<gai_strerror> was added to F<Configure> that checks if the the gai_strerror() routine is available and can be used to translate error codes returned by getaddrinfo() into human @@ -695,6 +764,22 @@ The build process no longer emits an extra blank line before building each =item * +Some parts of the test suite that try to exhaustively test edge cases in the +regex implementation have been restricted to running for a maximum of five +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>. + +=item * + F<t/re/regexp_nonull.t> has been added to test that the regular expression engine can handle scalars that do not have a null byte just past the end of the string. @@ -722,6 +807,84 @@ source tree. [perl #124050] =item * +The C<PADOFFSET> type has changed from being unsigned to signed, and +several pad-related variables such as C<PL_padix> have changed from being +of type C<I32> to type C<PADOFFSET>. + +=item * + +The function C<L<perlapi/utf8n_to_uvchr>> has been changed to not +abandon searching for other malformations when the first one is +encountered. A call to it thus can generate multiple diagnostics, +instead of just one. + +=item * + +A new function, C<L<perlapi/utf8n_to_uvchr_error>>, has been added for +use by modules that need to know the details of UTF-8 malformations +beyond pass/fail. Previously, the only ways to know why a sequence was +ill-formed was to capture and parse the generated diagnostics, or to do +your own analysis. + +=item * + +Several new functions for handling Unicode have been added to the API: +C<L<perlapi/is_strict_utf8_string>>, +C<L<perlapi/is_c9strict_utf8_string>>, +C<L<perlapi/is_utf8_string_flags>>, +C<L<perlapi/is_strict_utf8_string_loc>>, +C<L<perlapi/is_strict_utf8_string_loclen>>, +C<L<perlapi/is_c9strict_utf8_string_loc>>, +C<L<perlapi/is_c9strict_utf8_string_loclen>>, +C<L<perlapi/is_utf8_string_loc_flags>>, +C<L<perlapi/is_utf8_string_loclen_flags>>, +C<L<perlapi/is_utf8_fixed_width_buf_flags>>, +C<L<perlapi/is_utf8_fixed_width_buf_loc_flags>>, +C<L<perlapi/is_utf8_fixed_width_buf_loclen_flags>>. + +These functions are all extensions of the C<is_utf8_string_*()> functions, +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. + +=item * + Several macros and functions have been added to the public API for dealing with Unicode and UTF-8-encoded strings. See L<perlapi/Unicode Support>. @@ -758,6 +921,21 @@ build option does. =head1 Platform Support +=head2 New Platforms + +=over 4 + +=item NetBSD/VAX + +Perl now compiles under NetBSD on VAX machines. However, it's not +possible for that platform to implement floating-point infinities and +NaNs compatibly with most modern systems, which implement the IEEE-754 +floating point standard. The hexadecimal floating point (C<0x...p[+-]n> +literals, C<printf %a>) is not implemented, either. +The C<make test> passes 98% of tests. + +=back + =head2 Platform-Specific Notes =over 4 @@ -808,6 +986,36 @@ the uninit CCTYPE var. Also fix else vs .ELSE in makefile.mk =item * +A sub containing a "forward" declaration with the same name (e.g., +C<sub c { sub c; }>) could sometimes crash or loop infinitely. [perl +#129090] + +=item * + +A crash in executing a regex with a floating UTF-8 substring against a +target string that also used UTF-8 has been fixed. [perl #129350] + +=item * + +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] + +=item * + Invalid assignments to a reference constructor (e.g., C<\eval=time>) could sometimes crash in addition to giving a syntax error. [perl #125679] |