perl5101delta - what is new for perl v5.10.1 |
overloading
pragmaconfigure_requires
in CPAN module metadata
perl5101delta - what is new for perl v5.10.1
This document describes differences between the 5.10.0 release and the 5.10.1 release.
If you are upgrading from an earlier release such as 5.8.8, first read the the perl5100delta manpage, which describes differences between 5.8.8 and 5.10.0
The handling of complex expressions by the given
/when
switch
statement has been enhanced. There are two new cases where when
now
interprets its argument as a boolean, instead of an expression to be used
in a smart match:
..
and ...
flip-flop operators are now evaluated in boolean
context, following their usual semantics; see Range Operators in the perlop manpage.
Note that, as in perl 5.10.0, when (1..10)
will not work to test
whether a given value is an integer between 1 and 10; you should use
when ([1..10])
instead (note the array reference).
However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
context ensures it can now be useful in a when()
, notably for
implementing bistable conditions, like in:
when (/^=begin/ .. /^=end/) { # do something }
when (expr1 // expr2)
, will be treated as boolean if the first
expression is boolean. (This just extends the existing rule that applies
to the regular or operator, as in when (expr1 || expr2)
.)
The next section details more changes brought to the semantics to the smart match operator, that naturally also modify the behaviour of the switch statements where smart matching is implicitly used.
The smart match operator ~~
is no longer commutative. The behaviour of
a smart match now depends primarily on the type of its right hand
argument. Moreover, its semantics have been adjusted for greater
consistency or usefulness in several cases. While the general backwards
compatibility is maintained, several changes must be noted:
%hash ~~ sub {}
and @array ~~ sub {}
now test that the subroutine
returns a true value for each key of the hash (or element of the
array), instead of passing the whole hash or array as a reference to
the subroutine.
Due to the commutativity breakage, code references are no longer
treated specially when appearing on the left of the ~~
operator,
but like any vulgar scalar.
undef ~~ %hash
is always false (since undef
can't be a key in a
hash). No implicit conversion to ""
is done (as was the case in perl
5.10.0).
$scalar ~~ @array
now always distributes the smart match across the
elements of the array. It's true if one element in @array verifies
$scalar ~~ $element
. This is a generalization of the old behaviour
that tested whether the array contained the scalar.
The full dispatch table for the smart match operator is given in Smart matching in detail in the perlsyn manpage.
According to the rule of dispatch based on the rightmost argument type,
when an object overloading ~~
appears on the right side of the
operator, the overload routine will always be called (with a 3rd argument
set to a true value, see the overload manpage.) However, when the object will
appear on the left, the overload routine will be called only when the
rightmost argument is a simple scalar. This way distributivity of smart match
across arrays is not broken, as well as the other behaviours with complex
types (coderefs, hashes, regexes). Thus, writers of overloading routines
for smart match mostly need to worry only with comparing against a scalar,
and possibly with stringification overloading; the other common cases
will be automatically handled consistently.
~~
will now refuse to work on objects that do not overload it (in order
to avoid relying on the object's underlying structure). (However, if the
object overloads the stringification or the numification operators, and
if overload fallback is active, it will be used instead, as usual.)
use feature :5.10*
have changed slightly.
See Modules and Pragmata for more information.
It is now a run-time error to use the smart match operator ~~
with an object that has no overload defined for it. (This way
~~
will not break encapsulation by matching against the
object's internal representation as a reference.)
The version control system used for the development of the perl
interpreter has been switched from Perforce to git. This is mainly an
internal issue that only affects people actively working on the perl core;
but it may have minor external visibility, for example in some of details
of the output of perl -V
. See the perlrepository manpage for more information.
The internal structure of the ext/
directory in the perl source has
been reorganised. In general, a module Foo::Bar
whose source was
stored under ext/Foo/Bar/ is now located under ext/Foo-Bar/. Also,
some modules have been moved from lib/ to ext/. This is purely a
source tarball change, and should make no difference to the compilation or
installation of perl, unless you have a very customised build process that
explicitly relies on this structure, or which hard-codes the nonxs_ext
Configure parameter. Specifically, this change does not by default
alter the location of any files in the final installation.
As part of the Test::Harness
2.x to 3.x upgrade, the experimental
Test::Harness::Straps
module has been removed.
See Updated Modules for more details.
As part of the ExtUtils::MakeMaker
upgrade, the
ExtUtils::MakeMaker::bytes
and ExtUtils::MakeMaker::vmsish
modules
have been removed from this distribution.
Module::CoreList
no longer contains the %:patchlevel
hash.
This one is actually a change introduced in 5.10.0, but it was missed
from that release's perldelta, so it is mentioned here instead.
A bugfix related to the handling of the /m
modifier and qr
resulted
in a change of behaviour between 5.8.x and 5.10.0:
# matches in 5.8.x, doesn't match in 5.10.0 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
The copy of the Unicode Character Database included in Perl 5.10.1 has been updated to 5.1.0 from 5.0.0. See http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes for the notable changes.
As of Perl 5.10.1 there is a new interface for plugging and using method resolution orders other than the default (linear depth first search). The C3 method resolution order added in 5.10.0 has been re-implemented as a plugin, without changing its Perl-space interface. See the perlmroapi manpage for more information.
overloading
pragmaThis pragma allows you to lexically disable or enable overloading for some or all operations. (Yuval Kogman)
The core distribution can now run its regression tests in parallel on
Unix-like platforms. Instead of running make test
, set TEST_JOBS
in
your environment to the number of tests to run in parallel, and run
make test_harness
. On a Bourne-like shell, this can be done as
TEST_JOBS=3 make test_harness # Run 3 tests in parallel
An environment variable is used, rather than parallel make itself, because
the TAP::Harness manpage needs to be able to schedule individual non-conflicting test
scripts itself, and there is no standard interface to make
utilities to
interact with their job schedulers.
Note that currently some test scripts may fail when run in parallel (most
notably ext/IO/t/io_dir.t
). If necessary run just the failing scripts
again sequentially and see if the failures go away.
Some support for DTrace has been added. See ``DTrace support'' in INSTALL.
configure_requires
in CPAN module metadataBoth CPAN
and CPANPLUS
now support the configure_requires
keyword
in the META.yml
metadata file included in most recent CPAN distributions.
This allows distribution authors to specify configuration prerequisites that
must be installed before running Makefile.PL or Build.PL.
See the documentation for ExtUtils::MakeMaker
or Module::Build
for more
on how to specify configure_requires
when creating a distribution for CPAN.
autodie
Fatal
module.
The bundled version is 2.06_01. Note that in this release, using a string
eval when autodie
is in effect can cause the autodie behaviour to leak
into the surrounding scope. See BUGS in the autodie manpage for more details.
Compress::Raw::Bzip2
parent
base
without the feature creep.
Parse::CPAN::Meta
attributes
attrs
base
bigint
bignum
bigrat
charnames
The Unicode NameAliases.txt database file has been added. This has the
effect of adding some extra \N
character names that formerly wouldn't
have been recognised; for example, "\N{LATIN CAPITAL LETTER GHA}"
.
constant
feature
:5.10
and :5.10.X
feature bundles has
changed slightly. The last component, if any (i.e. X
) is simply ignored.
This is predicated on the assumption that new features will not, in
general, be added to maintenance releases. So :5.10
and :5.10.X
have identical effect. This is a change to the behaviour documented for
5.10.0.
fields
lib
open
overload
overloading
overloading
pragma above.
version
Archive::Extract
Archive::Tar
Attribute::Handlers
AutoLoader
AutoSplit
B
B::Debug
B::Deparse
B::Lint
B::Xref
Benchmark
Carp
CGI
Compress::Zlib
CPAN
CPAN::FTP
has a local fix to
stop it being too verbose on download failure.
CPANPLUS
CPANPLUS::Dist::Build
Cwd
Data::Dumper
DB
DB_File
Devel::PPPort
Digest::MD5
Digest::SHA
DirHandle
Dumpvalue
DynaLoader
Encode
Errno
Exporter
ExtUtils::CBuilder
ExtUtils::Command
ExtUtils::Constant
ExtUtils::Embed
ExtUtils::Install
ExtUtils::MakeMaker
Note that ExtUtils::MakeMaker::bytes
and ExtUtils::MakeMaker::vmsish
have been removed from this distribution.
ExtUtils::Manifest
ExtUtils::ParseXS
Fatal
autodie
.
File::Basename
File::Compare
File::Copy
File::Fetch
File::Find
File::Path
File::Spec
File::stat
File::Temp
FileCache
FileHandle
Filter::Simple
Filter::Util::Call
FindBin
GDBM_File
Getopt::Long
Hash::Util::FieldHash
I18N::Collate
IO
This makes non-blocking mode work on Windows in IO::Socket::INET
[CPAN #43573].
IO::Compress::*
IO::Dir
IO::Handle
IO::Socket
IO::Zlib
IPC::Cmd
IPC::Open3
IPC::SysV
lib
List::Util
Locale::MakeText
Log::Message
Math::BigFloat
Math::BigInt
Math::BigInt::FastCalc
Math::BigRat
Math::Complex
Math::Trig
Memoize
Module::Build
Module::CoreList
%Module::CoreList::patchlevel
hash.
Module::Load
Module::Load::Conditional
Module::Loaded
Module::Pluggable
NDBM_File
Net::Ping
NEXT
Object::Accessor
OS2::REXX
Package::Constants
PerlIO
PerlIO::via
Pod::Man
Pod::Parser
Pod::Simple
Pod::Text
POSIX
Safe
Scalar::Util
SelectSaver
SelfLoader
Socket
Storable
Switch
Symbol
Sys::Syslog
Term::ANSIColor
Term::ReadLine
Term::UI
Test::Harness
Note that one side-effect of the 2.x to 3.x upgrade is that the
experimental Test::Harness::Straps
module (and its supporting
Assert
, Iterator
, Point
and Results
modules) have been
removed. If you still need this, then they are available in the
(unmaintained) Test-Harness-Straps
distribution on CPAN.
Test::Simple
Text::ParseWords
Text::Tabs
Text::Wrap
Thread::Queue
Thread::Semaphore
threads
threads::shared
Tie::RefHash
Tie::StdHandle
Time::HiRes
Time::Local
Time::Piece
Unicode::Normalize
Unicode::UCD
charinfo()
now works on Unified CJK code points added to later versions
of Unicode.
casefold()
has new fields returned to provide both a simpler interface
and previously missing information. The old fields are retained for
backwards compatibility. Information about Turkic-specific code points is
now returned.
The documentation has been corrected and expanded.
UNIVERSAL
Win32
Win32API::File
XSLoader
include-fixed
too, which is a recent addition to gcc's
search path.
Now handles C++ style constants (//
) properly in enums. (A patch from
Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
LVALUE
subroutines now work under the debugger.
The debugger now correctly handles proxy constant subroutines, and subroutine stubs.
The various large Changes*
files (which listed every change made to perl
over the last 18 years) have been removed, and replaced by a small file,
also called Changes
, which just explains how that same information may
be extracted from the git version control system.
The file Porting/patching.pod has been deleted, as it mainly described interacting with the old Perforce-based repository, which is now obsolete. Information still relevant has been moved to the perlrepository manpage.
perlapi, perlintern, perlmodlib and perltoc are now all generated at build time, rather than being shipped as part of the release.
isa()
will often be faster.
Under use locale
, the locale-relevant information is now cached on
read-only values, such as the list returned by keys %hash
. This makes
operations such as sort keys %hash
in the scope of use locale
much
faster.
Empty DESTROY
methods are no longer called.
The layout of directories in ext has been revised. Specifically, all
extensions are now flat, and at the top level, with /
in pathnames
replaced by -
, so that ext/Data/Dumper/ is now ext/Data-Dumper/,
etc. The names of the extensions as specified to Configure, and as
reported by %Config::Config
under the keys dynamic_ext
,
known_extensions
, nonxs_ext
and static_ext
have not changed, and
still use /
. Hence this change will not have any affect once perl is
installed. However, Attribute::Handlers
, Safe
and mro
have now
become extensions in their own right, so if you run Configure with
options to specify an exact list of extensions to build, you will need to
change it to account for this.
For 5.10.2, it is planned that many dual-life modules will have been moved from lib to ext; again this will have no effect on an installed perl, but will matter if you invoke Configure with a pre-canned list of extensions to build.
If vendorlib
and vendorarch
are the same, then they are only added to
@INC
once.
$Config{usedevel}
and the C-level PERL_USE_DEVEL
are now defined if
perl is built with -Dusedevel
.
Configure will enable use of -fstack-protector
, to provide protection
against stack-smashing attacks, if the compiler supports it.
Configure will now determine the correct prototypes for re-entrant
functions, and for gconvert
, if you are using a C++ compiler rather
than a C compiler.
On Unix, if you build from a tree containing a git repository, the
configuration process will note the commit hash you have checked out, for
display in the output of perl -v
and perl -V
. Unpushed local commits
are automatically added to the list of local patches displayed by
perl -V
.
As part of the flattening of ext, all extensions on all platforms are built by make_ext.pl. This replaces the Unix-specific ext/util/make_ext, VMS-specific make_ext.com and Win32-specific win32/buildext.pl.
flock()
was used from libbsd.
Removed libgdbm for AIX 5L and 6.1. The libgdbm is delivered as an optional package with the AIX Toolbox. Unfortunately the 64 bit version is broken.
Hints changes mean that AIX 4.2 should work again.
cc -E -
unfortunately goes into K&R mode, but cc -E file.c
doesn't.
alarm
and kill
messages
will no longer be dropped under race conditions.
PerlIO::scalar
used to fail
if $/
was set to a numeric reference (to indicate record-style reads).
This is now fixed.
VMS now supports getgrgid
.
Many improvements and cleanups have been made to the VMS file name handling and conversion code.
Enabling the PERL_VMS_POSIX_EXIT
logical name now encodes a POSIX exit
status in a VMS condition value for better interaction with GNV's bash
shell and other utilities that depend on POSIX exit values. See
$? in the perlvms manpage for details.
@_
. The optimisation has been re-instated, and
the performance regression fixed.
Fixed memory leak on while (1) { map 1, 1 }
[RT #53038].
Some potential coredumps in PerlIO fixed [RT #57322,54828].
The debugger now works with lvalue subroutines.
The debugger's m
command was broken on modules that defined constants
[RT #61222].
crypt()
and string complement could return tainted values for untainted
arguments [RT #59998].
The -i.suffix
command-line switch now recreates the file using
restricted permissions, before changing its mode to match the original
file. This eliminates a potential race condition [RT #60904].
On some Unix systems, the value in $?
would not have the top bit set
($? & 128
) even if the child core dumped.
Under some circumstances, $^R could incorrectly become undefined
[RT #57042].
(XS) In various hash functions, passing a pre-computed hash to when the
key is UTF-8 might result in an incorrect lookup.
(XS) Including XSUB.h before perl.h gave a compile-time error
[RT #57176].
$object->isa('Foo')
would report false if the package Foo
didn't
exist, even if the object's @ISA
contained Foo
.
Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
@ISA
, have been found and fixed.
Bitwise operations on references could crash the interpreter, e.g.
$x=\$y; $x |= "foo"
[RT #54956].
Patterns including alternation might be sensitive to the internal UTF-8
representation, e.g.
my $byte = chr(192); my $utf8 = chr(192); utf8::upgrade($utf8); $utf8 =~ /$byte|X}/i; # failed in 5.10.0Within UTF8-encoded Perl source files (i.e. where
use utf8
is in
effect), double-quoted literal strings could be corrupted where a \xNN
,
\0NNN
or \N{}
is followed by a literal character with ordinal value
greater than 255 [RT #59908].
B::Deparse
failed to correctly deparse various constructs:
readpipe STRING
[RT #62428], CORE::require(STRING)
[RT #62488],
sub foo(_)
[RT #62484].
Using setpgrp()
with no arguments could corrupt the perl stack.
The block form of eval
is now specifically trappable by Safe
and
ops
. Previously it was erroneously treated like string eval
.
In 5.10.0, the two characters [~
were sometimes parsed as the smart
match operator (~~
) [RT #63854].
In 5.10.0, the *
quantifier in patterns was sometimes treated as
{0,32767}
[RT #60034, #60464]. For example, this match would fail:
("ab" x 32768) =~ /^(ab)*$/
shmget
was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
Using next
or last
to exit a given
block no longer produces a
spurious warning like the following:
Exiting given via last at foo.pl line 123On Windows,
'.\foo'
and '..\foo'
were treated differently than
'./foo'
and '../foo'
by do
and require
[RT #63492].
Assigning a format to a glob could corrupt the format; e.g.:
*bar=*foo{FORMAT}; # foo format now badAttempting to coerce a typeglob to a string or number could cause an assertion failure. The correct error message is now generated,
Can't coerce GLOB to $type
.
Under use filetest 'access'
, -x
was using the wrong access mode. This
has been fixed [RT #49003].
length
on a tied scalar that returned a Unicode value would not be
correct the first time. This has been fixed.
Using an array tie
inside in array tie
could SEGV. This has been
fixed. [RT #51636]
A race condition inside PerlIOStdio_close()
has been identified and
fixed. This used to cause various threading issues, including SEGVs.
In unpack
, the use of ()
groups in scalar context was internally
placing a list on the interpreter's stack, which manifested in various
ways, including SEGVs. This is now fixed [RT #50256].
Magic was called twice in substr
, \&$x
, tie $x, $m
and chop
.
These have all been fixed.
A 5.10.0 optimisation to clear the temporary stack within the implicit
loop of s///ge
has been reverted, as it turned out to be the cause of
obscure bugs in seemingly unrelated parts of the interpreter [commit
ef0d4e17921ee3de].
The line numbers for warnings inside elsif
are now correct.
The ..
operator now works correctly with ranges whose ends are at or
close to the values of the smallest and largest integers.
binmode STDIN, ':raw'
could lead to segmentation faults on some platforms.
This has been fixed [RT #54828].
An off-by-one error meant that index $str, ...
was effectively being
executed as index "$str\0", ...
. This has been fixed [RT #53746].
Various leaks associated with named captures in regexes have been fixed
[RT #57024].
A weak reference to a hash would leak. This was affecting DBI
[RT #56908].
Using (?|) in a regex could cause a segfault [RT #59734].
Use of a UTF-8 tr//
within a closure could cause a segfault [RT #61520].
Calling sv_chop()
or otherwise upgrading an SV could result in an
unaligned 64-bit access on the SPARC architecture [RT #60574].
In the 5.10.0 release, inc_version_list
would incorrectly list
5.10.*
after 5.8.*
; this affected the @INC
search order
[RT #67628].
In 5.10.0, pack "a*", $tainted_value
returned a non-tainted value
[RT #52552].
In 5.10.0, printf
and sprintf
could produce the fatal error
panic: utf8_mg_pos_cache_update
when printing UTF-8 strings
[RT #62666].
In the 5.10.0 release, a dynamically created AUTOLOAD
method might be
missed (method cache issue) [RT #60220,60232].
In the 5.10.0 release, a combination of use feature
and //ee
could
cause a memory leak [RT #63110].
-C
on the shebang (#!
) line is once more permitted if it is also
specified on the command line. -C
on the shebang line used to be a
silent no-op if it was not also on the command line, so perl 5.10.0
disallowed it, which broke some scripts. Now perl checks whether it is
also on the command line and only dies if it is not [RT #67880].
In 5.10.0, certain types of re-entrant regular expression could crash,
or cause the following assertion failure [RT #60508]:
Assertion rx->sublen >= (s - rx->subbeg) + i failed
panic: sv_chop %s
Perl_sv_chop()
was
passed a position that is not within the scalar's string buffer. This
could be caused by buggy XS code, and at this point recovery is not
possible.
Can't locate package %s for the parents of %s
v-string in use/require is non-portable
Deep recursion on subroutine "%s"
PERL_SUB_DEPTH_WARN
to the desired value.
vcroak()
now accepts a null first argument. In addition, a full audit
was made of the ``not NULL'' compiler annotations, and those for several
other internal functions were corrected.
New macros dSAVEDERRNO
, dSAVE_ERRNO
, SAVE_ERRNO
, RESTORE_ERRNO
have been added to formalise the temporary saving of the errno
variable.
The function Perl_sv_insert_flags
has been added to augment
Perl_sv_insert
.
The function Perl_newSV_type(type)
has been added, equivalent to
Perl_newSV()
followed by Perl_sv_upgrade(type)
.
The function Perl_newSVpvn_flags()
has been added, equivalent to
Perl_newSVpvn()
and then performing the action relevant to the flag.
Two flag bits are currently supported.
SVf_UTF8
SvUTF8_on()
for you. (Note that this does not convert an
sequence of ISO 8859-1 characters to UTF-8). A wrapper, newSVpvn_utf8()
is available for this.
SVs_TEMP
sv_2mortal()
on the new SV.
There is also a wrapper that takes constant strings, newSVpvs_flags()
.
Perl_croak_xs_usage
has been added as a wrapper to
Perl_croak
.
The functions PerlIO_find_layer
and PerlIO_list_alloc
are now
exported.
PL_na
has been exterminated from the core code, replaced by local STRLEN
temporaries, or *_nolen()
calls. Either approach is faster than PL_na
,
which is a pointer deference into the interpreter structure under ithreads,
and a global variable otherwise.
Perl_mg_free()
used to leave freed memory accessible via SvMAGIC()
on
the scalar. It now updates the linked list to remove each piece of magic
as it is freed.
Under ithreads, the regex in PL_reg_curpm
is now reference counted. This
eliminates a lot of hackish workarounds to cope with it not being reference
counted.
Perl_mg_magical()
would sometimes incorrectly turn on SvRMAGICAL()
.
This has been fixed.
The public IV and NV flags are now not set if the string value has
trailing ``garbage''. This behaviour is consistent with not setting the
public IV or NV flags if the value is out of range for the type.
SV allocation tracing has been added to the diagnostics enabled by -Dm
.
The tracing can alternatively output via the PERL_MEM_LOG
mechanism, if
that was enabled when the perl binary was compiled.
Uses of Nullav
, Nullcv
, Nullhv
, Nullop
, Nullsv
etc have been
replaced by NULL
in the core code, and non-dual-life modules, as NULL
is clearer to those unfamiliar with the core code.
A macro MUTABLE_PTR(p)
has been added, which on (non-pedantic) gcc will
not cast away const
, returning a void *
. Macros MUTABLE_SV(av)
,
MUTABLE_SV(cv)
etc build on this, casting to AV *
etc without
casting away const
. This allows proper compile-time auditing of
const
correctness in the core, and helped picked up some errors (now
fixed).
Macros mPUSHs()
and mXPUSHs()
have been added, for pushing SVs on the
stack and mortalizing them.
Use of the private structure mro_meta
has changed slightly. Nothing
outside the core should be accessing this directly anyway.
A new tool, Porting/expand-macro.pl
has been added, that allows you
to view how a C preprocessor macro would be expanded when compiled.
This is handy when trying to decode the macro hell that is the perl
guts.
Many modules updated from CPAN incorporate new tests.
Several tests that have the potential to hang forever if they fail now
incorporate a ``watchdog'' functionality that will kill them after a timeout,
which helps ensure that make test
and make test_harness
run to
completion automatically. (Jerry Hedden).
Some core-specific tests have been added:
eval
.
PVBM
and PVGV
.
dbmopen
and dbmclose
.
index
and threads.
qr
doesn't leak.
qr//
and threads.
Tie::Hash::NamedCapture
.
re
functions in universal.c work.
setpgrp
works.
substr
and threads.
tie
work.
This is a list of some significant unfixed bugs, which are regressions from either 5.10.0 or 5.8.x.
List::Util::first
misbehaves in the presence of a lexical $_
(typically introduced by my $_
or implicitly by given
). The variable
which gets set for each iteration is the package variable $_
, not the
lexical $_
[RT #67694].
A similar issue may occur in other modules that provide functions which take a block as their first argument, like
foo { ... $_ ...} listThe
charnames
pragma may generate a run-time error when a regex is
interpolated [RT #56444]:
use charnames ':full'; my $r1 = qr/\N{THAI CHARACTER SARA I}/; "foo" =~ $r1; # okay "foo" =~ /$r1+/; # runtime error
A workaround is to generate the character outside of the regex:
my $a = "\N{THAI CHARACTER SARA I}"; my $r1 = qr/$a/;Some regexes may run much more slowly when run in a child thread compared with the thread the pattern was compiled into [RT #55600].
The following items are now deprecated.
Switch
is buggy and should be avoided. From perl 5.11.0 onwards, it is
intended that any use of the core version of this module will emit a
warning, and that the module will eventually be removed from the core
(probably in perl 5.14.0). See Switch statements in the perlsyn manpage for its
replacement.
suidperl
will be removed in 5.12.0. This provides a mechanism to
emulate setuid permission bits on systems that don't support it properly.
Some of the work in this release was funded by a TPF grant.
Nicholas Clark officially retired from maintenance pumpking duty at the end of 2008; however in reality he has put much effort in since then to help get 5.10.1 into a fit state to be released, including writing a considerable chunk of this perldelta.
Steffen Mueller and David Golden in particular helped getting CPAN modules polished and synchronised with their in-core equivalents.
Craig Berry was tireless in getting maint to run under VMS, no matter how many times we broke it for him.
The other core committers contributed most of the changes, and applied most of the patches sent in by the hundreds of contributors listed in AUTHORS.
(Sorry to all the people I haven't mentioned by name).
Finally, thanks to Larry Wall, without whom none of this would be necessary.
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 http://rt.perl.org/perlbug/ . 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.
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.
perl5101delta - what is new for perl v5.10.1 |