develooper Front page | perl.perl5.porters | Postings from July 2013

Re: upcoming release of 5.18.1

Thread Previous | Thread Next
David Golden
July 24, 2013 15:51
Re: upcoming release of 5.18.1
Message ID:
Looking at the selected bug fixes from 5.19.1 and 5.19.2, here are the
ones that seem like possible backport candidates per perlpolicy if
someone were to dig up the relevant commits for them:

[side note: organizing "selected bug fixes" in perldelta along these
lines in the future would make it easier to triage for backport

Build related:

    *   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. [RT #118055]

    *   "./Configure -de -Dusevendorprefix" didn't default [RT #64126]

Crash bugs:

    *   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. [RT #118175]

    *   Through certain conundrums, it is possible to cause the current
        package to be freed. Certain operators ("bless", "reset", "open",
        "eval") could not cope and would crash. They have been made more
        resilient. [RT #117941]


    *   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. [RT #118169]

    *   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. [RT #117947]

    *   In Perl v5.18.0 dualvars that had an empty string for the string part
        but a non-zero number for the number part starting being treated as
        true. In previous versions they were treated as false, the string
        representation taking precedeence. The old behaviour has been
        restored. [RT #118159]

    *   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, e.g.

            utf8::upgrade(  my $u = "\x{e5}");
            utf8::downgrade(my $d = "\x{e5}");

        [RT #118297]

    *   Certain uses of the "sort" operator are optimised to modify an array
        in place, such as "@a = sort @a". During the sorting, the array is
        made read-only. If a sort block should happen to die, then the array
        remained read-only even outside the "sort". This has been fixed.

    *   Method calls on typeglobs (e.g., "*ARGV->getline") used to stringify
        the typeglob and then look it up again. Combined with changes in Perl
        5.18.0, this allowed "*foo->bar" to call methods on the "foo" package
        (like "foo->bar"). In some cases it could cause the method to be
        called on the wrong handle. Now a typeglob argument is treated as a
        handle (just like "(\*foo)->bar"), or, if its IO slot is empty, an
        error is raised.

    *   Since Perl v5.12, inlining of constants that override built-in
        keywords of the same name had countermanded "use subs", causing
        subsequent mentions of the constant to use the built-in keyword
        instead. This has been fixed.

Fixes to new features:

    *   Lexical constants ("my sub a() { 42 }") no longer crash when inlined.

    *   Syntax errors in lexical subroutines in combination with calls to the
        same subroutines no longer cause crashes at compile time.

    *   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. [RT #116735]

    *   The dtrace sub-entry probe now works with lexical subs, instead of
        crashing [perl #118305].

    *   Undefining an inlinable lexical subroutine ("my sub foo() { 42 } undef
        &foo") would result in a crash if warnings were turned on.

Memory leaks:

    *   Various memory leaks involving the parsing of the "(?[...])" regular
        expression construct have been fixed.

    *   "delete local $ENV{nonexistent_env_var}" no longer leaks memory.

David Golden <>
Take back your inbox! →
Twitter/IRC: @xdg

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About