pfenwick / perl589delta

The perl589delta.pod file for the 5.8.9 release of Perl

This URL has Read+Write access

perl589delta / perl589delta.pod
100644 1835 lines (1012 sloc) 36.84 kb


NAME

perldelta - what is new for perl v5.8.9


DESCRIPTION

This document describes differences between the 5.8.8 release and the 5.8.9 release.


Incompatible Changes

There are no changes incompatible with 5.8.8.


Core Enhancements

Nicholas Clark allowed symbolic references to have embedded NULs. The new public function get_cvn_flags can be used in extensions if you have to handle them.

It's now possible to call stat and the -X filestat operators on dirhandles. When the situation is ambiguous, it favours the file handle semantics. They also treat *FILE{IO} filehandles like *FILE filehandles.

Added perlthanks which is just like perlbug but allows the user to send a note of gratitude to the authors and maintainers of Perl. [33532]

Updated Unicode definitions to 5.1.0.

The Campaign for the Elimination of strlen() has successfully eliminated many calls to strlen().

A very stubborn compiler warning in S_emulate_eaccess was killed six times.


New Platforms

Compile support added for:

  • RISC OS

    Cray XT4/Catamount


Modules and Pragmata

New Modules

  • Module::Pluggable is a simple framework to create modules that accept pluggable sub-modules. The bundled version is 3.7. [33505]

  • Module::CoreList is a hash of hashes that is keyed on perl version as indicated in $]. The bundled version is 2.12 (31561)

  • CPANPLUS is an API to the CPAN mirrors and a collection of interactive shells, commandline programs, etc, that use this API. The bundled version is 0.78 (30932)

