Project:Perl/5.26 Known Issues

From Gentoo Wiki
Jump to: navigation, search

Introduction

Perl 5.26 brings several incompatible changes, also as a consequence of fixing a security problem (bug #589680. While we have made sure that all resulting build failures within Gentoo are fixed, this may not be the case for runtime issues, and certainly can affect third-party code (e.g., "hand-installed" server applications).

This will require a lot of care from end users who have upgraded to Perl 5.26, specifically as breakages manifest all over the tree, in places you wouldn't expect (for example: make, automake, autoconf, gcc, and even some python packages have been broken and by now hopefully fixed by changes in this release).

If you use Gentoo as a production server, this will be a good time to set aside a seperate box for testing the side effects of this release on your platform, and you should assume this release will affect you in some way.

Global Deprecations / Breakages

No current directory in library loading path anymore

buildtime and runtime Library path loading (@INC) changes break many (bug #612408) things, see in detail the separate Project:Perl/Dot-In-INC-Removal page.

Typical error messages are

Can't locate inc:: ... in @INC (you may need to install the ... module)
Can't locate t:: ... in @INC (you may need to install the ... module)
do "foo.pl" failed, '.' is no longer in @INC; did you mean do "./foo.pl"?

Unescaped { in Regexp

buildtime and runtime Unescaped left braces { in regular expressions have been deprecated already for some time and now cause compilation to fail.

Typical error messages are:

Unescaped left brace in regex is illegal in ...

OP_SIBLING/OP_PARENT internal changes

buildtime Changes in Perl internals breaks code around OP_SIBLING/OP_PARENT (changed in Perl 5.22 via option, default in 5.26).

Typical error messages are:

error: ... has no member named ‘op_sibling'

Removal of POSIX::tmpnam

runtime Removal of tmpname from POSIX causes some issues.

Typical error messages are:

Unimplemented: POSIX::tmpnam()

Encoding support

runtime Lexical encoding support has been removed

Further advice

More information on how to deal with Perl in Gentoo can be found on this wiki's Perl page.