./lang/perl5, Practical Extraction and Report Language

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 5.30.1, Package name: perl-5.30.1, Maintainer: pkgsrc-users

Perl is a general-purpose programming language originally developed
for text manipulation and now used for a wide range of tasks including
system administration, web development, network programming, GUI
development, and more. The language is intended to be practical (easy
to use, efficient, complete) rather than beautiful (tiny, elegant,
minimal). Its major features are that it's easy to use, supports both
procedural and object-oriented (OO) programming, has powerful built-in
support for text processing, and has one of the world's most impressive
collections of third-party modules.

Required to build:

Package options: 64bitauto, threads

Master sites: (Expand)

SHA1: 4bc190b6ac368f573e6a028f91430f831d40d30a
RMD160: 25eac756d0365c4ff961a31221fc4712b17a1cc0
Filesize: 12077.973 KB

Version history: (Expand)

CVS history: (Expand)

   2019-11-24 02:08:22 by Greg Troxel | Files touched by this commit (1)
Log message:
lang/perl5: Fix compiler check via pkglint

AUTOFIX: Makefile:267: Replacing "${PKGSRC_COMPILER} == \ 
\"xlc\"" with "${PKGSRC_COMPILER:Mxlc}".
   2019-11-14 10:56:56 by Adam Ciarcinski | Files touched by this commit (5) | Package updated
Log message:
perl5: updated to 5.30.1

what is new for perl v5.30.1

Incompatible Changes
       There are no changes intentionally incompatible with 5.30.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
       o   Module::CoreList has been upgraded from version 5.20190522 to

   Changes to Existing Documentation
       We have attempted to update the documentation to reflect the changes
       listed in this document.  If you find any we have missed, send email to
       perlbug@perl.org <mailto:perlbug@perl.org>.

       Additionally, documentation has been updated to reference GitHub as the
       new canonical repository and to describe the new GitHub pull request

Configuration and Compilation
       o   The "ECHO" macro is now defined.  This is used in a \ 
"dtrace" rule
           that was originally changed for FreeBSD, and the FreeBSD make
           apparently predefines it.  The Solaris make does not predefine
           "ECHO" which broke this rule on Solaris.

       Tests were added and changed to reflect the other additions and changes
       in this release.

Platform Support
   Platform-Specific Notes
           The locale tests could crash on Win32 due to a Windows bug, and
           separately due to the CRT throwing an exception if the locale name
           wasn't validly encoded in the current code page.

           For the second we now decode the locale name ourselves, and always
           decode it as UTF-8.

Selected Bug Fixes
       o   Setting $) now properly sets supplementary group ids, if you have
           the necessary privileges.

       o   "readline @foo" now evaluates @foo in scalar context.  \ 
           it would be evaluated in list context, and since readline() pops
           only one argument from the stack, the stack could underflow, or be
           left with unexpected values on it.

       o   sv_gets() now recovers better if the target SV is modified by a
           signal handler.

       o   Matching a non-"SVf_UTF8" string against a regular expression
           containing Unicode literals could leak an SV on each match attempt.

       o   "sprintf("%.*a", -10000, $x)" would cause a \ 
buffer overflow due to
           mishandling of the negative precision value.

       o   "scalar()" on a reference could cause an erroneous assertion
           failure during compilation.
   2019-11-11 22:32:12 by Maya Rashish | Files touched by this commit (3) | Package updated
Log message:
perl5: evaluating this regex to force utf8_heavy.pl to load no longer works,
use a unicode 'tr///' instead.

Fixes Bugzilla checksetup.pl, which uses Safe.

Thanks to many on #perl on freenode.
PR pkg/54625
   2019-11-04 18:47:31 by Roland Illig | Files touched by this commit (14)
Log message:
mk: make BROKEN a list of lines, like PKG_FAIL_REASON

Packages defined the variable BROKEN inconsistently. Some added quotes,
like they are required in PKG_FAIL_REASON, some omitted them.

Now all packages behave the same, and pkglint will flag future mistakes.
   2019-11-03 20:04:09 by Roland Illig | Files touched by this commit (159)
Log message:
lang: align variable assignments

pkglint -Wall -F --only aligned --only indent -r

No manual corrections.
   2019-10-10 19:59:57 by Maya Rashish | Files touched by this commit (5)