Updated Modules

  • ANSIColor upgraded to version 1.11

  • Archive::Extract upgraded to version 0.26

  • Attribute::Handlers upgraded to version 0.79

  • AutoLoader upgraded to version 5.66

  • AutoSplit upgraded to 1.06

  • autouse upgraded to version 1.06

  • B upgraded from 1.09_01 to 1.19

    • consting and PMOP handling fixes.

    • export B_sub_generation(), B::NV::COP_SEQ_RANGE_LOW(), B::NV::COP_SEQ_RANGE_HIGH(), B::NV::PARENT_PAD_INDEX(), B::NV::PARENT_FAKELEX_FLAGS()

    • fix B::PV::PVBM. It was missing the last table entry before.

    • B::BM::PREVIOUS returns now U32, not U16.

    • add B::GV::isGV_with_GP() returning always TRUE

    • B::CV::START and B:CV::ROOT return now NULL on an XSUB, B::CV::XSUB and B::CV::XSUBANY return 0 on a non-XSUB.

    • New type B::HE added with methods VAL, HASH, SVKEY_force

    • The B::GVf_IMPORTED_CV flag is now set correctly when a proxy constant subroutine is imported.

  • B::C upgraded to 1.05

  • B::Concise upgraded to 0.74

    • Supports option -src, i.e. the rendering of each statement (starting with the nextstate OP) will be preceded by the 1st line of source code that generates it.

    • Support option -stash="somepackage", i.e. "somepackage" will be required, then the stash is inspected, and each function is rendered.

    • Now has a documentation of detailed hint symbols.

  • B::Debug upgraded to version 1.05

  • B::Deparse upgraded to version 0.82

  • B::Lint upgraded to version 1.11

  • B::Terse upgraded to version 1.04

  • base upgraded to version 2.13

  • Benchmark upgraded to version 1.10

  • bignum upgraded to 0.20

  • Carp upgraded to version 1.09

  • CGI upgraded to version 3.35 [33568]

  • constant upgraded to version 1.15

  • CPAN upgraded to version 1.9105 (32280)

  • Cwd upgraded to version 3.27 with C const-ing and some platform specific improvements (including for VMS).

  • Data::Dumper upgraded to version 2.121_13

    • Performance enhancements (28963)

    • Fixes hash iterator current position with the pure Perl version #40668 (29224)

  • DB upgraded to version 1.30

    • Andreas J. Koenig contributed two functions to save and load the debugger history.

  • DB_File upgraded to version 1.817 [33583]

  • Devel::DProf upgraded to version 20080331.00.

  • Devel::Peek upgraded to version 1.04

  • Devel::PPPort upgraded to version 3.14_01

  • diagnostics upgraded to version 1.16

  • Digest upgraded to version 1.15

  • Digest::SHA upgraded to version 5.46

  • DynaLoader upgraded to version 1.09 and can now dynamically load a loadable object from a file with a non-default file extension.

  • Embed upgraded to version 1.28

  • Encode upgraded to version 2.24 [33493]

  • Encode::Alias includes a fix for encoding "646" (aka ASCII) on Solaris.

  • File::Basename upgraded to version 2.76

  • File::Find upgraded to version 1.11

  • File::Glob upgraded to version 1.06

  • encoding upgraded to version 0.11

  • Errno upgraded to version 1.10

  • Exporter upgraded to version 5.60

  • ExtUtils::Command upgraded to version 1.14

  • ExtUtils::Constant upgraded to version 0.04

  • ExtUtils::Constant::ProxySubs upgraded to version 0.06

  • ExtUtils::Install upgraded to version 1.51 [33567]

  • ExtUtils::MakeMaker upgraded to version 6.44 [33396]

    • Support for INSTALLSITESCRIPT and INSTALLVENDORSCRIPT configuration. [26536]

  • ExtUtils::Manifest upgraded to version 1.51

  • ExtUtils::ParseXS upgraded to version 2.19 [33392]

  • Fatal upgraded to version 1.06

  • Time::Local upgraded to version 1.18

    • Allows to make fatal built-ins in CORE::GLOBAL.

  • fields upgraded to version 2.12

  • File::Basename upgraded to version 2.77

  • File::Copy now uses 3-arg open.

    File::Copy upgraded to 2.11

  • File::Find upgraded to version 1.13

  • File::Glob upgraded to version 1.06

    • Fixes spurious results with brackets inside braces.

  • File::Path upgraded to version 2.04

  • File::Spec, File::Spec::Epoc, File::Spec::Mac, File::Spec::Functions File::Spec::Unix, File::Spec::VMS, File::Spec::Win32 upgraded to version 3.2701 with improved handling of bad arguments and some platform specific improvements (Including for VMS and Cygwin) including an optimization on abs2rel() when handling both relative arguments.

  • File::Spec::Unix upgraded to version 1.5_01

  • File::Temp upgraded to version 0.20

  • FindBin upgraded to version 1.49

  • FileCache upgraded to version 1.07

  • GDBM_File upgraded to version 1.09

  • Getopt::Long upgraded to version 2.37 (32009)

  • Hash::Util upgraded to version 0.07

  • libnet upgraded to version 1.20

  • Locale::Maketext upgraded to 1.12

  • Math::BigFloat upgraded to version 1.54

  • Math::BigInt upgraded to version 1.82

  • Math::BigRat upgraded to version 0.22

    • Implements new as_float method.

  • Math::Complex, Math::Trig upgraded to version 1.54.

  • Module::Pluggable upgraded to version 3.8 [33552]

  • Net::Ping upgraded to version 2.35 [33242]

  • NDBM_File upgraded to version 1.07

    • Improve g++ handling for systems using GDBM compatibility headers.

  • Opcode::Safe upgraded to version 2.14

  • open upgraded to 1.06

  • PathTools upgraded to version 3.2501

  • PerlIO::scalar upgraded to version 0.05

    • [perl #40267] PerlIO::scalar doesn't respect readonly-ness

  • PerlIO::via upgraded to version 0.05

  • Pod::Html upgraded to version 1.09 [33536]

  • Pod::Parser upgraded to version 1.35

  • Pod::Perldoc is now maintained by Hakim Cassimally (osfameron).

  • Pod::Usage upgraded to version 1.35 [30187]

  • POSIX::remove can removes empty directories.

  • POSIX imports previously duplicated constants from Fcntl, version bumped from 1.14 to 1.15.

  • scalar upgraded to version 0.06

  • SDBM_File upgraded to version 1.06

    • Improve g++ handling for systems using GDBM compatibility headers.

  • SelfLoader upgraded to version 1.15

  • Shell upgraded to version 0.72

  • sigtrap upgraded to version 1.04

  • Socket upgraded to version 1.81

    • This fixes an optimistic use of gethostbyname().

  • Storable upgraded to 2.18

  • Switch upgraded to version 2.13

  • Sys-Syslog upraded to version 0.24

  • Term::ANSIColor upgraded to version 1.12 (31036)

  • Term::Cap upgraded to version 1.11 (32143, 32301)

  • Term::ReadLine upgraded to version 1.03 (31862)

  • Test::Simple upgraded to version 0.70

  • Text::Balanced upgraded to version 1.98 (32984)

  • Text::ParseWords upgraded to version 3.26

  • Text::Soundex upgraded to version 3.02

  • Text::Tabs upgraded to version 2007.1117

  • Test::Harness upgraded version to 2.64

    • This made it able to handle newlines.

  • Text::Wrap upgraded to version 2006.1117

  • Thread upgraded to version 2.01 [32470]

  • Thread::Semaphore upgraded to version 2.07 [33361]

  • Thread::Queue upgraded to version 2.06 [33362]

  • Tie::Memoize upgraded to version 1.1

    • Tie::Memoize::EXISTS now correctly caches its results.

    Tie::RefHash upgraded to version 1.38

  • Time::gmtime upgraded to version 1.03

  • Time::HiRes upgraded to version 1.9715 with various build improvements (including VMS (31752)) and minor platform-specific bug fixes (including for HP-UX 11 ia64)

  • threads upgraded to 1.61

  • threads::shared upgraded to version 1.21

    • User locks are now stored in a safer manner.

    • New function shared_clone creates a copy of an object leaving shared elements as-is and deep-cloning non-shared elements.

  • Thread::Queue upgraded to version 2.08

  • Thread::Semaphore upgraded to version 2.08

  • Unicode::Normalize upgraded to version 1.01

  • Win32 upgraded to version 0.34

  • XSLoader upgraded to version 0.08

  • XS::APItest and XS::Typemap are for internal use only and hence no longer installed.


Utility Changes

  • h2ph now attempts to deal sensibly with the difference in path implications between "" and <<>> quoting in #include statements.

  • h2ph generates correct correct code for #if defined A || defined B now (perl #39130)

  • h2xs won't define an empty string as a constant (perl #25366)

  • h2xs has examples for h2xs -X (31175)

  • The Emacs perl mode (emacs/cperl-mode.el) has been updated to version 5.23.

  • Added uupacktool.pl (handles binary files in source tree).


New Documentation

As usual, the documentation received its share of corrections, clarifications and other nitfixes. More tags were added for indexing.

CORE documents the pseudo-namespace for Perl's core routines.

perlbot fixed ref returns an empty string (not undef) when used on a string (#31685)

perlcheat is updated with better details on \w, \d, and \s.

perlcommunity provides an overview of the Perl Community along with further resources.

perldebug is updated with information on how to call the debugger.

perldiag documentation updated with subroutine with an ampersand on the argument to exists() and delete() and also several terminology updates on warnings.

perlfork documents the limitation of exec() inside pseudo-processes.

perlfunc:

  • Documentation is fixed in section caller and pop.

  • Added example of gethostbyname.

  • Better wording in prototype and split.

  • Function alarm() now mentions Time::HiRes::ualarm in preference to select().

  • Regarding precedence in -X, filetest operators are the same as unary operators, but not regarding parsing and parentheses (spotted by Eirik Berg Hanssen).

perlglossary adds deprecated modules and features and to be dropped modules.

perlhack has been updated and added resources on smoke testing.

perllocale documentation is adjusted for the number of localization and POSIX::setlocale() to fix debian bug in RT ##379463.

perlmodlib is updated with CPAN::API::HOWTO and Sys::Syslog::win32::Win32

perlop adds /k modifier in section s/PATTERN/REPLACEMENT/egimosxk

perlre documentation updated to reflect the differences between [[:xxxxx:]] and \p{IsXxxxx} matches. Also added section on /g and /c modifiers.

perlreguts describe the internals of the regular expressions engine. It has been contributed by Yves Orton.

perlrun is updated to clarify on the hash seed PERL_HASH_SEED. Also more information in option -x and -u.

perlsub example is updated to use lexical variable on opendir syntax.

perltoc the table of content is updated with several new documentation and cleaned up unnecessary noises.

perlunicode is updated in section user defined properties.

perluniintro have been updated in the example of detecting data that's not valid in particular encoding.

perlunitut is a tutorial written by Juerd Waalboer on Unicode-related terminology and how to correctly handle Unicode in Perl scripts.

perlvar and perlre add items ${^PREMATCH}, ${^MATCH}, and ${^`POSTMATCH} and also /k modifier.

perlvar fixes confusion about real GID $( and effective GID $).

Perl thread tutorial example is fixed in section Queues: Passing Data Around both in perlothrtut and perlothrtut.

The Perl FAQs (perlfaq1..perlfaq9) have been updated.

reverse function documentation received scalar context examples.

perltodo is updated with:

  • removed section Ordering of "global" variables.

  • removed section The roadmap to 5.10.

  • added -Duse32bit*.

  • added __FUNCTION__ for MSVC.

  • added more detail about @INC order.

  • added section merge common code in installperl and installman.

  • added section merge checkpods and podchecker.

  • added section Investigate PADTMP hash pessimisation.

  • added does() built-in and Tied filehandles and write() don't mix.

  • added section Unicode and lc/uc operators.

  • added section Optimize away empty destructors.

  • Maybe the default order of directories in @INC should be modified to support upgrade core (dual-life) modules without overwriting files.

  • Todo for perl 5.12, virtualize operating system access.

perlhack documentation extensively improved by Jarkko Hietaniemi and others.

perltoot provides information on modifying @UNIVERSAL::ISA.

perlport documentation extended to include different kill(-9, ...) semantics on Windows. It also clearly states dump() is not supported on Win32 and cygwin.


Changes to Existing Documentation

perltodo was, of course, extensively modified; with the notable marking of the srlcpy/strcat to my_strlcpy/my_strcat update as a TODONE.


Performance Enhancements

  • The default since perl 5.000 has been for perl to create an empty scalar with every new typeglob. The increased use of lexical variables means that most are now unused. Thanks to Nicholas Clark's efforts, Perl can now be compiled with -DPERL_DONT_CREATE_GVSV to avoid creating these empty scalars. This will significantly decrease the number of scalars allocated for all configurations, and the number of scalars that need to be copied for ithread creation. Whilst this option is binary compatible with existing perl installations, it does change a long-standing assumption about the internals, hence it is not enabled by default, as some third party code may rely on the old behaviour.

    We would recommend testing with this configuration on new deployments of perl, particularly for multi-threaded servers, to see whether all third party code is compatible with it, as this configuration may give useful performance improvements. For existing installations we would not recommend changing to this configuration unless thorough testing is performed before deployment.

  • Reblessing an object from a class that doesn't use overloads to one that does (or vice versa) is now faster. (31996, 32019, 32025).

  • diagnostics no longer uses $&, which results in large speedups for regexp matching in all code using it.

  • Regular expressions classes of a single character are now treated the same as if the character had been used as a literal, meaning that code that uses char-classes as an escaping mechanism will see a speedup. (Yves Orton)

  • Regular expression introduces /k modifier for matching along with new perl variables ${^PREMATCH}, ${^MATCH}, ${^POSTMATCH} which are equivalent to $`, $& and $', except that they are only guaranteed to be defined after a successful match that was executed with the /k (keep-copy) modifier. The use of these variables incurs no global performance penalty, unlike their punctuation char equivalents (#32263).

  • Creating anonymous array and hash references (ie. [] and {}) now incurs no more overhead than creating an anonymous list or hash. Nicholas Clark provid changes with a saving of two ops and one stack push, measured as a 6.4% improve

  • Substitutions with repeated right hand expressions (ie. s///ge) are now more efficient.

  • Stopped memory leak on long /etc/groups entries

  • Recursive regexes now possible. Possessive quantifiers and named captures are now possible within the regex engine.

  • The MY_CXT API has been made more efficient (and an explicit interpeter argument variant has been added).


Installation and Configuration Improvements

g++ support was tuned, especially for FreeBSD.

Configure is now better at removing temporary files. Tom Callaway (from RedHat) also contributed patches that completes the set of flags passed to the compiler and the linker. Especially, -fPIC is now enabled on linux. It will also croak when your /dev/null isn't a device.

There are improved hints for DEC/OSF, VOS (33425), Cygwin (33484).

Many compilation warnings were cleaned up (33415, 33417, 33418, 33419, 33420, 33421, 33427, 33428, 33429, 33435, 33436, 33441, 33444, 33479, 33590, 31347, 31073, 31074, 31075)

Added d_pseudofork to Configure which is a new configuration variable, available as $Config{d_pseudofork} in the Config module, has been added, to distinguish real fork() support from fake pseudofork used on Windows platforms.

ptar and ptardiff are no longer installed to $installbin

Config.pod and config.sh are now placed correctly for cross-compilation.

'unexpand -a' spaces converted to tabs to create smaller Changes files.

$Config{useshrplib} is now 'true' rather than 'yes' when using a shared perl library.

Platform Specific Changes

FreeBSD

  • Drop -std=c89 and -ansi if using 'long long' as the main integral type.

    In FreeBSD 6.2 (and perhaps other releases), headers do not declare a required function if this is not done.

Solaris

  • Starting with Solaris 10, we don't want versioned shared libraries because those often indicate a private use only library. Especially badly that would break things with SUNWbdb (Berkeley DB) being installed.

    If Solaris 10 is detected set ignore_versioned_solibs=y.

VMS

  • Allow IEEE math to be deselected on OpenVMS I64 (but it remains the default).

  • Record IEEE usage in config.h

  • Help older VMS compilers by using ccflags when building munchconfig.exe.

  • Don't try to build old Thread extension on VMS when -Duseithreads has been chosen. (31104)

  • Better suppression logic for not building Thread extension (31226).

  • Fix the case of $Config{perl_patchlevel} (31544) (but keep setting $Config{PERL_PATCHLEVEL} and grab the value from a MAINTXXX or SMOKEXXX line in patchlevel.h if present. (31597)).

  • Passing a raw string of "NaN" to nawk(1) causes a core dump - so the string has been changed to "*NaN*" (31975)

  • Removed vms/genconfig.pl and references to it (obsolete as of change 1084).


Selected Bug Fixes

  • Overloading flags are now stored on the referent instead of the reference. Previously taking a new, unrelated reference to an object could result in the original (blessed) reference being able to access the overload while the new reference could not. (Test added in 32016).

  • encoding pragma now correctly ignores anything following an @ character in the LC_ALL and LANG environment variables. (RT # 49646)

  • Magic is no longer invoked twice by the expression \&$x

  • A segfault observed with some gcc 3.3 optimisations is resolved.

  • A possible segfault when unpack used in scalar context with () groups is resolved. (RT #50256)

  • Resolved issue where $! could be changed by a signal handler interrupting a system() call.

  • Fixed problems with split, unicode /\s+/ and / \0/.

  • Fixed bug RT #37886, unsafe dereferencations were allowed in the argument of defined() even under the influence of use strict 'refs'.

  • Fixed a long-standing bug that caused incorrect line numbers to be reported in error messages about elsif blocks.

  • The tokenizer no longer treats =cute (and other words beginning with =cut) as a synonym for =cut.

  • Fixed bug RT #43207, where lc()/uc() inside sort affected the return value.

  • Fixed bug RT #45337, where using certain UTF-8 patterns in a regex led to a panic.

  • Fixed bug RT #45607, where *{"BONK"} = \&{"BONK"} didn't work correctly.

  • The "Unrecognised character 'x'" error now specifies in which column the unrecognised character actually occurred.

  • Fixed bug on RT #43010, now B::Deparse handles ''->(), ::(), sub :: {}, etc correctly (31268). All bugs in parsing these kind of syntax are now fixed:

    • perl -MO=Deparse -e '"my %h = "->()'

    • perl -MO=Deparse -e '::->()'

    • perl -MO=Deparse -e 'sub :: {}'

    • perl -MO=Deparse -e 'package a; sub a::b::c {}'

    • perl -MO=Deparse -e 'sub the::main::road {}'

  • Fix MRO behaviour when one undefs @ISA (32542)

  • Fixed bug RT #35878, croaking from a XSUB called via goto &xsub corrupts perl internals.

  • Fix descriptor leak caused by change (30633) to PerlIO_exportFILE (32224)

  • Fixed bug RT #32539, DynaLoader.o is moved into libperl.so to avoid the need to statically link DynaLoader into the stub perl executable and make libperl.so provides all codes needed to get a functional embedded perl interpreter runs.

  • Fix bug 36267 so that assigning to a tied hash doesn't change the underlying hash (27636)

  • Fix bug RT #6006, regex replaces using large replacement variables fail some of the time, i.e. when substitution contains something like ${10} (note the bracket) instead of just $10 (29616 - 29619).

Platform Specific Fixes

Darwin / MacOS X

  • Various improvements to 64 bit builds.

  • Mutex protection added in PerlIOStdio_close to avoid race conditions. May fix threads free.t and blocks.t failures on OS X on 5.8.x (33502).

  • Added forked terminal support to debugger under MacOSX (29415)

  • perl5db.pl has been updated for Mac OS X 10.5 (as there is now a direct accessor for the tty device name) to update the window title.

Windows

  • File::Find used to fail when the target dir is a bare drive letter and no_chdir is 1 (the default is 0). (RT #41555)

    Win32API::File added to the core

  • A build problem with specifying USE_MULTI and USE_ITHREADS but without USE_IMP_SYS has been fixed.

  • The process id is no longer truncated to 16 bits on some Windows platforms ( http://bugs.activestate.com/show_bug.cgi )

  • Various improvements to the win32 build process, includding support for Visual C++ 2005 Express Edition (aka Visual C++ 8.x). Also you should now have an icon for perl.exe if built with MinGW or Borland.

  • Improvements to the perl-static.exe build process.

  • Add Win32 makefile option to link all extensions statically.

  • Merge WinCE into Win32 directory (30281-30284, 20862)

VMS

  • Fixed PerlIO::Scalar in-memory file record-style reads.

  • Make pipe shutdown on VMS care about whether PerlIO has already shut down (33005)

  • Fix VMS exit handling broken in Test::Harness 2.64 (33008)

  • Fix fcntl locking capability test in configure.com (31756)

  • Replaced shrplib='define' with useshrplib='true' on VMS.

  • Fix missing PerlIO_releaseFILE in VMS::Stdio::getname (31384)

OS/2

  • A build problem with specifying USE_MULTI and USE_ITHREADS but without USE_IMP_SYS has been fixed.

  • OS2::REXX upgraded to version 1.04

Tru64

  • Aligned floating point build policies for cc and gcc.

RedHat Linux

  • Revisited a patch from 5.6.1 for RH7.2 for Intel's icc (RT #7916), added an aditional check for $Config{gccversion}.

Windows and OS/2

  • A build problem with specifying USE_MULTI and USE_ITHREADS but without USE_IMP_SYS has been fixed.

Solaris/i386

  • Use -DPTR_IS_LONG when using 64 bit integers (27001)

Symbian

  • Added support for Symbian series 90.

Smaller fixes

  • It's now possible to overload eq when using nomethod.

  • Various problems using overload with 64-bit ints corrected (identified in new tests).

  • The reference count of PerlIO file descriptors is now correctly handled.

  • On VMS, escaped dots will be preserved when converted to UNIX syntax.

  • the B::Deparse manpage has been instructed on:

    • how to properly deparse print readpipe $x, $y.

    • not to deparse $^H{v_string}, which is automatically set by the internals.

  • keys %+ no longer throws an 'ambiguous' warning.

  • index works faster now if the search string is stored in UTF-8 but actually fits into Latin-1.

  • Reduced number of calls to getpeername in the IO::Socket manpage (29129).

  • chr(65535) ought to be allowed in regexes.

  • the ExtUtils::MakeMaker manpage now detects DragonFlyBSD as a BSDish operating system (33006)

  • Using #!perl -d could trigger an assertion, which has been fixed (30075).

  • Don't stringify tied code references in @INC when calling require. (30068)

  • Code references in @INC report the correct file name when __FILE__ is used (30068).

  • Width and precion in sprintf didn't handle wide characters correctly (30058).

  • List slices with indices out of range now work more consistently (30026).

  • The -s switch on the shebang line is again capable of parsing options with arguments of the form -foo=bar (29865).

  • tr/// is now threadsafe (29765)

  • De-duplicate @EXPORT (26459)

  • pod2html will label anchors more consistently (32079) and handles nested definition lists better (32727).

  • No longer segfaults when your locale charset is not utf8 with use open ':locale' and printing Unicode characters to STDERR (30213)

  • threads cleanup veto has been extended to include perl_free and perl_destruct (29827)

    PL_veto_cleanup now happens on all platforms, not just UNIX (31971)

  • B now can compile outside of the perl source tree.

  • On some systems, changes to $ENV{TZ} would not always be respected by the underlying calls to localtime_r. Perl now forces the inspection of the environment on these systems. (29213)

  • Calling dump() from Win32 and cygwin now gives a proper fatal error (26947).

  • Avoid a segfault for perl built without PERL_DONT_CREATE_GVSV defined when writing to $ARGV. (32472, 32473)


New or Changed Diagnostics

Maximal count of pending signals (%s) exceeded

This new fatal error occurs when the perl process has to abort due to too many pending signals, which is bound to prevent perl from being able to handle further incoming signals safely.

Panic: attempt to call %s in %s

This new fatal error occurs when a file test operator is used that is not availble on the current platfom (25987).

Can't upgrade %s (%d) to %d

This error now reports the type of things that made the upgrade fail (27253).

%s argument is not a HASH or ARRAY element or a subroutine

This error, thrown if an invalid argument is provided to exists now correctly includes "or a subroutine". (RT #38955)

Cannot make the non-overridable builtin %s fatal

This error in Fatal previously did not show the name of the builtin in question (now represented by %s above).

Offset outside string

Changed to add the seek operation and is now included in the default warnings pragma (28903).


Changed Internals

The new API function newSV_type can be used to replace more efficiently the common idiom

    sv = newSV(0);
    sv_upgrade(sv, type);

A sigbit public function was added to test the sign of a NV. It maps to the system one when available.

av_reify, lex_end, mod, op_clear, pop_return, qerror, setdefout, vivify_defelem and yylex are now visible to perl core extensions. This was required by the Data::Alias manpage.

find_runcv is now visible to perl core extensions. This was required to allow the Sub::Current manpage to work on Windows.

set magic on localizing/assigning to a magic variable will now only trigger for container magics, i.e. it will for %ENV or %SIG but not for $#array.

Display the process id as part of the trace output if running with -Dv (33039)

A lot of small improvents in the code base were made due to reports from the Coverity static code analyzer.

ptr_table functions are now available in unthreaded perl.

Corrected use and documentation of gv_stashpv, gv_stashpvn, gv_stashsv functions (last parameter is a bitmask, not boolean).

PERL_SYS_INIT, PERL_SYS_INIT3 and PERL_SYS_TERM macros have been changed into functions (31970).

Machine generated B::Asmdata via bytecode.pl is now more warnings free and read @optype and @specialsv_name from ext/B/B.pm (#32264, #32266)

PERLSYS_TERM no longer requires a context (32216). In PerlIO_teardown is now also called without a context (32215), and debugging output in this function has been disabled because this requires that an interpreter is present (32235).

Reorder global variable in intrpvar.h saves another 40 bytes from the interpreter structure (#31034). Also delete thrdvar.h and move its contents to intrpvar.h (#31245).

Support for assertions and -A is now removed from XS module and in ext (#31333).

"Bake" the values of PERL_REVISION, PERL_VERSION and PERL_SUBVERSION into global variables (and hence a shared perl library). Additionally under MULTIPLICITY record the size of the interpreter structure (total, and for this version) and under PERL_GLOBAL_STRUCT the size of the global variables structure. Coupled with PL_bincompat_options this will allow 5.10.1 (and later), when compiled with a shared perl library, to perform sanity checks in main() to verify that the shared library is indeed binary compatible.

All compile time options which affect binary compatability have been grouped together into a global variable (PL_bincompat_options). This will allow comparisons to be made in the future.


New Tests

  • Regression tests for anchored regexes using \s that failed to set $& (30073).

  • Regression tests for sprintf with 64 bit semantics (30058).

  • Tests for overload for 64-bit ints (32141).

  • Tests for tainting and open with |- as second argument (30048).

  • exit can now be called in expressions that the optimizer constant-folds (29976).

  • Test smallbuf overflow in S_incline (30024)

  • Tests for mathematical functions in POSIX

  • Verify POSIX::AUTOLOAD works (29592)

  • Remove DynaLoader from 1_compile.t as it's now part of libperl.so (27549, 27566, 28226, 28227, 28228, 28274, 28308). Also skip failure test on these patforms: VMS, darwin, OpenBSD, and cygwin (28333, 28840, 29253, 29707).

  • Added bitflip hash tests (31914, 31915)

  • Tests for hv_delete, hv_exists, hv_fetch, hv_store (31905, 31912)

  • Test disabling key conversion in hash lookups (31923)

  • Significantly improved testing for $/ usage with PerlIO::Scalar in-memory files.

  • Test both MY_CXT and MY_CXT_INTERP in the CXT API.

  • Added test to run regex substitution s/// under taint mode (29618).

  • Tests for Thread.

  • Regression tests for base manipulation of @ISA under certain inheritance conditions. (32469)

  • Test that base does not mask SIGDIE. (32469)

  • Test that base does not confuse the version. (32469)

  • Test that inheriting from a base with protected fields generates a warning. (32469)

  • Test that base can coexist with a consant called FIELDS. (31420)

  • Test that the Carp::cluck manpage correctly reports undef values. (31858)

  • Test that $@ is correctly localised in the Locale::Maketext manpage. (25547)


Known Problems


Platform Specific Notes

Win32

readdir(), cwd(), $^X and @INC now use the alternate (short) filename if the long name is outside the current codepage (Jan Dubois).

Updated Modules

  • Win32 upgraded to version 0.36. Now has a documented 'WinVista' response from GetOSName and support for Vista's privilege elevation in IsAdminUser. Support for Unicode characters in path names. Improved cygwin and Win64 compatibility.

  • Win32API updated to 0.1001_01 (30411)

  • killpg() support added to MSWin32 (Jan Dubois).

  • File::Spec::Win32 upgraded to version 3.2701 (see above).

OS/2

Updated Modules

  • OS2::Process: Ilya Zakharevich has added and documented several Window* and Clipbrd* functions.

  • OS2::REXX::DLL, OS2::REXX updated to version 1.03

VMS

Updated Modules

  • File::Spec::VMS upgraded to version 3.2701 (see above).

  • VMS::XSSymSet upgraded to 1.1 (31236).


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 http://bugs.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. You can browse and search the Perl 5 bugs at http://bugs.perl.org/


SEE ALSO

The Changes file for 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.