Release of programming language Perl 5.30.0

After 11 months of development took place release of a new stable branch of the Perl programming language - 5.30. When preparing the new release, about 620 thousand lines of code were changed, the changes affected 1300 files, 58 developers took part in the development.

Branch 5.30 is released in accordance with the fixed development schedule approved six years ago, which implies the release of new stable branches once a year and corrective releases every three months. The first corrective release of Perl 5.30.1 is scheduled to be released in about a month, fixing the most significant bugs identified during the implementation of Perl 5.30.0. Along with the release of Perl 5.30, support for the 5.26 branch was dropped, which can only be updated in the future if critical security issues are identified. The development process of the 5.31 experimental branch has also begun, on the basis of which the stable release of Perl 2020 will be formed in May 5.32.

Key changes:

  • Experimental support for "(?<!pattern)" and "(?β€Ή=pattern)' for limited access to previously processed named templates. The template definition must be within 255 characters of the reference;
  • The maximum value of the size specifier ("n") in blocks "{m,n}" of regular expressions has been increased to 65534;
  • Added limited support wildcards to highlight certain categories of characters in regular expressions, spanning different Unicode sets. For example, the expression "qr! \p{nv= /(?x) \A [0-5] \z / }!” allows you to select all Unicode characters that define numbers from 0 to 5, including Thai or Bengali variants of writing numbers;
  • Added support for named characters in regular expressions
    inside patterns delimited by single quotes (qr'\N{name}');

  • Support for the Unicode specification has been updated to version 12.1. Removed the sign of experimental development from calls sv_utf8_downgrade and sv_utf8_decode, used in the development of extensions in the C language;
  • Added the ability to build perl with implementation of locale operations that supports multi-threaded operation (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Previously, such an implementation was used only when building a multi-threaded version of Perl, but now it can be enabled for any builds;
  • Combining "-Dv" (extended debug output) and "-Dr" (regex debugging) flags now turns on all possible regular expression debugging modes;
  • Removed features previously deprecated:
    • As line and pattern separator characters now allowed use only graphemes (compound Unicode characters are prohibited).
    • discontinued support for some long-obsolete forms of using the "{" character in regular expressions without escaping it.
    • Prohibited use of sysread(), syswrite(), recv() and send() functions with ":utf8" handlers.
    • It is forbidden to use definitions of "my" in initially false conditional statements (for example, "my $x if 0").
    • Removed support for special variables "$*" and "$#".
      Support for the implicit call to the dump() function has been dropped (now you must specify CORE::dump() explicitly).

    • Removed File::Glob::glob function (need to use File::Glob::bsd_glob).
    • Added protection to pack() against returning invalid Unicode sequences.
    • Deprecation of macros that perform UTF-8 operations in XS code (C blocks) has been postponed until the next release.
  • Performance optimizations:
    • Accelerated translation of UTF-8 to character layout (code point), for example, ord("\x7fff") now requires 12% fewer instructions. The performance of operations for checking the correctness of UTF-8 character sequences has also been improved;
    • Excluded recursive calls in the finalize_op() function;
    • Minor optimizations have been made to the code for collapsing identical characters and defining character classes in regular expressions;
    • Optimized converting signed type specifiers to unsigned ones (IV to UV);
    • The algorithm for converting integers to a string has been accelerated by processing two digits at once instead of one;
    • Improvements have been made prepared as analyzed by LGTM;
    • Optimized code in regcomp.c, regcomp.h and regexec.c files;
    • In regular expressions, the processing of patterns like "qr/[^a]/" with ASCII characters has been significantly accelerated.
  • Resumed support for the Minix3 platform. The ability to build using the Microsoft Visual Studio 2019 compiler (Visual C ++ 14.2) is provided;
  • Updated versions of modules included in the basic distribution. Modules removed from the main composition B::debug ΠΈ Locale::Codes.

Source: opennet.ru

Add a comment