NAME

Acme::CPANModules::XSVersions - List of Perl modules which have XS implementation or backend

VERSION

This document describes version 0.004 of Acme::CPANModules::XSVersions (from Perl distribution Acme-CPANModules-XSVersions), released on 2023-09-05.

SYNOPSIS

To install all XS versions of PP modules currently installed on your system:

% 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 version (JSON::XS) when it's available or fallback to the PP version (JSON::PP).

Additions much welcome.

ACME::CPANMODULES ENTRIES

Algorithm::Diff

Author: RJBS

XS module: Algorithm::Diff::XS

Algorithm::LUHN

Author: NEILB

XS module: Algorithm::LUHN_XS

Algorithm::PageRank

Author: XERN

XS module: Algorithm::PageRank::XS

Algorithm::RectanglesContainingDot

Author: SALVA

XS module: Algorithm::RectanglesContainingDot_XS

Bytes::Random

Author: JOHND

XS module: Bytes::Random::XS

Class::Accessor::Fast

Author: KASEI

XS module: Class::Accessor::Fast::XS

Class::C3

Author: HAARG

XS module: Class::C3::XS

Class::Load

Author: ETHER

XS module: Class::Load::XS

Convert::Bencode

Author: ORCLEV

XS module: Convert::Bencode_XS

Crypt::Passwd

Author: LUISMUNOZ

XS module: Crypt::Passwd::XS

Crypt::TEA_PP

Author: JAHIY

XS module: Crypt::TEA_XS

Crypt::XXTEA_PP

Author: JAHIY

XS module: Crypt::XXTEA_XS

DDC::PP

Author: MOOCOW

XS module: DDC::XS

Crypt::Skip32

Author: ESH

XS module: Crypt::Skip32::XS

Date::Calc

Author: STBEY

XS module: Date::Calc::XS

PP module: Date::Calc::PP

Directory::Iterator

Author: SANBEG

XS module: Directory::Iterator::XS

PP module: Directory::Iterator::PP

Encode

Author: DANKOGAI

XS module: Encode::XS

Encoding::FixLatin

Author: GRANTM

XS module: Encoding::FixLatin::XS

File::MMagic

Author: KNOK

XS module: File::MMagic::XS

Geo::Coordinates::UTM

Author: GRAHAMC

XS module: Geo::Coordinates::UTM::XS

Geo::Distance

Author: BLUEFEET

XS module: Geo::Distance::XS

Geo::Hash

Author: ANDYA

XS module: Geo::Hash::XS

HTTP::Headers::Fast

Author: TOKUHIROM

XS module: HTTP::Headers::Fast::XS

HTTP::Parser::XS::PP

Author: KAZUHO

XS module: HTTP::Parser::XS

Heap::Simple

Author: THOSPEL

XS module: Heap::Simple::XS

Image::Info

Author: SREZIC

XS module: Image::Info::XS

JSON

Author: ISHIGAKI

XS module: JSON::XS

PP module: JSON::PP

JSON::MaybeXS

Author: ETHER

XS module: Cpanel::JSON::XS

Language::Befunge::Vector

Author: JQUELIN

XS module: Language::Befunge::Vector::XS

Language::Befunge::Storage::Generic::Vec

Author: JQUELIN

XS module: Language::Befunge::Storage::Generic::Vec::XS

List::BinarySearch

Author: DAVIDO

XS module: List::BinarySearch::XS

List::Flatten

Author: OBRADOVIC

XS module: List::Flatten::XS

List::MoreUtils

Author: REHSACK

XS module: List::MoreUtils::XS

List::SomeUtils

Author: DROLSKY

XS module: List::SomeUtils::XS

List::Util

Author: PEVANS

XS module: List::Util::XS

List::UtilsBy

Author: PEVANS

XS module: List::UtilsBy::XS

Math::Derivative

Author: JGAMBLE

XS module: Math::Derivative_XS

Math::Gauss

Author: JANERT

XS module: Math::Gauss::XS

Math::Utils

Author: JGAMBLE

XS module: Math::Utils::XS

MaxMind::DB::Reader

Author: MAXMIND

XS module: MaxMind::DB::Reader::XS

Mojo::Base

Author: SRI

XS module: Mojo::Base::XS

Moo

Author: HAARG

XS module: Class::XSAccessor

Net::IP

Author: MANU

XS module: Net::IP::XS

Net::SNMP

Author: DTOWN

XS module: Net::SNMP::XS

Number::Closest

Author: ACCARDO

XS module: Number::Closest::XS

