NAME
    Acme::CPANModules::XSVersions - List of XS versions of Perl modules

VERSION
    This document describes version 0.003 of Acme::CPANModules::XSVersions
    (from Perl distribution Acme-CPANModules-XSVersions), released on
    2022-03-18.

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 - Compute `intelligent' differences between two
        files / lists

        Author: RJBS <https://metacpan.org/author/RJBS>

    *   Algorithm::LUHN - Calculate the Modulus 10 Double Add Double
        checksum

        Author: NEILB <https://metacpan.org/author/NEILB>

    *   Algorithm::PageRank - Calculate PageRank in Perl

        Author: XERN <https://metacpan.org/author/XERN>

    *   Algorithm::RectanglesContainingDot - find rectangles containing a
        given dot

        Author: SALVA <https://metacpan.org/author/SALVA>

    *   Bytes::Random - Perl extension to generate random bytes.

        Author: JOHND <https://metacpan.org/author/JOHND>

    *   Class::Accessor::Fast - Faster, but less expandable, accessors

        Author: KASEI <https://metacpan.org/author/KASEI>

    *   Class::C3 - A pragma to use the C3 method resolution order algorithm

        Author: HAARG <https://metacpan.org/author/HAARG>

    *   Class::Load - A working (require "Class::Name") and more

        Author: ETHER <https://metacpan.org/author/ETHER>

    *   Convert::Bencode - Functions for converting to/from bencoded strings

        Author: ORCLEV <https://metacpan.org/author/ORCLEV>

    *   Crypt::Passwd - Perl wrapper around the UFC Crypt

        Author: LUISMUNOZ <https://metacpan.org/author/LUISMUNOZ>

    *   Crypt::TEA_PP - Pure Perl Implementation of the Tiny Encryption
        Algorithm

        Author: JAHIY <https://metacpan.org/author/JAHIY>

    *   Crypt::XXTEA_PP - Pure Perl Implementation of Corrected Block Tiny
        Encryption Algorithm

        Author: JAHIY <https://metacpan.org/author/JAHIY>

    *   DDC::PP - pure-perl DDC::XS clone: constants

        Author: MOOCOW <https://metacpan.org/author/MOOCOW>

    *   Crypt::Skip32 - 32-bit block cipher based on Skipjack

        Author: ESH <https://metacpan.org/author/ESH>

    *   Date::Calc

        Author: STBEY <https://metacpan.org/author/STBEY>

    *   Directory::Iterator - Simple, efficient recursive directory listing

        Author: SANBEG <https://metacpan.org/author/SANBEG>

    *   Encode - character encodings in Perl

        Author: DANKOGAI <https://metacpan.org/author/DANKOGAI>

    *   Encoding::FixLatin - takes mixed encoding input and produces UTF-8
        output

        Author: GRANTM <https://metacpan.org/author/GRANTM>

    *   File::MMagic - Guess file type

        Author: KNOK <https://metacpan.org/author/KNOK>

    *   Geo::Coordinates::UTM - Perl extension for Latitiude Longitude
        conversions.

        Author: GRAHAMC <https://metacpan.org/author/GRAHAMC>

    *   Geo::Distance - Calculate distances and closest locations.
        (DEPRECATED)

        Author: BLUEFEET <https://metacpan.org/author/BLUEFEET>

    *   Geo::Hash - Encode / decode geohash.org locations.

        Author: ANDYA <https://metacpan.org/author/ANDYA>

    *   HTTP::Headers::Fast - faster implementation of HTTP::Headers

        Author: TOKUHIROM <https://metacpan.org/author/TOKUHIROM>

    *   HTTP::Parser::XS::PP

        Author: KAZUHO <https://metacpan.org/author/KAZUHO>

    *   Heap::Simple - Fast and easy to use classic heaps

        Author: THOSPEL <https://metacpan.org/author/THOSPEL>

    *   Image::Info - Extract meta information from image files

        Author: SREZIC <https://metacpan.org/author/SREZIC>

    *   JSON::PP - JSON::XS compatible pure-Perl module.

        Author: ISHIGAKI <https://metacpan.org/author/ISHIGAKI>

    *   Language::Befunge::Vector - an opaque, N-dimensional vector class

        Author: JQUELIN <https://metacpan.org/author/JQUELIN>

    *   Language::Befunge::Storage::Generic::Vec - a generic N-dimensional
        LaheySpace

        Author: JQUELIN <https://metacpan.org/author/JQUELIN>

    *   List::BinarySearch - Binary Search within a sorted array.

        Author: DAVIDO <https://metacpan.org/author/DAVIDO>

    *   List::Flatten - Interpolate array references in a list

        Author: OBRADOVIC <https://metacpan.org/author/OBRADOVIC>

    *   List::MoreUtils - Provide the stuff missing in List::Util

        Author: REHSACK <https://metacpan.org/author/REHSACK>

    *   List::SomeUtils - Provide the stuff missing in List::Util

        Author: DROLSKY <https://metacpan.org/author/DROLSKY>

    *   List::Util - A selection of general-utility list subroutines

        Author: PEVANS <https://metacpan.org/author/PEVANS>

    *   List::UtilsBy - higher-order list utility functions

        Author: PEVANS <https://metacpan.org/author/PEVANS>

    *   Math::Derivative - Numeric 1st and 2nd order differentiation

        Author: JGAMBLE <https://metacpan.org/author/JGAMBLE>

    *   Math::Gauss - Gaussian distribution function and its inverse

        Author: JANERT <https://metacpan.org/author/JANERT>

    *   Math::Utils - Useful mathematical functions not in Perl.

        Author: JGAMBLE <https://metacpan.org/author/JGAMBLE>

    *   MaxMind::DB::Reader - Read MaxMind DB files and look up IP addresses

        Author: MAXMIND <https://metacpan.org/author/MAXMIND>

    *   Mojo::Base - Minimal base class for Mojo projects

        Author: SRI <https://metacpan.org/author/SRI>

    *   Net::IP - Perl extension for manipulating IPv4/IPv6 addresses

        Author: MANU <https://metacpan.org/author/MANU>

    *   Net::SNMP - Object oriented interface to SNMP

        Author: DTOWN <https://metacpan.org/author/DTOWN>

    *   Number::Closest - Find number(s) closest to a number in a list of
        numbers

        Author: ACCARDO <https://metacpan.org/author/ACCARDO>

    *   Object::Tiny - Class building as simple as it gets

        Author: ETHER <https://metacpan.org/author/ETHER>

    *   Object::Tiny::RW - Class building as simple as it gets (with rw
        accessors)

        Author: SCHWIGON <https://metacpan.org/author/SCHWIGON>

    *   PPI - Parse, Analyze and Manipulate Perl (without perl)

        Author: OALDERS <https://metacpan.org/author/OALDERS>

    *   Package::Stash - Routines for manipulating stashes

        Author: ETHER <https://metacpan.org/author/ETHER>

    *   Params::Validate - Validate method/function parameters

        Author: DROLSKY <https://metacpan.org/author/DROLSKY>

    *   Path::Hilbert - A no-frills converter between 1D and 2D spaces using
        the Hilbert curve

        Author: PWBENNETT <https://metacpan.org/author/PWBENNETT>

    *   PerlX::ArraySkip - sub { shift; @_ }

        Author: TOBYINK <https://metacpan.org/author/TOBYINK>

    *   PerlX::Maybe - return a pair only if they are both defined

        Author: TOBYINK <https://metacpan.org/author/TOBYINK>

    *   Protocol::Redis - Redis protocol parser/encoder with asynchronous
        capabilities.

        Author: UNDEF <https://metacpan.org/author/UNDEF>

    *   Readonly - Facility for creating read-only scalars, arrays, hashes

        Author: SANKO <https://metacpan.org/author/SANKO>

    *   Ref::Util - Utility functions for checking references

        Author: ARC <https://metacpan.org/author/ARC>

    *   Set::IntSpan::Fast - Fast handling of sets containing integer spans.

        Author: ANDYA <https://metacpan.org/author/ANDYA>

    *   Set::Product - generates the cartesian product of a set of lists

        Author: GRAY <https://metacpan.org/author/GRAY>

    *   SOAP::WSDL::Deserializer::XSD - Deserializer SOAP messages into
        SOAP::WSDL::XSD::Typelib:: objects

        Author: SWALTERS <https://metacpan.org/author/SWALTERS>

    *   Sort::Naturally

        Author: BINGOS <https://metacpan.org/author/BINGOS>

    *   String::Numeric - Determine whether a string represents a numeric
        value

        Author: CHANSEN <https://metacpan.org/author/CHANSEN>

    *   Template::Alloy

        Author: RHANDOM <https://metacpan.org/author/RHANDOM>

    *   Template::Stash - Magical storage for template variables

        Author: ATOOMIC <https://metacpan.org/author/ATOOMIC>

    *   Text::CSV - comma-separated values manipulator (using XS or
        PurePerl)

        Author: ISHIGAKI <https://metacpan.org/author/ISHIGAKI>

    *   Text::Levenshtein::Damerau - Damerau Levenshtein edit distance.

        Author: UGEXE <https://metacpan.org/author/UGEXE>

    *   Time::Format - Easy-to-use date/time formatting.

        Author: ROODE <https://metacpan.org/author/ROODE>

    *   Type::Tiny - tiny, yet Moo(se)-compatible type constraint

        Author: TOBYINK <https://metacpan.org/author/TOBYINK>

    *   Tree::Object - Generic tree objects

        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    *   URL::Encode

        Author: CHANSEN <https://metacpan.org/author/CHANSEN>

    *   Unix::Uptime::BSD - BSD implementation of Unix::Uptime (for Darwin,
        DragonFly, and *BSD)

        Author: PIOTO <https://metacpan.org/author/PIOTO>

    *   XML::CompactTree - builder of compact tree structures from XML
        documents

        Author: PAJAS <https://metacpan.org/author/PAJAS>

    *   YAML::PP - YAML 1.2 processor

        Author: TINITA <https://metacpan.org/author/TINITA>

    *   match::simple - simplified clone of smartmatch operator

        Author: TOBYINK <https://metacpan.org/author/TOBYINK>

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

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, and sometimes one or two
    other Dist::Zilla plugin and/or Pod::Weaver::Plugin. Any additional
    steps required beyond that are considered a bug and can be reported to
    me.

COPYRIGHT AND LICENSE
    This software is copyright (c) 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-XSVe
    rsions>

    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.

