The symbol 'main' is multiply defined because Perl 5's `Configure`
script erroneously appends `try.c`, instead of overwriting it.
This change backports an upstream patch, which will not be needed once
Perl 5 5.23.x is available.
Sent by Eric N. Vander Weele
Several bugs, including a segmentation fault, have been fixed with the bounds checking constructs (introduced in Perl 5.22) \b{gcb}, \b{sb}, \b{wb}, \B{gcb}, \B{sb}, and \B{wb}. All the \B{} ones now match an empty string; none of the \b{} ones do.
* Module::CoreList has been upgraded from version 5.20150520 to 5.20151213.
* PerlIO::scalar has been upgraded from version 0.22 to 0.23.
* POSIX has been upgraded from version 1.53 to 1.53_01.
* Storable has been upgraded from version 2.53 to 2.53_01.
* warnings has been upgraded from version 1.32 to 1.34.
* Win32 has been upgraded from version 0.51 to 0.52.
Add a Configure test to verify that including <fenv.h> doesn't produce
a build error, as it will in quite few cases on NetBSD on archs which
are not amd64, i386 or sparc in NetBSD 6.x. If the test build fails,
pretend we don't have fenv.h.
Validated that the result builds on NetBSD/evbarm 6.0 and NetBSD/i386 6.1.5.
Build fix, so no need to bump PKGREVISION.
OK by wiz@
* A safer ARGV
* CGI.pm and Module::Build disappear from core
* Hexadecimal floating point values
* Variable aliases
* Repetition in list assignment
* List pipe opens on Win32
* Various small fixes
mail.
Changes:
Incompatible Changes
There are no changes intentionally incompatible with 5.20.1. If any
exist, they are bugs, and we request that you submit a report. See
"Reporting Bugs" below. Modules and Pragmata Updated Modules and
Pragmata
attributes has been upgraded from version 0.22 to 0.23.
The usage of memEQs in the XS has been corrected. [perl #122701]
Data::Dumper has been upgraded from version 2.151 to 2.151_01.
Fixes CVE-2014-4330 by adding a configuration variable/option to
limit recursion when dumping deep data structures.
Errno has been upgraded from version 1.20_03 to 1.20_05.
Warnings when building the XS on Windows with the Visual C++
compiler are now avoided.
feature has been upgraded from version 1.36 to 1.36_01.
The postderef feature has now been documented. This feature was
actually added in Perl 5.20.0 but was accidentally omitted from
the feature documentation until now.
IO::Socket has been upgraded from version 1.37 to 1.38.
Document the limitations of the connected() method. [perl #123096]
Module::CoreList has been upgraded from version 5.020001 to
5.20150214.
The list of Perl versions covered has been updated.
PathTools has been upgraded from version 3.48 to 3.48_01.
A warning from the gcc compiler is now avoided when building the
XS.
PerlIO::scalar has been upgraded from version 0.18 to 0.18_01.
Reading from a position well past the end of the scalar now
correctly returns end of file. [perl #123443]
Seeking to a negative position still fails, but no longer leaves
the file position set to a negation location.
eof() on a PerlIO::scalar handle now properly returns true when
the file position is past the 2GB mark on 32-bit systems.
Storable has been upgraded from version 2.49 to 2.49_01.
Minor grammatical change to the documentation only.
VMS::DCLsym has been upgraded from version 1.05 to 1.05_01.
Minor formatting change to the documentation only.
VMS::Stdio has been upgraded from version 2.4 to 2.41.
Minor formatting change to the documentation only.
Documentation New Documentation perlunicook
This document, by Tom Christiansen, provides examples of handling
Unicode in Perl. Changes to Existing Documentation perlexperiment
Added reference to subroutine signatures. This feature was
actually added in Perl 5.20.0 but was accidentally omitted from
the experimental feature documentation until now.
perlpolicy
The process whereby features may graduate from experimental status
has now been formally documented.
perlsyn
An ambiguity in the documentation of the ellipsis statement has
been corrected. [perl #122661]
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. Changes to Existing
Diagnostics
Bad symbol for scalar is now documented. This error is not new,
but was not previously documented here.
Missing right brace on \N{} is now documented. This error is not
new, but was not previously documented here.
Testing
The test script re/rt122747.t has been added to verify that perl
#122747 remains fixed.
Platform Support Regained Platforms
IRIX and Tru64 platforms are working again. (Some make test failures
remain.) Selected Bug Fixes
AIX now sets the length in getsockopt correctly. [perl #120835],
[cpan #91183], [cpan #85570]
In Perl 5.20.0, $^N accidentally had the internal UTF8 flag turned
off if accessed from a code block within a regular expression,
effectively UTF8-encoding the value. This has been fixed. [perl
#123135]
Various cases where the name of a sub is used (autoload,
overloading, error messages) used to crash for lexical subs, but
have been fixed.
An assertion failure when parsing sort with debugging enabled has
been fixed. [perl #122771]
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]
Due to a mistake in the string-copying logic, copying the value of
a state variable could instead steal the value and undefine the
variable. This bug, introduced in Perl 5.20, would happen mostly
for long strings (1250 chars or more), but could happen for any
strings under builds with copy-on-write disabled. [perl #123029]
Fixed a bug that could cause perl to execute an infinite loop
during compilation. [perl #122995]
On Win32, restoring in a child pseudo-process a variable that was
local()ed in a parent pseudo-process before the fork happened
caused memory corruption and a crash in the child pseudo-process
(and therefore OS process). [perl #40565]
Tainted constants evaluated at compile time no longer cause
unrelated statements to become tainted. [perl #122669]
Calling write on a format with a ^** field could produce a panic
in sv_chop() if there were insufficient arguments or if the
variable used to fill the field was empty. [perl #123245]
In Perl 5.20.0, sort CORE::fake where 'fake' is anything other
than a keyword started chopping of the last 6 characters and
treating the result as a sort sub name. The previous behaviour of
treating "CORE::fake" as a sort sub name has been restored. [perl
#123410]
A bug in regular expression patterns that could lead to segfaults
and other crashes has been fixed. This occurred only in patterns
compiled with "/i", while taking into account the current POSIX
locale (this usually means they have to be compiled within the
scope of "use locale"), and there must be a string of at least 128
consecutive bytes to match. [perl #123539]
qr/@array(?{block})/ no longer dies with "Bizarre copy of
ARRAY". [perl #123344]
gmtime no longer crashes with not-a-number values. [perl #123495]
Certain syntax errors in substitutions, such as s/${<>{})//, would
crash, and had done so since Perl 5.10. (In some cases the crash
did not start happening until Perl 5.16.) The crash has, of
course, been fixed. [perl #123542]
A memory leak in some regular expressions, introduced in Perl
5.20.1, has been fixed. [perl #123198]
formline("@...", "a"); would crash. The FF_CHECKNL case in
pp_formline() didn't set the pointer used to mark the chop
position, which led to the FF_MORE case crashing with a
segmentation fault. This has been fixed. [perl #123538] [perl
#123622]
A possible buffer overrun and crash when parsing a literal pattern
during regular expression compilation has been fixed. [perl
#123604]
Known Problems
It is a known bug that lexical subroutines cannot be used as the
SUBNAME argument to sort. This will be fixed in a future version
of Perl.
Errata From Previous Releases
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]
Changes include performance enhancements and various bug fixes.
Perl 5.20.1 represents approximately 4 months of development since Perl 5.20.0 and contains approximately 12,000 lines of changes across 170 files from 36 authors.
Experimental Subroutine signatures
subs now take a prototype attribute
More consistent prototype parsing
rand now uses a consistent random number generator
New slice syntax
Experimental Postfix Dereferencing
Unicode 6.3 now supported
New \p{Unicode} regular expression pattern property
Better 64-bit support
use locale now works on UTF-8 locales
use locale now compiles on systems without locale ability
More locale initialization fallback options
-DL runtime option now added for tracing locale setting
-F now implies -a and -a implies -n
$a and $b warnings exemption
* B has been upgraded from 1.42 to 1.42_01, fixing bugs related to lexical subroutines.
* Digest::SHA has been upgraded from 5.84 to 5.84_01, fixing a crashing bug.
* Module::CoreList has been upgraded from 2.89 to 2.96.
* Starting in v5.18.0, a construct like /[#](?{})/x would have its # incorrectly interpreted as a comment. The code block would be skipped, unparsed. This has been corrected.
* A number of memory leaks related to the new, experimental regexp bracketed character class feature have been plugged.
* The OP allocation code now returns correctly aligned memory in all cases for struct pmop. Previously it could return memory only aligned to a 4-byte boundary, which is not correct for an ithreads build with 64 bit IVs on some 32 bit platforms. Notably, this caused the build to fail completely on sparc GNU/Linux.
* The debugger's man command been fixed. It was broken in the v5.18.0 release. The man command is aliased to the names doc and perldoc - all now work again.
* @_ is now correctly visible in the debugger, fixing a regression introduced in v5.18.0's debugger.
* Fixed a small number of regexp constructions that could either fail to match or crash perl when the string being matched against was allocated above the 2GB line on 32-bit systems.
* Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were not visible at compile time were treated as lvalues and could be assigned to, even when the subroutine was not an lvalue sub. This has been fixed.
* Perl v5.18 inadvertently introduced a bug whereby dual-vars (i.e. variables with both string and numeric values, such as $! ) where the truthness of the variable was determined by the numeric value rather than the string value.
* Perl v5.18 inadvertently introduced a bug whereby interpolating mixed up- and down-graded UTF-8 strings in a regex could result in malformed UTF-8 in the pattern: specifically if a downgraded character in the range \x80..\xff followed a UTF-8 string
* Lexical constants (my sub a() { 42 }) no longer crash when inlined.
* Parameter prototypes attached to lexical subroutines are now respected when compiling sub calls without parentheses. Previously, the prototypes were honoured only for calls with parentheses.
* Syntax errors in lexical subroutines in combination with calls to the same subroutines no longer cause crashes at compile time.
* The dtrace sub-entry probe now works with lexical subs, instead of crashing
* Undefining an inlinable lexical subroutine (my sub foo() { 42 } undef &foo) would result in a crash if warnings were turned on.
* Deep recursion warnings no longer crash lexical subroutines.
Fixes errors seen on SmartOS with PKG_DEVELOPER=yes when the fixed file was
regenerated after the fixup, and appears to have the added benefit of removing
the warnings about out of date builds during install.
18 of Perl 5.
You can find a full list of changes in the file "perldelta.pod" located in
the "pod" directory inside the release and on the web.
Perl v5.18.0 represents approximately 12 months of development since Perl
v5.16.0 and contains approximately 400,000 lines of changes across 2,100
files from 113 authors.
This release contains one major and a number of minor security fixes. It fixes a possible vulnerability to a denial-of-service attack by use of a carefully-crafted set of hash keys, a segmentation fault when reading or writing strings greater than 2^31 bytes in size, and a memory leak in Encode.xs's UTF-8 encoding implementation.
problems with linking and rpaths, such as the NetBSD manifestation of
PR 47187, and probably others; I haven't tried yet but I suspect at
least my manifestation of PR 44985 will be fixed too.
Enhancements were made to code features such as "use", which now explicitly enables feature bundles, a more consistent "eval" operator, and a revamped "substr" function. The "__SUB__" sequence now returns a reference to the current subroutine, allowing for recursive subroutines to be written more simply. Support for Unicode 6.1 was improved. Many other minor improvements and bugfixes, along with several deprecations, were made