summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSawyer X <xsawyerx@cpan.org>2017-05-10 15:58:40 +0200
committerSawyer X <xsawyerx@cpan.org>2017-05-10 15:58:40 +0200
commit92a139375e61b85e375e0406cbd46df1f887ae27 (patch)
tree3d8035db03b68878736f45cc953bffceccb13608
parent56e718982b69faf5273784c9313926cc464a87cf (diff)
downloadperl-92a139375e61b85e375e0406cbd46df1f887ae27.tar.gz
Merge perl5259delta.pod
-rw-r--r--pod/perl5260delta.pod496
1 files changed, 489 insertions, 7 deletions
diff --git a/pod/perl5260delta.pod b/pod/perl5260delta.pod
index 375e5bf347..023091b970 100644
--- a/pod/perl5260delta.pod
+++ b/pod/perl5260delta.pod
@@ -11,6 +11,15 @@ This document describes the differences between the 5.24.0 release and the
=head1 Core Enhancements
+=head2 New regular expression modifier C</xx>
+
+Specifying two C<x> characters to modify a regular expression pattern
+does everything that a single one does, but additionally TAB and SPACE
+characters within a bracketed character class are generally ignored and
+can be added to improve readability, like
+S<C</[ ^ A-Z d-f p-x ]/xx>>. Details are at
+L<perlre/E<sol>x and E<sol>xx>.
+
=head2 New Hash Function For 64-bit Builds
We have switched to a hybrid hash function to better balance
@@ -263,10 +272,34 @@ to in list context.
This makes the lvalue sub case consistent with C<(keys %hash) = ...> and
C<(keys @_) = ...>, which are also errors. [perl #128187]
+=head1 Deprecations
+
+=head2 String delimiters that aren't stand-alone graphemes are now deprecated
+
+In order for Perl to eventually allow string delimiters to be Unicode
+grapheme clusters (which look like a single character, but may be
+a sequence of several ones), we have to stop allowing a single char
+delimiter that isn't a grapheme by itself. These are unlikely to exist
+in actual code, as they would typically display as attached to the
+character in front of them.
+
=head1 Performance Enhancements
=over 4
+=item *
+
+A hash in boolean context is now sometimes faster, e.g.
+
+ if (!%h) { ... }
+
+This was already special-cased, but some cases were missed, and even the
+ones which weren't have been improved.
+
+=item *
+
+Several other ops may now also be faster in boolean context.
+
=item * New Faster Hash Function on 64 bit builds
We use a different hash function for short and long keys. This should
@@ -356,16 +389,43 @@ this matches the behaviour for non-bareword constants.
=item *
+L<attributes> has been upgraded from version 0.28 to 0.29.
+
+The deprecation message for the C<:unique> and C<:locked> attributes
+now mention they will disappear in Perl 5.28.
+
+=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<Data::Dumper> has been upgraded from version 2.162 to 2.165.
+L<B::Xref> has been upgraded from version 1.05 to 1.06.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.162 to 2.167.
The XS implementation now supports Deparse.
+This fixes a stack management bug. [perl #130487].
+
+=item *
+
+L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<diagnostics> has been upgraded from version 1.35 to 1.36.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
=item *
L<encoding> has been upgraded from version 2.17 to 2.17_01.
@@ -386,6 +446,26 @@ L<Errno> has been upgraded from version 1.26 to 1.27.
Document that using C<%!> loads Errno for you.
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<feature> has been upgraded from version 1.45 to 1.46.
+
+Fixes the Unicode Bug in the range operator.
+
+=item *
+
+L<File::Glob> has been upgraded from version 1.27 to 1.28.
+
+Issue a deprecation message for C<File::Glob::glob()>.
+
=item *
L<Filter::Simple> has been upgraded from version 0.92 to 0.93.
@@ -401,6 +481,18 @@ Internal 599-series errors now include the redirect history.
=item *
+L<I18N::LangTags> has been upgraded from version 0.41 to 0.42.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<lib> has been upgraded from version 0.63 to 0.64.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
L<Math::BigInt> has been upgraded from version 1.999726(_01) to 1.999727.
There have also been some core customizations.
@@ -420,12 +512,24 @@ Check for echo in new Net::Ping tests.
=item *
-L<overload> has been upgraded from version 1.26 to 1.27.
+L<OS2::Process> has been upgraded from version 1.11 to 1.12.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<overload> has been upgraded from version 1.26 to 1.28.
Its compilation speed has been improved slightly.
=item *
+L<perl5db.pl> has been upgraded from version 1.50 to 1.51.
+
+Ignore F</dev/tty> on non-Unix systems. [perl #113960]
+
+=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,
@@ -436,14 +540,57 @@ waiting until runtime.
=item *
+L<re> has been upgraded from version 0.33 to 0.34
+
+This adds support for the new L<C<E<47>xx>|perlre/E<sol>x and E<sol>xx>
+regular expression pattern modifier, and a change to the L<S<C<use re
+'strict'>>|re/'strict' mode> experimental feature. When S<C<re
+'strict'>> is enabled, a warning now will be generated for all
+unescaped uses of the two characters C<}> and C<]> in regular
+expression patterns (outside bracketed character classes) that are taken
+literally. This brings them more in line with the C<)> character which
+is always a metacharacter unless escaped. Being a metacharacter only
+sometimes, depending on action at a distance, can lead to silently
+having the pattern mean something quite different than was intended,
+which the S<C<re 'strict'>> mode is intended to minimize.
+
+=item *
+
+L<Storable> has been upgraded from version 2.59 to 2.61.
+
+Fixes [perl #130098].
+
+=item *
+
+L<Term::ReadLine> has been upgraded from version 1.15 to 1.16.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<Test> has been upgraded from version 1.29 to 1.30.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
L<Thread::Semaphore> has been upgraded from 2.12 to 2.13.
Added the C<down_timed> method.
=item *
-L<threads> has been upgraded from version 2.07 to 2.08. Compatibility
-with 5.8 has been restored.
+L<threads> has been upgraded from version 2.07 to 2.12.
+
+Compatibility with 5.8 has been restored.
+
+Fixes [perl #130469].
+
+=item *
+
+L<threads::shared> has been upgraded from version 1.52 to 1.54.
+
+This fixes [cpan #119529], [perl #130457]
=item *
@@ -456,14 +603,39 @@ Now uses clockid_t.
=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>.
+L<Unicode::UCD> has been upgraded from version 0.67 to 0.68.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<VMS::DCLsym> has been upgraded from version 1.07 to 1.08.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
+
+=item *
+
+L<XSLoader> has been upgraded from version 0.21 to 0.26.
+
+Fixed a security hole in which binary files could be loaded from a path
+outside of L<C<@INC>|perlvar/@INC>.
+
+It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
=back
=head1 Documentation
+=head2 New Documentation
+
+=head3 L<perldeprecation>
+
+This file documents all upcoming deprecations, and some of the deprecations
+which already have been removed. The purpose of this documentation is
+two-fold: document what will disappear, and by which version, and serve
+as a guide for people dealing with code which has features that no longer
+work after an upgrade of their perl.
+
=head2 Changes to Existing Documentation
=head3 L<perlcall>
@@ -834,6 +1006,12 @@ L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Barewor
=item *
+L<Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl v5.30|perldiag/"Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl v5.30">
+
+See L</Deprecations>
+
+=item *
+
L<Declaring references is experimental|perldiag/"Declaring references is experimental">
(S experimental::declared_refs) This warning is emitted if you use a reference
@@ -861,6 +1039,102 @@ the C<encoding> pragma, is no longer supported as of Perl 5.26.0.
=item *
+Attribute "locked" is deprecated, and will disappear in Perl 5.28
+
+=item *
+
+Attribute "unique" is deprecated, and will disappear in Perl 5.28
+
+=item *
+
+"\c%c" is more clearly written simply as "%s". This will be a fatal error
+in Perl 5.28
+
+=item *
+
+Constants from lexical variables potentially modified elsewhere are
+deprecated. This will not be allowed in Perl 5.32
+
+=item *
+
+Deprecated use of my() in false conditional. This will be a fatal error
+in Perl 5.30
+
+=item *
+
+dump() better written as CORE::dump(). dump() will no longer be available
+in Perl 5.30
+
+=item *
+
+${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28
+
+=item *
+
+File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob()
+instead.
+
+=item *
+
+%s() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30
+
+=item *
+
+$* is no longer supported. Its use will be fatal in Perl 5.30
+
+=item *
+
+$* is no longer supported. Its use will be fatal in Perl 5.30
+
+=item *
+
+Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28
+
+=item *
+
+Opening filehandle %s also as a directory. This will be a fatal
+error in Perl 5.28
+
+=item *
+
+Setting $/ to a reference to %s as a form of slurp is deprecated,
+treating as undef. This will be fatal in Perl 5.28
+
+=item *
+
+Unescaped left brace in regex is deprecated here (and will be fatal
+in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in m/%s/
+
+=item *
+
+Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
+
+=item *
+
+Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28
+
+=item *
+
+Use of code point 0x%s is deprecated; the permissible max is 0x%s.
+This will be fatal in Perl 5.28
+
+=item *
+
+Use of comma-less variable list is deprecated. Its use will be fatal
+in Perl 5.28
+
+=item *
+
+Use of inherited AUTOLOAD for non-method %s() is deprecated. This
+will be fatal in Perl 5.28
+
+=item *
+
+Use of strings with code points over 0xFF as arguments to %s operator
+is deprecated. This will be a fatal error in Perl 5.28
+
+=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().
@@ -935,6 +1209,17 @@ fixed. [perl #128182]
=head1 Utility Changes
+=head2 F<c2ph> and F<pstruct>
+
+=over 4
+
+=item *
+
+These old utilities have long since superceded by L<h2xs>, and are
+now gone from the distribution.
+
+=back
+
=head2 F<Porting/pod_lib.pl>
=over 4
@@ -949,6 +1234,16 @@ Account for possibility of DOS file endings.
=back
+=head2 F<Porting/sync-with-cpan>
+
+=over 4
+
+=item *
+
+Many improvements
+
+=back
+
=head2 F<perf/benchmarks>
=over 4
@@ -1010,6 +1305,52 @@ tests for perlbug. [perl #128020]
=item *
+The C<dtrace> build process has further changes:
+
+=over
+
+=item *
+
+If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
+built within a FreeBSD jail.
+
+=item *
+
+On systems that build a dtrace object file (FreeBSD, Solaris and
+SystemTap's dtrace emulation), copy the input objects to a separate
+directory and process them there, and use those objects in the link,
+since C<dtrace -G> also modifies these objects.
+
+=item *
+
+Add libelf to the build on FreeBSD 10.x, since dtrace adds references
+to libelf symbols.
+
+=item *
+
+Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it. A
+default build on Solaris generates probes from the unused inline
+functions, while they don't on FreeBSD, which causes C<dtrace -G> to
+fail.
+
+=back
+
+[perl #130108]
+
+=item *
+
+You can now disable perl's use of the PERL_HASH_SEED and
+PERL_PERTURB_KEYS environment variables by configuring perl with
+C<-Accflags=NO_PERL_HASH_ENV>.
+
+=item *
+
+You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment
+variable by configuring perl with
+C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
+
+=item *
+
Zero out the alignment bytes when calculating the bytes for 80-bit C<NaN>
and C<Inf> to make builds more reproducible. [perl #130133]
@@ -1196,6 +1537,50 @@ source tree. [perl #124050]
=item *
+New versions of macros like C<isALPHA_utf8> and C<toLOWER_utf8> have
+been added, each with the
+suffix C<_safe>, like C<isSPACE_utf8_safe>. These take an extra
+parameter, giving an upper limit of how far into the string it is safe
+to read. Using the old versions could cause attempts to read beyond the
+end of the input buffer if the UTF-8 is not well-formed, and their use
+now raises a deprecation warning. Details are at
+L<perlapi/Character classification>.
+
+=item *
+
+Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
+deprecation warning since Perl v5.18. They now die.
+Similarly, macros like C<toLOWER_utf8> on malformed UTF-8 now die.
+
+=item *
+
+Calling the functions C<utf8n_to_uvchr> and its derivatives, while
+passing a string length of 0 is now asserted against in DEBUGGING
+builds, and otherwise returns the Unicode REPLACEMENT CHARACTER. If
+you have nothing to decode, you shouldn't call the decode function.
+
+=item *
+
+The functions C<utf8n_to_uvchr> and its derivatives now return the
+Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong
+malformation, and that malformation is allowed by the input parameters.
+This malformation is where the UTF-8 looks valid syntactically, but
+there is a shorter sequence that yields the same code point. This has
+been forbidden since Unicode version 3.1.
+
+=item *
+
+The functions C<utf8n_to_uvchr> and its derivatives now accept an input
+flag to allow the overflow malformation. This malformation is when the
+UTF-8 may be syntactically valid, but the code point it represents is
+not capable of being represented in the word length on the platform.
+What "allowed" means in this case is that the function doesn't return an
+error, and advances the parse pointer to beyond the UTF-8 in question,
+but it returns the Unicode REPLACEMENT CHARACTER as the value of the
+code point (since the real value is not representable).
+
+=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>.
@@ -1460,6 +1845,103 @@ t/uni/overload.t: Skip hanging test on FreeBSD.
=item *
+Under C<use utf8>, the entire Perl program is now checked that the UTF-8
+is wellformed. This resolves [perl #126310].
+
+=item *
+
+The range operator C<..> on strings now handles its arguments correctly when in
+the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
+feature. The previous behaviour was sufficiently unexpected that we believe no
+correct program could have made use of it.
+
+=item *
+
+The S<split> operator did not ensure enough space was allocated for
+its return value in scalar context. It could then write a single
+pointer immediately beyond the end of the memory block allocated for
+the stack. [perl #130262]
+
+=item *
+
+Using a large code point with the C<W> pack template character with
+the current output position aligned at just the right point could
+cause a write a single zero byte immediately beyond the end of an
+allocated buffer. [perl #129149]
+
+=item *
+
+Supplying the form picture argument as part of the form argument list
+where the picture specifies modifying the argument could cause an
+access to the new freed compiled form. [perl #129125]
+
+=item *
+
+Fix a problem with sort's build-in compare, where it would not sort
+correctly with 64-bit integers, and non-long doubles. [perl #130335]
+
+=item *
+
+Fix issues with /(?{ ... E<lt>E<lt>EOF })/ that broke Method-Signatures. [perl #130398]
+
+=item *
+
+Fix a macro which caused syntax error on an EBCDIC build.
+
+=item *
+
+Prevent tests from getting hung up on 'NonStop' option. [perl #130445]
+
+=item *
+
+Fixed an assertion failure with C<chop> and C<chomp>, which
+could be triggered by C<chop(@x =~ tr/1/1/)>. [perl #130198].
+
+=item *
+
+Fixed a comment skipping error under C</x>; it could stop skipping a
+byte early, which could be in the middle of a UTF-8 character.
+[perl #130495].
+
+=item *
+
+F<perldb> now ignores F</dev/tty> on non-Unix systems. [perl #113960];
+
+=item *
+
+Fix assertion failure for C<{}-E<gt>$x> when C<$x> isn't defined. [perl #130496].
+
+=item *
+
+DragonFly BSD now has support for setproctitle(). [perl #130068].
+
+=item *
+
+Fix an assertion error which could be triggered when lookahead string
+in patterns exceeded a minimum length. [perl #130522].
+
+=item *
+
+Only warn once per literal about a misplaced C<_>. [perl #70878].
+
+=item *
+
+Ensure range-start is set after error in C<tr///>. [perl #129342].
+
+=item *
+
+Don't read past start of string for unmatched backref; otherwise,
+we may have heap buffer overflow. [perl #129377].
+
+=item *
+
+Properly recognize mathematical digit ranges starting at U+1D7E.
+C<use re 'strict'> is supposed to warn if you use a range whose start
+and end digit aren't from the same group of 10. It didn't do that
+for five groups of mathematical digits starting at U+1D7E.
+
+=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]