Object::Adhoc

Author: TOBYINK

XS module: Class::XSAccessor

Object::Accessor

Author: BINGOS

XS module: Object::Accessor::XS

Object::Tiny

Author: ETHER

XS module: Object::Tiny::XS

Object::Tiny::RW

Author: SCHWIGON

XS module: Object::Tiny::RW::XS

PPI

Author: OALDERS

XS module: PPI::XS

Package::Stash

Author: ETHER

XS module: Package::Stash::XS

Params::Validate

Author: DROLSKY

XS module: Params::Validate::XS

Path::Hilbert

Author: PWBENNETT

XS module: Path::Hilbert::XS

PerlX::ArraySkip

Author: TOBYINK

XS module: PerlX::ArraySkip::XS

PerlX::Maybe

Author: TOBYINK

XS module: PerlX::Maybe::XS

PPI

Author: OALDERS

XS module: PPI::XS

Protocol::Redis

Author: UNDEF

XS module: Protocol::Redis::XS

Readonly

Author: SANKO

XS module: Readonly::XS

Ref::Util

Author: ARC

XS module: Ref::Util::XS

Set::IntSpan::Fast

Author: ANDYA

XS module: Set::IntSpan::Fast::XS

Set::Product

Author: GRAY

XS module: Set::Product::XS

SOAP::WSDL::Deserializer::XSD

Author: SWALTERS

XS module: SOAP::WSDL::Deserializer::XSD_XS

Sort::Naturally

Author: BINGOS

XS module: Sort::Naturally::XS

String::Numeric

Author: CHANSEN

XS module: String::Numeric::XS

Template::Alloy

Author: RHANDOM

XS module: Template::Alloy::XS

Template::Stash

Author: ABW

XS module: Template::Stash::XS

Text::CSV

Author: ISHIGAKI

XS module: Text::CSV_XS

Text::Levenshtein::Damerau

Author: UGEXE

XS module: Text::Levenshtein::Damerau::XS

Time::Format

Author: ROODE

XS module: Time::Format_XS

Type::Params

Author: TOBYINK

XS module: Class::XSAccessor

Type::Tiny

Author: TOBYINK

XS module: Type::Tiny::XS

Tree::Object

Author: PERLANCAR

XS module: Tree::ObjectXS

URL::Encode

Author: CHANSEN

XS module: URL::Encode::XS

Unix::Uptime::BSD

Author: PIOTO

XS module: Unix::Uptime::BSD::XS

XML::CompactTree

Author: PAJAS

XS module: XML::CompactTree::XS

YAML::PP

Author: TINITA

XS module: YAML::XS

match::simple

Author: TOBYINK

XS module: match::simple::XS

FAQ

What is an Acme::CPANModules::* module?

An Acme::CPANModules::* module, like this module, contains just a list of module names that share a common characteristics. It is a way to categorize modules and document CPAN. See Acme::CPANModules for more details.

What are ways to use this Acme::CPANModules module?

Aside from reading this Acme::CPANModules module's POD documentation, you can install all the listed modules (entries) using cpanm-cpanmodules script (from App::cpanm::cpanmodules distribution):

% cpanm-cpanmodules -n XSVersions

Alternatively you can use the cpanmodules CLI (from App::cpanmodules distribution):

% cpanmodules ls-entries XSVersions | cpanm -n

or Acme::CM::Get:

% perl -MAcme::CM::Get=XSVersions -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n

or directly:

% perl -MAcme::CPANModules::XSVersions -E'say $_->{module} for @{ $Acme::CPANModules::XSVersions::LIST->{entries} }' | cpanm -n

This Acme::CPANModules module also helps lcpan produce a more meaningful result for lcpan related-mods command when it comes to finding related modules for the modules listed in this Acme::CPANModules module. See App::lcpan::Cmd::related_mods for more details on how "related modules" are found.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Acme-CPANModules-XSVersions.

SOURCE

Source repository is at https://github.com/perlancar/perl-Acme-CPANModules-XSVersions.

SEE ALSO

Acme::CPANModules - about the Acme::CPANModules namespace

cpanmodules - CLI tool to let you browse/view the lists

Missing::XS

AUTHOR

perlancar <perlancar@cpan.org>

CONTRIBUTING

To contribute, you can send patches by email/via RT, or send pull requests on GitHub.

Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:

% prove -l

If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.

COPYRIGHT AND LICENSE

This software is copyright (c) 2023, 2022, 2019 by perlancar <perlancar@cpan.org>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Acme-CPANModules-XSVersions

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.