summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSawyer X <xsawyerx@cpan.org>2017-05-10 14:59:33 +0200
committerSawyer X <xsawyerx@cpan.org>2017-05-10 14:59:33 +0200
commitb7de773230e7f686eeb4007d8b5675c8f2f27600 (patch)
treeca6d661db5e9bf3bb2147f5bcc2eac2003e9130e
parent439a85d1606c70158e8d4b6cb67d21a786087522 (diff)
downloadperl-b7de773230e7f686eeb4007d8b5675c8f2f27600.tar.gz
Merge perl5257delta.pod
-rw-r--r--pod/perl5260delta.pod499
1 files changed, 497 insertions, 2 deletions
diff --git a/pod/perl5260delta.pod b/pod/perl5260delta.pod
index 85be673be4..fc2eec781d 100644
--- a/pod/perl5260delta.pod
+++ b/pod/perl5260delta.pod
@@ -11,6 +11,79 @@ This document describes the differences between the 5.24.0 release and the
=head1 Core Enhancements
+=head2 Indented Here-documents
+
+This adds a new modifier '~' to here-docs that tells the parser
+that it should look for /^\s*$DELIM\n/ as the closing delimiter.
+
+These syntaxes are all supported:
+
+ <<~EOF;
+ <<~\EOF;
+ <<~'EOF';
+ <<~"EOF";
+ <<~`EOF`;
+ <<~ 'EOF';
+ <<~ "EOF";
+ <<~ `EOF`;
+
+The '~' modifier will strip, from each line in the here-doc, the
+same whitespace that appears before the delimiter.
+
+Newlines will be copied as is, and lines that don't include the
+proper beginning whitespace will cause perl to croak.
+
+For example:
+
+ if (1) {
+ print <<~EOF;
+ Hello there
+ EOF
+ }
+
+prints "Hello there\n" with no leading whitespace.
+
+=head2 '.' and @INC
+
+Perl now provides a way to build perl without C<.> in @INC by default. If you
+want this feature, you can build with -Ddefault_inc_excludes_dot
+
+Because the testing / make process for perl modules do not function well with
+C<.> missing from @INC, Perl now supports the environment variable
+PERL_USE_UNSAFE_INC=1 which makes Perl behave as it previously did, returning
+C<.> to @INC in all child processes.
+
+WARNING: PERL_USE_UNSAFE_INC has been provided during the perl 5.25 development
+cycle and is not guaranteed to function in perl 5.26.
+
+=head2 create a safer utf8_hop() called utf8_hop_safe()
+
+Unlike utf8_hop(), utf8_hop_safe() won't navigate before the beginning or after
+the end of the supplied buffer.
+
+=head2 Fix taint handling in list assignment
+
+commit v5.25.6-79-gb09ed99 reworked list assignment, and
+accidentally broke taint handling at the same time.
+
+=head2 @{^CAPTURE}, %{^CAPTURE}, and %{^CAPTURE_ALL}
+
+@{^CAPTURE} exposes the capture buffers of the last match as an array. So $1 is
+${^CAPTURE}[0].
+
+%{^CAPTURE} is the equivalent to %+ (ie named captures)
+
+%{^CAPTURE_ALL} is the equivalent to %- (ie all named captures).
+
+=head2 op.c: silence compiler warning in fold_constants()
+
+ op.c: In function ‘S_fold_constants’:
+ op.c:4374:28: warning: argument ‘o’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
+ S_fold_constants(pTHX_ OP *o)
+ ^
+
+This warning has been silenced.
+
=head2 Unicode 9.0 is now supported
A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>.
@@ -186,6 +259,43 @@ C<(keys @_) = ...>, which are also errors. [perl #128187]
=item *
+Reduce cost of SvVALID().
+
+=item *
+
+C<$ref1 = $ref2> has been optimized.
+
+=item *
+
+Array and hash assignment are now faster, e.g.
+
+ (..., @a) = (...);
+ (..., %h) = (...);
+
+especially when the RHS is empty.
+
+=item *
+
+Reduce the number of odd special cases for the SvSCREAM flag.
+
+=item *
+
+Avoid sv_catpvn() in do_vop() when unneeded.
+
+=item *
+
+Enhancements in Regex concat COW implementation.
+
+=item *
+
+Speed up AV and HV clearing/undeffing.
+
+=item *
+
+Better optimise array and hash assignment
+
+=item *
+
Converting a single-digit string to a number is now substantially faster.
=item *
@@ -231,6 +341,12 @@ Its output is now more descriptive for C<op_private> flags.
=item *
+L<Data::Dumper> has been upgraded from version 2.162 to 2.165.
+
+The XS implementation now supports Deparse.
+
+=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
@@ -245,6 +361,12 @@ that effect and then does nothing.
=item *
+L<Errno> has been upgraded from version 1.26 to 1.27.
+
+Document that using C<%!> loads Errno for you.
+
+=item *
+
L<Filter::Simple> has been upgraded from version 0.92 to 0.93.
It no longer treats C<no MyFilter> immediately following C<use MyFilter> as
@@ -258,11 +380,23 @@ Internal 599-series errors now include the redirect history.
=item *
-L<Net::Ping> has been upgraded from version 2.44 to 2.51.
+L<Math::BigInt> has been upgraded from version 1.999726(_01) to 1.999727.
+
+There have also been some core customizations.
+
+=item *
+
+L<Net::Ping> has been upgraded from version 2.44 to 2.55.
IPv6 addresses and C<AF_INET6> sockets are now supported, along with several
other enhancements.
+Remove sudo from 500_ping_icmp.t.
+
+Avoid stderr noise in tests
+
+Check for echo in new Net::Ping tests.
+
=item *
L<overload> has been upgraded from version 1.26 to 1.27.
@@ -292,11 +426,13 @@ with 5.8 has been restored.
=item *
-L<Time::HiRes> has been upgraded from version 1.9739 to 1.9740_01.
+L<Time::HiRes> has been upgraded from version 1.9739 to 1.9740_03.
It now builds on systems with C++11 compilers (such as G++ 6 and Clang++
3.9).
+Now uses clockid_t.
+
=item *
L<XSLoader> has been upgraded from version 0.21 to 0.22, fixing a security hole
@@ -338,6 +474,12 @@ All references to Usenet have been removed.
Updated documentation of C<scalar(%hash)>. See L</scalar(%hash) return
signature changed> above.
+=item *
+
+Use of single character variables, with the variable name a non printable
+character in the range \x80-\xFF is no longer allowed. Update the docs to
+reflect this.
+
=back
=head3 L<perldelta>
@@ -350,6 +492,18 @@ All references to Usenet have been removed.
=back
+=head3 L<perldiag>
+
+=over 4
+
+=item *
+
+Deprecations are to be marked with a D.
+C<"%s() is deprecated on :utf8 handles"> use a deprecation message, and as
+such, such be marked C<"(D deprecated)"> and not C<"(W deprecated)">.
+
+=back
+
=head3 L<perlexperiment>
=over 4
@@ -366,6 +520,11 @@ Documented new feature: See L</Declaring a reference to a variable> above.
=item *
+Defined on aggregates is no longer allowed. Perlfunc was still reporting it as
+deprecated, and that it will be deleted in the future.
+
+=item *
+
Clarified documentation of L<C<seek()>|perlfunc/seek>,
L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek>.
L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607>
@@ -376,6 +535,26 @@ Removed obsolete documentation of L<C<study()>|perlfunc/study>.
=back
+=head3 L<perlguts>
+
+=over 4
+
+=item *
+
+add pTHX_ to magic method examples.
+
+=back
+
+=head3 L<perlhack>
+
+=over 4
+
+=item *
+
+Document Tab VS Space.
+
+=back
+
=head3 L<perlinterp>
=over 4
@@ -395,6 +574,11 @@ hunt around in the parser for how a given operator is handled.
Document NUL collation handling.
+=item *
+
+Some locales aren't compatible with Perl. Note the potential bad
+consequences of using them.
+
=back
=head3 L<perlmodinstall>
@@ -431,6 +615,54 @@ All references to Usenet have been removed.
=back
+=head3 L<perlobj>
+
+=over 4
+
+=item *
+
+Added a section on calling methods using their fully qualified names.
+
+=item *
+
+Do not discourage manual @ISA.
+
+=back
+
+=head3 L<perlootut>
+
+=over 4
+
+=item *
+
+Tidy the document.
+
+=item *
+
+Mention Moo more.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+Clarify behavior single quote regexps.
+
+=back
+
+=head3 L<perlre>
+
+=over 4
+
+=item *
+
+Several minor enhancements to the documentation.
+
+=back
+
=head3 L<perlsec>
=over 4
@@ -488,6 +720,10 @@ regular expressions, and Perl compatibility with what it says.
Removed obsolete documentation of C<${^ENCODING}>. See L</${^ENCODING} has
been removed> above.
+=item *
+
+Document @ISA. Was documented other places, not not in perlvar.
+
=back
=head1 Diagnostics
@@ -604,6 +840,21 @@ the C<encoding> pragma, is no longer supported as of Perl 5.26.0.
=item *
+Improve error for missing tie() package/method. This brings the error messages
+in line with the ones used for normal method calls, despite not using
+call_method().
+
+=item *
+
+Make the sysread()/syswrite/() etc :utf8 handle warnings default. These
+warnings were under 'deprecated' previously.
+
+=item *
+
+'do' errors now refer to 'do' (not 'require').
+
+=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.
@@ -663,6 +914,60 @@ fixed. [perl #128182]
=head1 Utility Changes
+=head2 F<Porting/pod_lib.pl>
+
+=over 4
+
+=item *
+
+Removed spurious executable bit.
+
+=item *
+
+Account for possibility of DOS file endings.
+
+=back
+
+=head2 F<perf/benchmarks>
+
+=over 4
+
+=item *
+
+Tidy file, rename some symbols.
+
+=back
+
+=head2 F<Porting/checkAUTHORS.pl>
+
+=over 4
+
+=item *
+
+Replace obscure character range with \w.
+
+=back
+
+=head2 F<t/porting/regen.t>
+
+=over 4
+
+=item *
+
+try to be more helpful when tests fail.
+
+=back
+
+=head2 F<utils/h2xs.PL>
+
+=over 4
+
+=item *
+
+Avoid infinite loop for enums.
+
+=back
+
=head2 L<perlbug>
=over 4
@@ -684,6 +989,39 @@ tests for perlbug. [perl #128020]
=item *
+Remove "Warning: perl appears in your path"
+
+This install warning is more or less obsolete, since most platforms already
+*will* have a /usr/bin/perl or similar provided by the OS.
+
+=item *
+
+Reduce verbosity of "make install.man"
+
+Previously, two progress messages were emitted for each manpage: one by
+installman itself, and one by the function in install_lib.pl that it calls to
+actually install the file. Disabling the second of those in each case saves
+over 750 lines of unhelpful output.
+
+=item *
+
+Cleanup for clang -Weverything support. [perl 129961]
+
+=item *
+
+Configure: signbit scan was assuming too much, stop assuming negative 0.
+
+=item *
+
+Various compiler warnings have been silenced.
+
+=item *
+
+Several smaller changes have been made to remove impediments to compiling under
+C++11.
+
+=item *
+
Builds using C<USE_PAD_RESET> now work again; this configuration had
bit-rotted.
@@ -764,6 +1102,14 @@ The build process no longer emits an extra blank line before building each
=item *
+F<XS-APItest/t/utf8.t>: Several small fixes and enhancements.
+
+=item *
+
+Tests for locales were erroneously using locales incompatible with Perl.
+
+=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
@@ -917,6 +1263,20 @@ and has been available optionally since perl 5.22.0.
See L<perl5220delta/"Internal Changes"> for more details of what this
build option does.
+=item *
+
+The meanings of some internal SV flags have been changed
+
+OPpRUNTIME, SVpbm_VALID, SVpbm_TAIL, SvTAIL_on, SvTAIL_off, SVrepl_EVAL,
+SvEVALED
+
+=item *
+
+Change C<hv_fetch(…, "…", …, …)> to C<hv_fetchs(…, "…", …)>
+
+The dual-life dists all use Devel::PPPort, so they can use this function even
+though it was only added in 5.10.
+
=back
=head1 Platform Support
@@ -934,12 +1294,50 @@ 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.
+=over 4
+
+=item *
+
+Test fixes and minor updates.
+
+=item *
+
+Account for lack of C<inf>, C<nan>, and C<-0.0> support.
+
+=back
+
=back
=head2 Platform-Specific Notes
=over 4
+=item Darwin
+
+don't treat -Dprefix=/usr as special, instead require an extra option
+-Ddarwin_distribution to produce the same results.
+
+=item POSIX
+
+Finish removing POSIX deprecated functions.
+
+=item OS X
+
+OS X El Capitan doesn't implement the clock_gettime() or clock_getres() APIs,
+emulate them as necessary.
+
+=item macOS
+
+Deprecated syscall(2) on macOS 10.12.
+
+=item EBCDIC
+
+Several tests have been updated to work (or be skipped) on EBCDIC platforms.
+
+=item HP-UX
+
+L<Net::Ping> UDP test is skipped on HP-UX.
+
=item Hurd
The hints for Hurd have been improved enabling malloc wrap and reporting the
@@ -964,6 +1362,17 @@ running under DCL (it's still C<|>).
Remove some VMS-specific hacks from C<showlex.t>. These were added 15 years
ago, and are no longer necessary for any VMS version now supported.
+=item *
+
+Move _pDEPTH and _aDEPTH after config.h otherwise DEBUGGING may not be defined
+yet.
+
+=item *
+
+VAXC has not been a possibility for a good long while, and the versions of the
+DEC/Compaq/HP/VSI C compiler that report themselves as "DEC" in a listing file
+are 15 years or more out-of-date and can be safely desupported.
+
=back
=item Win32
@@ -976,8 +1385,30 @@ Tweaks for Win32 VC vs GCC detection makefile code. This fixes issue that CCHOME
depends on CCTYPE, which in auto detect mode is set after CCHOME, so CCHOME uses
the uninit CCTYPE var. Also fix else vs .ELSE in makefile.mk
+=item *
+
+fp definitions have been updated.
+
=back
+=item VMS And Win32
+
+Fix some breakage, add 'undef' value for default_inc_excludes_dot in build
+scripts.
+
+=item Linux
+
+Drop support for Linux a.out Linux has used ELF for over twenty years.
+
+=item OpenBSD 6
+
+OpenBSD 6 still does not support returning pid, gid or uid with SA_SIGINFO.
+Make sure this is accounted for.
+
+=item FreeBSD
+
+t/uni/overload.t: Skip hanging test on FreeBSD.
+
=back
=head1 Selected Bug Fixes
@@ -1327,6 +1758,70 @@ other than globs. [perl #128106]
Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no
longer causes crashes. [perl #128086]
+=item *
+
+Handle SvIMMORTALs in LHS of list assign. [perl #129991]
+
+=item *
+
+[perl #130010] a5540cf breaks texinfo
+
+This involved user-defined Unicode properties.
+
+=item *
+
+Fix error message for unclosed C<\N{> in regcomp.
+
+An unclosed C<\N{> could give the wrong error message
+C<"\N{NAME} must be resolved by the lexer">.
+
+=item *
+
+List assignment in list context where the LHS contained aggregates and
+where there were not enough RHS elements, used to skip scalar lvalues.
+Previously, C<(($a,$b,@c,$d) = (1))> in list context returned C<($a)>; now
+it returns C<($a,$b,$d)>. C<(($a,$b,$c) = (1))> is unchanged: it still
+returns C<($a,$b,$c)>. This can be seen in the following:
+
+ sub inc { $_++ for @_ }
+ inc(($a,$b,@c,$d) = (10))
+
+Formerly, the values of C<($a,$b,$d)> would be left as C<(11,undef,undef)>;
+now they are C<(11,1,1)>.
+
+=item *
+
+[perl 129903]
+
+The basic problem is that code like this: /(?{ s!!! })/ can trigger infinite
+recursion on the C stack (not the normal perl stack) when the last successful
+pattern in scope is itself. Since the C stack overflows this manifests as an
+untrappable error/segfault, which then kills perl.
+
+We avoid the segfault by simply forbidding the use of the empty pattern when it
+would resolve to the currently executing pattern.
+
+=item *
+
+[perl 128997] Avoid reading beyond the end of the line buffer when there's a
+short UTF-8 character at the end.
+
+=item *
+
+[perl 129950] fix firstchar bitmap under utf8 with prefix optimisation.
+
+=item *
+
+[perl 129954] Carp/t/arg_string.t: be liberal in f/p formats.
+
+=item *
+
+[perl 129928] make do "a\0b" fail silently instead of throwing.
+
+=item *
+
+[perl 129130] make chdir allocate the stack it needs.
+
=back
=head1 Known Problems