Joel Berger
2018-10-25 14:34:22 UTC
Hello Mojolicious users,
As you all know, Mojolicious is among the most forward looking of the major Perl projects. We've long prided ourselves with moving forward in the aim of giving you the most modern web framework we can.
Recently we've had several volunteers spend effort to fix spurious warnings emitted from Mojolicious on old versions of Perl, usually 5.10. We've consistently rejected those patches because it was judged that the maintenance burden of the additional code wasn't worth the minor benefit to the ever-shrinking affected userbase. But having seen several of these, we started to consider whether we'd like to continue to support such old Perl interpreters.
In doing so we looked at the improvements made to Perl in releases subsequent to 5.10. Significant changes were made in versions 5.12 and 5.14, especially surrounding exception handling.
On prior versions of Perl, there are certain constructs in which Perl code simply cannot handle exceptions correctly. For years, the Mojolicious codebase has employed the exception handling as of 5.14, because the prior constructs do not work. Whether or not you've known it, users of Perl before 5.14 have always had to deal with that problem, whether in Mojolicious or outside of it.
With that consideration, and in addition to the spurious 5.10 warnings mentioned above, the Mojolicious Core Team is announcing that in 3 months, per our deprecation policy, we've decided that as of Feb 1, 2019, Mojolicious will require Perl version 5.14 or greater. We have already added a note discouraging 5.10 and 5.12 to the FAQ (https://mojolicious.org/perldoc/Mojolicious/Guides/FAQ#Which-versions-of-Perl-are-supported-by-Mojolicious). We will be strengthening that to a full deprecation, but this should serve as the official notice for now.
We know there are a few users that remain on 5.10. One that we've talked to on IRC has said that their major blocker is an encoding issue that prevents moving to a very modern Perl but 5.14 should be ok. We suspect others are using 5.10 because their distro provides it. While we don't subject ourselves to the guarantees made by the various distros, it seems that the distro that makes the longest guarantee, RHEL (https://distrowatch.com/table.php?distribution=redhat), will EOL their version 6.X that provides Perl 5.10 in 2020. If you haven't moved yet, you soon will have to anyway. Remember, you can use Perlbrew or Plenv, to manage non-system Perl interpreters for you.
We'd like to always encourage our users to keep their Perl interpreters as up-to-date as possible. We stopped our increase at 5.14 because of the improvements to exception handling, while 5.16 doesn't contain as many changes that would materially aid us. One that we would benefit from is the `__SUB__` token, a feature that is very handy when writing self-referencing callbacks. However that one feature didn't seem enough to justify more movement, yet.
The official Perl core only supports the most recent two Perl releases, which are currently 5.28 and 5.26. Many critical bugs have been fixed, unicode improvements have been essential, and several new features have been added, like postfix dereference and subroutine signatures (still unfortunately experimental). By keeping up to date you get these benefits and will not be surprised if the Mojolicious Perl version gets bumped up again in the future.
Cheers,
The Mojolicious Core Team
As you all know, Mojolicious is among the most forward looking of the major Perl projects. We've long prided ourselves with moving forward in the aim of giving you the most modern web framework we can.
Recently we've had several volunteers spend effort to fix spurious warnings emitted from Mojolicious on old versions of Perl, usually 5.10. We've consistently rejected those patches because it was judged that the maintenance burden of the additional code wasn't worth the minor benefit to the ever-shrinking affected userbase. But having seen several of these, we started to consider whether we'd like to continue to support such old Perl interpreters.
In doing so we looked at the improvements made to Perl in releases subsequent to 5.10. Significant changes were made in versions 5.12 and 5.14, especially surrounding exception handling.
On prior versions of Perl, there are certain constructs in which Perl code simply cannot handle exceptions correctly. For years, the Mojolicious codebase has employed the exception handling as of 5.14, because the prior constructs do not work. Whether or not you've known it, users of Perl before 5.14 have always had to deal with that problem, whether in Mojolicious or outside of it.
With that consideration, and in addition to the spurious 5.10 warnings mentioned above, the Mojolicious Core Team is announcing that in 3 months, per our deprecation policy, we've decided that as of Feb 1, 2019, Mojolicious will require Perl version 5.14 or greater. We have already added a note discouraging 5.10 and 5.12 to the FAQ (https://mojolicious.org/perldoc/Mojolicious/Guides/FAQ#Which-versions-of-Perl-are-supported-by-Mojolicious). We will be strengthening that to a full deprecation, but this should serve as the official notice for now.
We know there are a few users that remain on 5.10. One that we've talked to on IRC has said that their major blocker is an encoding issue that prevents moving to a very modern Perl but 5.14 should be ok. We suspect others are using 5.10 because their distro provides it. While we don't subject ourselves to the guarantees made by the various distros, it seems that the distro that makes the longest guarantee, RHEL (https://distrowatch.com/table.php?distribution=redhat), will EOL their version 6.X that provides Perl 5.10 in 2020. If you haven't moved yet, you soon will have to anyway. Remember, you can use Perlbrew or Plenv, to manage non-system Perl interpreters for you.
We'd like to always encourage our users to keep their Perl interpreters as up-to-date as possible. We stopped our increase at 5.14 because of the improvements to exception handling, while 5.16 doesn't contain as many changes that would materially aid us. One that we would benefit from is the `__SUB__` token, a feature that is very handy when writing self-referencing callbacks. However that one feature didn't seem enough to justify more movement, yet.
The official Perl core only supports the most recent two Perl releases, which are currently 5.28 and 5.26. Many critical bugs have been fixed, unicode improvements have been essential, and several new features have been added, like postfix dereference and subroutine signatures (still unfortunately experimental). By keeping up to date you get these benefits and will not be surprised if the Mojolicious Perl version gets bumped up again in the future.
Cheers,
The Mojolicious Core Team
--
You received this message because you are subscribed to the Google Groups "Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.