Acme-CPANModules-XSVersions
view release on metacpan or search on metacpan
% perl -MAcme::CM::Get=XSVersions -MModule::Installed::Tiny=module_installed -E'for (@{$LIST->{entries}}) {
next unless module_installed($_->{module}) || $_->{pp_module} && module_installed($_->{pp_module});
say $_->{xs_module};
}' | cpanm -n
(Note: To run the above snippet, you need to install
Acme::CPANModules::XSVersions which you're reading right now, as well as
Acme::CM::Get, Module::Installed::Tiny, and cpanm.)
DESCRIPTION
This list catalogs (pure-) Perl modules that have their XS counterparts
("fast versions"), usually in separate distributions so the installation
of the XS version is optional. The two versions of the modules provide
the same interface. When the two modules are different in interface,
they are not listed here.
Usually authors use "::XS" or "_XS" suffix for the XS version (for
example, Type::Tiny is the PP/pure-perl version and Type::Tiny::XS is
the XS version). Or sometimes the other way around is done, a module is
an XS module and another with suffix "::PP" or "_PP" is the PP version.
And often a module like "JSON" is one that can automatically use the XS
lib/Acme/CPANModules/XSVersions.pm view on Meta::CPAN
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-09-05'; # DATE
our $DIST = 'Acme-CPANModules-XSVersions'; # DIST
our $VERSION = '0.004'; # VERSION
our $LIST = {
summary => 'List of Perl modules which have XS implementation or backend',
description => <<'_',
This list catalogs (pure-) Perl modules that have their XS counterparts ("fast
versions"), usually in separate distributions so the installation of the XS
version is optional. The two versions of the modules provide the same interface.
When the two modules are different in interface, they are not listed here.
Usually authors use `::XS` or `_XS` suffix for the XS version (for example,
<pm:Type::Tiny> is the PP/pure-perl version and <pm:Type::Tiny::XS> is the XS
version). Or sometimes the other way around is done, a module is an XS module
and another with suffix `::PP` or `_PP` is the PP version. And often a module
like `JSON` is one that can automatically use the XS version (`JSON::XS`) when
it's available or fallback to the PP version (`JSON::PP`).
lib/Acme/CPANModules/XSVersions.pm view on Meta::CPAN
next unless module_installed($_->{module}) || $_->{pp_module} && module_installed($_->{pp_module});
say $_->{xs_module};
}' | cpanm -n
(Note: To run the above snippet, you need to install
L<Acme::CPANModules::XSVersions> which you're reading right now, as well as
L<Acme::CM::Get>, L<Module::Installed::Tiny>, and L<cpanm>.)
=head1 DESCRIPTION
This list catalogs (pure-) Perl modules that have their XS counterparts ("fast
versions"), usually in separate distributions so the installation of the XS
version is optional. The two versions of the modules provide the same interface.
When the two modules are different in interface, they are not listed here.
Usually authors use C<::XS> or C<_XS> suffix for the XS version (for example,
L<Type::Tiny> is the PP/pure-perl version and L<Type::Tiny::XS> is the XS
version). Or sometimes the other way around is done, a module is an XS module
and another with suffix C<::PP> or C<_PP> is the PP version. And often a module
like C<JSON> is one that can automatically use the XS version (C<JSON::XS>) when
it's available or fallback to the PP version (C<JSON::PP>).
( run in 1.742 second using v1.01-cache-2.11-cpan-49f99fa48dc )