From Fedora Project Wiki

< Changes

Revision as of 08:47, 1 March 2016 by Ppisar (talk | contribs) (→‎Current status: Some packaged fixed, other ones removed)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Perl 5.22


A new perl 5.22 version brings a lot of changes done over a year of development. Perl 5.22 was released 6/1/2015. See 5.22.0 perldelta for more details about preparing release.


Current status

Completed items

  • Get dedicated build-root from rel-engs (f23-perl)
  • Define perl_bootstrap in perl-srpm-macros
  • Rebase perl to 5.22.0
  • Build new perl 5.22 keeping old COMPAT Provides
  • Rebuild packages needed for minimal build-root
  • Rebuild dual-lived packages (otherwise yum recommends --skip-broken and fails)
  • Rebuild packages needed for building source packages from git repository
  • Remove old perl(:MODULE_COMPAT_5.20.*) from perl
  • Undefine perl_bootstrap
  • Rebuild packages having perl_bootstrap condition in spec file
  • Rebuild all updated packages
  • Merge dedicated build-root to rawhide and remove the dedicated one by rel-engs (2015-06-11)
  • Synchronize packages upgraded in f23 build root
  • Rebuild other packages: Use Fedora::Rebuild dependency solver

Items in progress

  • Rebuilt Perl packages: 2714 of 2721 done (99.74 %)

Items to be done

Detailed Description

New perl is released every year and updates containing mainly bug fixes follow during the year. The 5.22.0 version is stable release this year.

Benefit to Fedora

Up-to-date and latest perl release will be delivered to Fedora users.


Every Perl package will be rebuilt in a dedicated f23-perl build-root against perl 5.22.0 and then if no major problem emerges the packages will be merged back to f23 build-root.

  • Proposal owners:

New perl and all packages requiring perl or a Perl module will be rebuilt into f23-perl build-root.

  • Other developers:

Owners of packages that fail to rebuild, mainly perl-sig users, will be asked using Bugzilla to fix or remove their packages from the distribution.

  • Release engineering:

Release engineers will be asked for new f23-perl build-root inheriting from f23 build-root. After successful finishing the rebuild, they will be asked to merge f23-perl packages back to f23 build-root. It might be eligible to include this Change in the planned mass rebuild: mass rebuild ticket

  • Policies and guidelines:

No policies have to be modified to complete this change.

Upgrade/compatibility impact

Vast majority of functionality will be preserved. Only the packages that failed to build against perl 5.22 will be removed from the distribution. That will require to remove those packages from existing systems otherwise package manager will encounter unsatisfied dependencies.

How To Test

Try upgrading from Fedora 22 to 23. Try some Perl application to verify they work as expected. Try embedded perl in slapd or snmpd.

User Experience

There should not be any remarkable change in user experience.


There is more than 2500 packages depending on perl. Most of them are expected not to break. Finishing this change can be endangered only by critical changes in a toolchain.

Contingency Plan

If we find perl 5.22 is not suitable for Fedora 23, we will revert back to perl 5.20 and we drop the temporary build-root with already rebuilt packages.

  • Contingency deadline: branching Fedora 23 from Rawhide.
  • Blocks release? No.


Release Notes

  • New features:
    • Bitwise operators allows to perform bit-based operation on strings.
    • Double-diamond <<>> operator allows to process script arguments as file names safely.
    • Regular expression operators \b{} and \B{} allow to match character boundaries according to Unicode rules.
    • Stricter regular syntax rules can be enabled with use re 'strict'.
    • Unicode 7.0 is supported.
    • Variables and subroutines can now be aliased by assigning to a reference.
    • fileno() function works on directory handles now.
    • Special floating point values infinity and non-a-number are more robustly propagated in computations.
    • Hexadecimal floating point literals are supported and printf "%a" can print them.
    • Class and method name look-up for identifiers known and compile-time is faster now.
    • Computing lenght of byte-strings is faster.
    • Hash look-ups where the key is a constant are faster.
    • New perlunicook manual with examples of handling Unicode in Perl.
    • sync_locale() XS function allows to notify interpreter that the locale had changed.
  • Changes:
    • Packing infinity and not-a-number values into a character results into a fatal error.
    • & and \& prototype symbols accepts only anonymous subroutines.
    • Deprecated encoding pragma is now limited to lexical scope.
    • List slices return an empty list only if the original list was empty.
    • \N{} with a sequence of multiple spaces results into a fatal error.
    • Importing functions from UNIVERSAL module results into a fatal error.
    • Splitting (? and (* tokens in regular expressions results into a fatal error.
    • Omitting % and @ symbols before hash and array identifiers is not allows anymore.
    • $! error string out of use locale scope is in English now.
    • $! error string is marked as UTF-8-encoded when appropriate.
    • Using m?PATTERN? expression without leading m results into error now.
    • Using defined() operator on an array or a hash results into fatal error now.
    • Using a hash or an array as an reference results into fatal error now.
    • Setting ${^ENCODING} to an defined value is deprecated. Scripts should be written in UTF-8 now.
    • Multiple use of /x regular expression modifier is deprecated.
    • Literal left curly bracket should be escaped in regular expressions.
    • B module has new classes reflecting changes in perl internals.
    • Accessing CvPADLIST in on an XSUB is forbidden.
    • Internal representation of SVt_NV type has changed.
    • PADNAME and PADNAMELIST types are no longer aliases to SV and AV.
  • Removed features:
    • CGI and Module::Build modules have been removed from core perl distribution.
    • find2perl, s2p, and a2p' tools have been removed from core perl distribution.
    • Perl_tmps_grow() XS function has been removed.
    • SETsv and SETsvUN() macros have been removed.