Log message:
perl5: backport upstream commits to remove a codepath that assumes
unaligned accesses are OK.
Remove relevant hacks.mk entry to disable optimizations.

PR pkg/53568
   2019-08-11 15:02:00 by Thomas Klausner | Files touched by this commit (1)
Log message:
perl5/bl3.mk: Fix logic error in previous.
   2019-08-11 12:14:18 by Adam Ciarcinski | Files touched by this commit (12) | Package updated
Log message:
perl: updated to 5.30.0

what is new for perl v5.30.0

Core Enhancements
   Limited variable length lookbehind in regular expression pattern matching is \ 
now experimentally supported
       Using a lookbehind assertion (like "(?<=foo?)" or \ 
"(?<!ba{1,9}r)" previously would generate an error and
       refuse to compile.  Now it compiles (if the maximum lookbehind is at most \ 
255 characters), but raises a
       warning in the new "experimental::vlb" warnings category.  This \ 
is to caution you that the precise behavior
       is subject to change based on feedback from use in the field.

       See "(?<=pattern)" in perlre and "(?<!pattern)" \ 
in perlre.

   The upper limit "n" specifiable in a regular expression quantifier \ 
of the form "{m,n}" has been doubled to 65534
       The meaning of an unbounded upper quantifier "{m,}" remains \ 
unchanged.  It matches 2**31 - 1 times on most
       platforms, and more on ones where a C language short variable is more \ 
than 4 bytes long.

   Unicode 12.1 is supported
       Because of a change in Unicode release cycles, Perl jumps from Unicode \ 
10.0 in Perl 5.28 to Unicode 12.1 in
       Perl 5.30.

       For details on the Unicode changes, see \ 
<https://www.unicode.org/versions/Unicode11.0.0/> for 11.0;
       <https://www.unicode.org/versions/Unicode12.0.0/> for 12.0; and
       <https://www.unicode.org/versions/Unicode12.1.0/> for 12.1.  \ 
(Unicode 12.1 differs from 12.0 only in the
       addition of a single character, that for the new Japanese era name.)

       The Word_Break property, as in past Perl releases, remains tailored to \ 
behave more in line with expectations
       of Perl users.  This means that sequential runs of horizontal white space \ 
characters are not broken apart,
       but kept as a single run.  Unicode 11 changed from past versions to be \ 
more in line with Perl, but it left
       several white space characters as causing breaks: TAB, NO BREAK SPACE, \ 
and FIGURE SPACE (U+2007).  We have
       decided to continue to use the previous Perl tailoring with regards to these.

   Wildcards in Unicode property value specifications are now partially supported
       You can now do something like this in a regular expression pattern

        qr! \p{nv= /(?x) \A [0-5] \z / }!

       which matches all Unicode code points whose numeric value is between 0 \ 
and 5 inclusive.  So, it could match
       the Thai or Bengali digits whose numeric values are 0, 1, 2, 3, 4, or 5.

       This marks another step in implementing the regular expression features \ 
the Unicode Consortium suggests.

       Most properties are supported, with the remainder planned for 5.32.  \ 
Details are in "Wildcards in Property
       Values" in perlunicode.

   qr'\N{name}' is now supported
       Previously it was an error to evaluate a named character \ 
"\N{...}" within a single quoted regular expression
       pattern (whose evaluation is deferred from the normal place).  This \ 
restriction is now removed.

   Turkic UTF-8 locales are now seamlessly supported
       Turkic languages have different casing rules than other languages for the \ 
characters "i" and "I".  The
       uppercase of "i" is LATIN CAPITAL LETTER I WITH DOT ABOVE \ 
(U+0130); and the lowercase of "I" is LATIN SMALL
       LETTER DOTLESS I (U+0131).  Unicode furnishes alternate casing rules for \ 
use with Turkic languages.
       Previously, Perl ignored these, but now, it uses them when it detects \ 
that it is operating under a Turkic
       UTF-8 locale.

   It is now possible to compile perl to always use thread-safe locale operations.
       Previously, these calls were only used when the perl was compiled to be \ 
multi-threaded.  To always enable
       them, add


       to your Configure flags.

   Eliminate opASSIGN macro usage from core
       This macro is still defined but no longer used in core

   "-Drv" now means something on "-DDEBUGGING" builds
       Now, adding the verbose flag ("-Dv") to the "-Dr" \ 
flag turns on all possible regular expression debugging.

Incompatible Changes
   Assigning non-zero to $[ is fatal
       Setting $[ to a non-zero value has been deprecated since Perl 5.12 and \ 
now throws a fatal error.  See
       "Assigning non-zero to $[ is fatal" in perldeprecation.

   Delimiters must now be graphemes
       See "Use of unassigned code point or non-standalone grapheme for a \ 
delimiter." in perldeprecation

   Some formerly deprecated uses of an unescaped left brace "{" in \ 
regular expression patterns are now illegal
       But to avoid breaking code unnecessarily, most instances that issued a \ 
deprecation warning, remain legal and
       now have a non-deprecation warning raised.  See "Unescaped left \ 
braces in regular expressions" in

   Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal
       Calling sysread(), syswrite(), send() or recv() on a ":utf8" \ 
handle, whether applied explicitly or
       implicitly, is now fatal.  This was deprecated in perl 5.24.

       There were two problems with calling these functions on ":utf8" \ 

       o   All four functions only paid attention to the ":utf8" flag. \ 
 Other layers were completely ignored, so a
           handle with ":encoding(UTF-16LE)" layer would be treated as \ 
UTF-8.  Other layers, such as compression
           are completely ignored with or without the ":utf8" flag.

       o   sysread() and recv() would read from the handle, skipping any \ 
validation by the layers, and do no
           validation of their own.  This could lead to invalidly encoded perl \ 

   my() in false conditional prohibited

       Declarations such as "my $x if 0" are no longer permitted.

   Fatalize $* and $#
       These special variables, long deprecated, now throw exceptions when used.

   Fatalize unqualified use of dump()
       The "dump()" function, long discouraged, may no longer be used \ 
unless it is fully qualified, i.e.,

   Remove File::Glob::glob()
       The "File::Glob::glob()" function, long deprecated, has been \ 
removed and now throws an exception which
       advises use of "File::Glob::bsd_glob()" instead.

   "pack()" no longer can return malformed UTF-8
       It croaks if it would otherwise return a UTF-8 string that contains \ 
malformed UTF-8.  This protects against
       potential security threats.  This is considered a bug fix as well.

   Any set of digits in the Common script are legal in a script run of another script
       There are several sets of digits in the Common script.  "[0-9]" \ 
is the most familiar.  But there are also
NINE), and several sets for use in
       mathematical notation, such as the MATHEMATICAL DOUBLE-STRUCK DIGITs.  \ 
Any of these sets should be able to
       appear in script runs of, say, Greek.  But the design of 5.30 overlooked \ 
all but the ASCII digits "[0-9]",
       so the design was flawed.  This has been fixed, so is both a bug fix and \ 
an incompatibility.

       All digits in a run still have to come from the same set of ten digits.

   JSON::PP enables allow_nonref by default
       As JSON::XS 4.0 changed its policy and enabled allow_nonref by default, \ 
JSON::PP also enabled allow_nonref
       by default.

   In XS code, use of various macros dealing with UTF-8.
       This deprecation was scheduled to become fatal in 5.30, but has been \ 
delayed to 5.32 due to problems that
       showed up with some CPAN modules.  For details of what's affected, see \ 

Performance Enhancements
       o   Translating from UTF-8 into the code point it represents now is done \ 
via a deterministic finite
           automaton, speeding it up.  As a typical example, \ 
"ord("\x7fff")" now requires 12% fewer instructions
           than before.  The performance of checking that a sequence of bytes is \ 
valid UTF-8 is similarly improved,
           again by using a DFA.

       o   Eliminate recursion from finalize_op().

       o   A handful of small optimizations related to character folding and \ 
character classes in regular

       o   Optimization of "IV" to "UV" conversions.

       o   Speed up of the integer stringification algorithm by processing two \ 
digits at a time instead of one.

       o   Improvements based on LGTM analysis and recommendation.

       o   Code optimizations in regcomp.c, regcomp.h, regexec.c.

       o   Regular expression pattern matching of things like \ 
"qr/[^a]/" is significantly sped up, where a is any
           ASCII character.  Other classes can get this speed up, but which ones \ 
is complicated and depends on the
           underlying bit patterns of those characters, so differs between ASCII \ 
and EBCDIC platforms, but all case
           pairs, like "qr/[Gg]/" are included, as is "[^01]".