perl5214delta man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

PERL5214DELTA(1)       Perl Programmers Reference Guide	      PERL5214DELTA(1)

NAME
       perl5214delta - what is new for perl v5.21.4

DESCRIPTION
       This document describes differences between the 5.21.3 release and the
       5.21.4 release.

       If you are upgrading from an earlier release such as 5.21.2, first read
       perl5213delta, which describes differences between 5.21.2 and 5.21.3.

Core Enhancements
   Infinity and NaN (not-a-number) handling improved
       Floating point values are able to hold the special values infinity
       (also -infinity), and NaN (not-a-number).  Now we more robustly
       recognize and propagate the value in computations, and on output
       normalize them to "Inf" and "NaN".

       See also the POSIX enhancements.

Security
   Perl is now compiled with -fstack-protector-strong if available
       Perl has been compiled with the anti-stack-smashing option
       "-fstack-protector" since 5.10.1.  Now Perl uses the newer variant
       called "-fstack-protector-strong", if available.

Incompatible Changes
   Changes to the "*" prototype
       The "*" character in a subroutine's prototype used to allow barewords
       to take precedence over most, but not all subroutines.  It was never
       consistent and exhibited buggy behaviour.

       Now it has been changed, so subroutines always take precedence over
       barewords, which brings it into conformity with similarly prototyped
       built-in functions:

	   sub splat(*) { ... }
	   sub foo { ... }
	   splat(foo); # now always splat(foo())
	   splat(bar); # still splat('bar') as before
	   close(foo); # close(foo())
	   close(bar); # close('bar')

