Fifteen years ago, ActiveState introduced our first Perl ecosystem consisting of ActivePerl 5.8 and its package management solution, Perl Package Manager (PPM). Together, they allowed a generation of Perl developers to more easily deploy and manage their installations by allowing them to add dependencies with linked C libraries without requiring a local build environment.
But advances in computing over the past 15 years have meant that our original Perl ecosystem has not aged well. PPM in particular has failed to build more and more dependencies over time until it was finally excluded from our ActivePerl 5.28 release.
So I’m pleased to announce that earlier this month, ActiveState introduced a new version of our Perl ecosystem with the release of Perl 5.32, which provides a new way to install, work with and even consume Perl from ActiveState.
You can learn more and download your own version of ActiveState’s new Perl ecosystem for free from our Perl 5.32 page.
Perl 5.32 NOT ActivePerl 5.32
Traditionally, Perl 5.32 would have been just another ActivePerl release featuring hundreds of Perl modules that have been packaged in an installer for Windows, Mac or Linux. But that would also mean one of the key reasons developers use ActivePerl would once again be missing: PPM. Instead, ActiveState’s Perl 5.32 is built around our new package manager, the State Tool.
The State Tool is the Command Line Interface (CLI) for the ActiveState Platform, which we built to help automate the creation of our Perl, Python and Tcl (and future) distributions. The State Tool lets you manage your local Perl environments, but relies on the cloud-based ActiveState Platform to build any dependencies (and their linked C libraries) that you add from the ActiveState Platform’s catalog of Perl modules, which is updated from CPAN every 48 hours. The ActiveState Platform will also resolve all your dependencies so you can always be sure that they will work together in your environment.
But if you’re no longer getting ActivePerl+PPM what are you getting? ActiveState’s Perl 5.32 is simply the Perl 5.32 core delivered along with the State Tool. The proprietary patches we used to apply to ActivePerl to make it (arguably) easier to use? Gone. The ActiveState EULA that imposed restrictions on how you could deploy Perl? Also gone. Instead, you have a single command that will download and get you started with Perl 5.32 – licensed under its standard open source licensing terms – in just a few seconds.
New Ecosystem; New Approach
While PPM is gone, the need to install dependencies without requiring a local build environment remains. Similarly, ActivePerl allowed developers to get up and running quickly by delivering hundreds of the most popular modules with a single installation. Both of these use cases continue to remain valid, and are both addressed in ActiveState’s new ecosystem.
State Tool vs PPM. As we did previously with PPM, we’ve open sourced the State Tool so you can see exactly what you’re getting. The State Tool GitHub repository is available for you to clone, contribute, report issues, or just submit a new idea/suggestion.
And like PPM, the State Tool allows you to simply run a command like state install <package-name> to add a dependency to your environment. The dependency (and its sub-dependencies, as well as any linked C libraries) will automatically be built in parallel by the ActiveState Platform, and then installed locally in your environment.
Perl vs ActivePerl. By default, ActiveState’s Perl 5.32 installs only the core Perl libraries and the State Tool. Any other module/dependency will need to be added separately. The State Tool supports importing both CPANfile and META.json files, and the ActiveState Platform will build all dependencies in parallel (or pull them cache, as appropriate), simplifying and speeding setup. But what if you don’t have a starting point for your project?
ActiveState’s Perl 5.32 supports a new concept: bundles, which are simply functional groups of Perl dependencies. For example, if you work with Catalyst or Mojolicious, you’ll want to import the Catalyst or Mojolicious bundle, which includes more than 50 of the most popular plugins for each framework. Similarly if you’re working with Windows, you can import the Win32 bundle. Or simply select all bundles to import hundreds of dependencies at once and create an installation similar to ActivePerl.
But our new ecosystem also offers some significant advantages over our old approach, including:
A Unified Toolchain. If your teams develop and deploy on multiple operating systems, your organization has to manage multiple toolchains in order to build, update and manage your Perl environments. In contrast, the State Tool delivers a consistent package management experience across Windows and Linux (Mac coming soon) so you only need one toolchain to support all your teams.
Virtual Environment Support. ActivePerl’s global, system-wide installation is not suitable for managing multiple Perl projects, which is today’s norm for many developers. To address this use case, the State Tool will automatically create a virtual environment for each of your projects, isolating dependencies and ensuring against conflicts.
Open Source Licensing. Perl 5.32 and all the dependencies you install with the State Tool are licensed under their original licenses. The ActivePerl proprietary license is no longer included.
Everything discussed in this blog post is available for free, without even requiring you to sign up for an ActiveState account. As a result, if you have an application that previously required your users to download and install ActivePerl, you should consider just embedding the State Tool so your users can get up and running quicker. The following command will download and install the State Tool, which will then download and install a copy of Perl 5.32:
At a Windows CMD prompt:
powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1'))) -activate-default ActiveState/Perl-5.32"
At a Linux command prompt:
sh <(curl -q https://platform.activestate.com/dl/cli/install.sh) --activate-default ActiveState/Perl-5.32
But if you do sign up for an ActiveState Platform account, you can unlock a wealth of productivity features that can significantly enhance your Perl experience, including:
- Revision control for each of your environments, including the ability to restore corrupted environments
- Shared environments that allow all members of your team to work with a single source of truth, ensuring consistency across dev, test and production environments
- And much more
Ready to get started? You can download your own version of ActiveState’s new Perl ecosystem for free from our Perl 5.32 page.