Performance Enhancements
       ·   Subroutines with an empty prototype and bodies containing just
	   "undef" are now eligible for inlining.  [perl #122728]
	   <https://rt.perl.org/Ticket/Display.html?id=122728>

       ·   Subroutines in packages no longer need to carry typeglobs around
	   with them.  Declaring a subroutine will now put a simple sub
	   reference in the stash if possible, saving memory.  The typeglobs
	   still notionally exist, so accessing them will cause the subroutine
	   reference to be upgraded to a typeglob.  This optimization does not
	   currently apply to XSUBs or exported subroutines, and method calls
	   will undo it, since they cache things in typeglobs.	[perl #120441]
	   <https://rt.perl.org/Ticket/Display.html?id=120441>

Modules and Pragmata
   New Modules and Pragmata
       ·   B::Op_private provides detailed information about the flags used in
	   the "op_private" field of perl opcodes.

   Updated Modules and Pragmata
       ·   Archive::Tar has been upgraded from version 2.00 to 2.02.

	   Tests can now be run in parallel.

       ·   Attribute::Handlers has been upgraded from version 0.96 to 0.97.

	   Internal changes to account for the fact that subroutines in
	   packages no longer need to carry typeglobs around with them (see
	   under "Performance Enhancements").

       ·   attributes has been upgraded from version 0.22 to 0.23.

	   The usage of "memEQs" in the XS has been corrected.	[perl #122701]
	   <https://rt.perl.org/Ticket/Display.html?id=122701>

       ·   B has been upgraded from version 1.50 to 1.51.

	   It provides a new "B::safename" function, based on the existing
	   "B::GV->SAFENAME", that converts "\cOPEN" to "^OPEN".

       ·   B::Concise has been upgraded from version 0.992 to 0.993.

	   Internal changes to account for the fact that the defines and
	   labels for the flags in the "op_private" field of OPs are now auto-
	   generated (see under "Internal Changes").

       ·   B::Deparse has been upgraded from version 1.27 to 1.28.

	   It now deparses "our(LIST)" and typed lexical ("my Dog $spot")
	   correctly.

       ·   bignum has been upgraded from version 0.37 to 0.38.

	   An "eval BLOCK" rather than an "eval EXPR" is now used to see if we
	   can find Math::BigInt::Lite.

       ·   constant has been upgraded from version 1.31 to 1.32.

	   It now accepts fully-qualified constant names, allowing constants
	   to be defined in packages other than the caller.

       ·   CPAN::Meta::Requirements has been upgraded from version 2.126 to
	   2.128.

	   Works around limitations in version::vpp detecting v-string magic
	   and adds support for forthcoming ExtUtils::MakeMaker bootstrap
	   version.pm for Perls older than 5.10.0.

       ·   Data::Dumper has been upgraded from version 2.152 to 2.154.

	   Fixes CVE-2014-4330 by adding a configuration variable/option to
	   limit recursion when dumping deep data structures.

       ·   experimental has been upgraded from version 0.008 to 0.010.

	   Hardcodes features for Perls older than 5.15.7.

       ·   ExtUtils::CBuilder has been upgraded from version 0.280217 to
	   0.280219.

	   Fixes a regression on Android.  [perl #122675]
	   <https://rt.perl.org/Ticket/Display.html?id=122675>

       ·   ExtUtils::Install has been upgraded from version 1.68 to 2.04.

	   No changes to installed files other than version bumps.

       ·   ExtUtils::Manifest has been upgraded from version 1.65 to 1.68.

	   Fixes a bug with "maniread()"'s handling of quoted filenames and
	   improves "manifind()" to follow symlinks.  [perl #122415]
	   <https://rt.perl.org/Ticket/Display.html?id=122415>

       ·   File::Find has been upgraded from version 1.27 to 1.28.

	   "find()" and "finddepth()" will now warn if passed inappropriate or
	   misspelled options.

       ·   Getopt::Std has been upgraded from version 1.10 to 1.11.

	   Corrects a typo in the documentation.

       ·   HTTP::Tiny has been upgraded from version 0.047 to 0.049.

	   "keep_alive" is now fork-safe and thread-safe.

       ·   IO has been upgraded from version 1.33 to 1.34.

	   The XS implementation has been fixed for the sake of older Perls.

       ·   IO::Socket::IP has been upgraded from version 0.31 to 0.32.

	   Implements Timeout for "connect()".	[cpan #92075]
	   <https://rt.cpan.org/Ticket/Display.html?id=92075>

       ·   Locale::Codes has been upgraded from version 3.31 to 3.32.

	   New codes have been added.

       ·   Math::BigInt has been upgraded from version 1.9996 to 1.9997.

	   The documentation now gives test examples using Test::More rather
	   than Test.

       ·   Module::CoreList has been upgraded from version 5.021003 to
	   5.20140920.

	   Updated to cover the latest releases of Perl.

       ·   overload has been upgraded from version 1.22 to 1.23.

	   A redundant "ref $sub" check has been removed.

       ·   PathTools has been upgraded from version 3.49 to 3.50.

	   A warning from the gcc compiler is now avoided when building the
	   XS.

       ·   Pod::Perldoc has been upgraded from version 3.23 to 3.24.

	   Filehandles opened for reading or writing now have
	   ":encoding(UTF-8)" set.  [cpan #98019]
	   <https://rt.cpan.org/Ticket/Display.html?id=98019>

       ·   POSIX has been upgraded from version 1.42 to 1.43.

	   The C99 math functions and constants (for example acosh, isinf,
	   isnan, round, trunc; M_E, M_SQRT2, M_PI) have been added.

       ·   Scalar-List-Utils has been upgraded from version 1.39 to 1.41.

	   A new module, Sub::Util, has been added, containing functions
	   related to CODE refs, including "subname" (inspired by
	   Sub::Identity) and "set_subname" (copied and renamed from
	   Sub::Name).

	   The use of "GetMagic" in "List::Util::reduce()" has also been
	   fixed.  [cpan #63211]
	   <https://rt.cpan.org/Ticket/Display.html?id=63211>

       ·   Term::ReadLine has been upgraded from version 1.14 to 1.15.

	   Faster checks are now made first in some if-statements.

       ·   Test::Harness has been upgraded from version 3.32 to 3.33.

	   Various documentation fixes.

       ·   Test::Simple has been upgraded from version 1.001003 to 1.001006.

	   Various documentation fixes.

       ·   threads has been upgraded from version 1.95 to 1.96.

	   No changes to installed files other than version bumps.

       ·   Time::Piece has been upgraded from version 1.27 to 1.29.

	   When pretty printing negative Time::Seconds, the "minus" is no
	   longer lost.

       ·   version has been upgraded from version 0.9908 to 0.9909.

	   Numerous changes.  See the Changes file in the CPAN distribution
	   for details.

Documentation
   Changes to Existing Documentation
       perlfunc

       ·   Calling "delete" or "exists" on array values is now described as
	   "strongly discouraged" rather than "deprecated".

       perlpolicy

       ·   The conditions for marking an experimental feature as non-
	   experimental are now set out.

       perlrecharclass

       ·   The documentation of Bracketed Character Classes has been expanded
	   to cover the improvements in "qr/[\N{named sequence}]/" (see under
	   "Selected Bug Fixes").

       perlsyn

       ·   An ambiguity in the documentation of the Ellipsis statement has
	   been corrected.  [perl #122661]
	   <https://rt.perl.org/Ticket/Display.html?id=122661>

       perlxs

       ·   Added a discussion of locale issues in XS code.

Diagnostics
       The following additions or changes have been made to diagnostic output,
       including warnings and fatal error messages.  For the complete list of
       diagnostic messages, see perldiag.

   New Diagnostics
       New Warnings

       ·   Character in 'C' format overflow in pack

	   (W pack) You tried converting an infinity or not-a-number to an
	   unsigned character, which makes no sense.  Perl behaved as if you
	   tried to pack 0xFF.

       ·   Character in 'c' format overflow in pack

	   (W pack) You tried converting an infinity or not-a-number to a
	   signed character, which makes no sense.  Perl behaved as if you
	   tried to pack 0xFF.

       ·   Invalid number (%f) in chr

	   (W utf8) You passed an invalid number (like an infinity or not-a-
	   number) to "chr".  Those are not valid character numbers, so it
	   returned the Unicode replacement character (U+FFFD).

   Changes to Existing Diagnostics
       ·   Global symbol "%s" requires explicit package name

	   This message has had '(did you forget to declare "my %s"?)'
	   appended to it, to make it more helpful to new Perl programmers.
	   [perl #121638] <https://rt.perl.org/Ticket/Display.html?id=121638>

       ·   \N{} in character class restricted to one character in regex;
	   marked by <-- HERE in m/%s/

	   This message has had 'character class' changed to 'inverted
	   character class or as a range end-point is' to reflect improvements
	   in "qr/[\N{named sequence}]/" (see under "Selected Bug Fixes").

       ·   panic: frexp

	   This message has had ': %f' appended to it, to show what the
	   offending floating point number is.

   Diagnostic Removals
       ·   "Constant is not a FOO reference"

	   Compile-time checking of constant dereferencing (e.g.,
	   "my_constant->()") has been removed, since it was not taking
	   overloading into account.  [perl #69456]
	   <https://rt.perl.org/Ticket/Display.html?id=69456> [perl #122607]
	   <https://rt.perl.org/Ticket/Display.html?id=122607>

       ·   "Ambiguous use of -foo resolved as -&foo()"

	   There is actually no ambiguity here, and this impedes the use of
	   negated constants; e.g., "-Inf".

Configuration and Compilation
       ·   For long doubles (to get more precision and range for floating
	   point numbers) one can now use the GCC quadmath library which
	   implements the quadruple precision floating point numbers in x86
	   and ia64 platforms.	See INSTALL for details.

Testing
       ·   A new test script, op/infnan.t, has been added to test if Inf and
	   NaN are working correctly.  See "Infinity and NaN (not-a-number)
	   handling improved".

       ·   A new test script, re/rt122747.t, has been added to test that the
	   fix for perl #122747
	   <https://rt.perl.org/Ticket/Display.html?id=122747> is working.

Internal Changes
       ·   "save_re_context" no longer does anything and has been moved to
	   mathoms.c.

       ·   "cv_name" is a new API function that can be passed a CV or GV.  It
	   returns an SV containing the name of the subroutine for use in
	   diagnostics.	 [perl #116735]
	   <https://rt.perl.org/Ticket/Display.html?id=116735> [perl #120441]
	   <https://rt.perl.org/Ticket/Display.html?id=120441>

       ·   "cv_set_call_checker_flags" is a new API function that works like
	   "cv_set_call_checker", except that it allows the caller to specify
	   whether the call checker requires a full GV for reporting the
	   subroutine's name, or whether it could be passed a CV instead.
	   Whatever value is passed will be acceptable to "cv_name".
	   "cv_set_call_checker" guarantees there will be a GV, but it may
	   have to create one on the fly, which is inefficient.	 [perl
	   #116735] <https://rt.perl.org/Ticket/Display.html?id=116735>

       ·   "CvGV" (which is not part of the API) is now a more complex macro,
	   which may call a function and reify a GV.  For those cases where is
	   has been used as a boolean, "CvHASGV" has been added, which will
	   return true for CVs that notionally have GVs, but without reifying
	   the GV.  "CvGV" also returns a GV now for lexical subs.  [perl
	   #120441] <https://rt.perl.org/Ticket/Display.html?id=120441>

       ·   Added "sync_locale" in perlapi.  Changing the program's locale
	   should be avoided by XS code.  Nevertheless, certain non-Perl
	   libraries called from XS, such as "Gtk" do so.  When this happens,
	   Perl needs to be told that the locale has changed.  Use this
	   function to do so, before returning to Perl.

       ·   The defines and labels for the flags in the "op_private" field of
	   OPs are now auto-generated from data in regen/op_private.  The
	   noticeable effect of this is that some of the flag output of
	   "Concise" might differ slightly, and the flag output of "perl -Dx"
	   may differ considerably (they both use the same set of labels now).
	   Also in debugging builds, there is a new assert in "op_free()" that
	   checks that the op doesn't have any unrecognized flags set in
	   "op_private".

Selected Bug Fixes
       ·   Constant dereferencing now works correctly for typeglob constants.
	   Previously the glob was stringified and its name looked up.	Now
	   the glob itself is used.  [perl #69456]
	   <https://rt.perl.org/Ticket/Display.html?id=69456>

       ·   When parsing a funny character ($ @ % &) followed by braces, the
	   parser no longer tries to guess whether it is a block or a hash
	   constructor (causing a syntax error when it guesses the latter),
	   since it can only be a block.

       ·   "undef $reference" now frees the referent immediately, instead of
	   hanging on to it until the next statement.  [perl #122556]
	   <https://rt.perl.org/Ticket/Display.html?id=122556>

       ·   Various cases where the name of a sub is used (autoload,
	   overloading, error messages) used to crash for lexical subs, but
	   have been fixed.

       ·   Bareword lookup now tries to avoid vivifying packages if it turns
	   out the bareword is not going to be a subroutine name.

       ·   Compilation of anonymous constants (e.g., "sub () { 3 }") no longer
	   deletes any subroutine named "__ANON__" in the current package.
	   Not only was "*__ANON__{CODE}" cleared, but there was a memory
	   leak, too.  This bug goes back to Perl 5.8.0.

       ·   Stub declarations like "sub f;" and "sub f ();" no longer wipe out
	   constants of the same name declared by "use constant".  This bug
	   was introduced in Perl 5.10.0.

       ·   Under some conditions a warning raised in compilation of regular
	   expression patterns could be displayed multiple times.  This is now
	   fixed.

       ·   "qr/[\N{named sequence}]/" now works properly in many instances.
	   Some names known to "\N{...}" refer to a sequence of multiple
	   characters, instead of the usual single character.  Bracketed
	   character classes generally only match single characters, but now
	   special handling has been added so that they can match named
	   sequences, but not if the class is inverted or the sequence is
	   specified as the beginning or end of a range.  In these cases, the
	   only behavior change from before is a slight rewording of the fatal
	   error message given when this class is part of a "?[...])"
	   construct.  When the "[...]"	 stands alone, the same non-fatal
	   warning as before is raised, and only the first character in the
	   sequence is used, again just as before.

       ·   Tainted constants evaluated at compile time no longer cause
	   unrelated statements to become tainted.  [perl #122669]
	   <https://rt.perl.org/Ticket/Display.html?id=122669>

       ·   "open $$fh, ...", which vivifies a handle with a name like
	   "main::_GEN_0", was not giving the handle the right reference
	   count, so a double free could happen.

       ·   When deciding that a bareword was a method name, the parser would
	   get confused if an "our" sub with the same name existed, and look
	   up the method in the package of the "our" sub, instead of the
	   package of the invocant.

       ·   The parser no longer gets confused by "\U=" within a double-quoted
	   string.  It used to produce a syntax error, but now compiles it
	   correctly.  [perl #80368]
	   <https://rt.perl.org/Ticket/Display.html?id=80368>

       ·   It has always been the intention for the "-B" and "-T" file test
	   operators to treat UTF-8 encoded files as text.  (perlfunc has been
	   updated to say this.)  Previously, it was possible for some files
	   to be considered UTF-8 that actually weren't valid UTF-8.  This is
	   now fixed.  The operators now work on EBCDIC platforms as well.

       ·   Under some conditions warning messages raised during regular
	   expression pattern compilation were being output more than once.
	   This has now been fixed.

       ·   A regression has been fixed that was introduced in Perl 5.20.0
	   (fixed in Perl 5.20.1 as well as here) in which a UTF-8 encoded
	   regular expression pattern that contains a single ASCII lowercase
	   letter does not match its uppercase counterpart.  [perl #122655]
	   <https://rt.perl.org/Ticket/Display.html?id=122655>

       ·   Constant folding could incorrectly suppress warnings if lexical
	   warnings ("use warnings" or "no warnings") were not in effect and
	   $^W were false at compile time and true at run time.

       ·   Loading UTF8 tables during a regular expression match could cause
	   assertion failures under debugging builds if the previous match
	   used the very same regular expression.  [perl #122747]
	   <https://rt.perl.org/Ticket/Display.html?id=122747>

       ·   Thread cloning used to work incorrectly for lexical subs, possibly
	   causing crashes or double frees on exit.

       ·   Since Perl 5.14.0, deleting $SomePackage::{__ANON__} and then
	   undefining an anonymous subroutine could corrupt things internally,
	   resulting in Devel::Peek crashing or B.pm giving nonsensical data.
	   This has been fixed.

       ·   "(caller $n)[3]" now reports names of lexical subs, instead of
	   treating them as "(unknown)".

       ·   "sort subname LIST" now supports lexical subs for the comparison
	   routine.

       ·   Aliasing (e.g., via "*x = *y") could confuse list assignments that
	   mention the two names for the same variable on either side, causing
	   wrong values to be assigned.	 [perl #15667]
	   <https://rt.perl.org/Ticket/Display.html?id=15667>

       ·   Long here-doc terminators could cause a bad read on short lines of
	   input.  This has been fixed.	 It is doubtful that any crash could
	   have occurred.  This bug goes back to when here-docs were
	   introduced in Perl 3.000 twenty-five years ago.

       ·   An optimization in "split" to treat "split/^/" like "split/^/m" had
	   the unfortunate side-effect of also treating "split/\A/" like
	   "split/^/m", which it should not.  This has been fixed.  (Note,
	   however, that "split/^x/" does not behave like "split/^x/m", which
	   is also considered to be a bug and will be fixed in a future
	   version.)  [perl #122761]
	   <https://rt.perl.org/Ticket/Display.html?id=122761>

       ·   The little-known "my Class $var" syntax (see fields and attributes)
	   could get confused in the scope of "use utf8" if "Class" were a
	   constant whose value contained Latin-1 characters.

Acknowledgements
       Perl 5.21.4 represents approximately 4 weeks of development since Perl
       5.21.3 and contains approximately 29,000 lines of changes across 520
       files from 30 authors.

       Excluding auto-generated files, documentation and release tools, there
       were approximately 15,000 lines of changes to 390 .pm, .t, .c and .h
       files.

       Perl continues to flourish into its third decade thanks to a vibrant
       community of users and developers.  The following people are known to
       have contributed the improvements that became Perl 5.21.4:

       Alberto Simo~es, Alexandre (Midnite) Jousset, Andy Dougherty, Anthony
       Heading, Brian Fraser, Chris 'BinGOs' Williams, Craig A. Berry, Daniel
       Dragan, David Mitchell, Doug Bell, Father Chrysostomos, George Greer,
       H.Merijn Brand, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden,
       Karen Etheridge, Karl Williamson, Olivier Mengue, Peter Martini, Reini
       Urban, Ricardo Signes, Steffen Mueller, Steve Hay, Sullivan Beck,
       syber, Tadeusz SoXnierz, Tony Cook, Yves Orton, AEvar Arnfjoer`
       Bjarmason.

       The list above is almost certainly incomplete as it is automatically
       generated from version control history.	In particular, it does not
       include the names of the (very much appreciated) contributors who
       reported issues to the Perl bug tracker.

       Many of the changes included in this version originated in the CPAN
       modules included in Perl's core.	 We're grateful to the entire CPAN
       community for helping Perl to flourish.

       For a more complete list of all of Perl's historical contributors,
       please see the AUTHORS file in the Perl source distribution.

Reporting Bugs
       If you find what you think is a bug, you might check the articles
       recently posted to the comp.lang.perl.misc newsgroup and the perl bug
       database at https://rt.perl.org/ .  There may also be information at
       http://www.perl.org/ , the Perl Home Page.

       If you believe you have an unreported bug, please run the perlbug
       program included with your release.  Be sure to trim your bug down to a
       tiny but sufficient test case.  Your bug report, along with the output
       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
       the Perl porting team.

       If the bug you are reporting has security implications, which make it
       inappropriate to send to a publicly archived mailing list, then please
       send it to perl5-security-report@perl.org.  This points to a closed
       subscription unarchived mailing list, which includes all the core
       committers, who will be able to help assess the impact of issues,
       figure out a resolution, and help co-ordinate the release of patches to
       mitigate or fix the problem across all platforms on which Perl is
       supported.  Please only use this address for security issues in the
       Perl core, not for modules independently distributed on CPAN.

SEE ALSO
       The Changes file for an explanation of how to view exhaustive details
       on what changed.

       The INSTALL file for how to build Perl.

       The README file for general stuff.

       The Artistic and Copying files for copyright information.

perl v5.22.0			  2015-05-13		      PERL5214DELTA(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net