zef, META6.json and Distributions

41.1 Using zef

Ecosystem sites: raku.land (module directory), the zef ecosystem (publishing with fez), and the legacy p6c/CPAN ecosystems.

zef install JSON::Fast            # install a module
zef install Cro                   # install the Cro web framework
zef install --deps-only .         # install the dependencies of the current distribution
zef search CSV                    # search the ecosystem
zef info JSON::Fast
zef list --installed
zef upgrade
zef uninstall Some::Module
zef test .                        # run a distribution's tests
zef install ./my-dist             # install from a local directory

41.2 META6.json

{
  "name": "Math::Utils",
  "description": "Handy math utilities",
  "version": "0.1.0",
  "auth": "zef:yourname",
  "raku": "6.d",
  "license": "Artistic-2.0",
  "authors": ["Your Name <[email protected]>"],
  "provides": {
    "Math::Utils": "lib/Math/Utils.rakumod"
  },
  "depends": ["JSON::Fast"],
  "test-depends": ["Test::META"],
  "resources": ["data/primes.txt"],
  "tags": ["math"],
  "source-url": "https://github.com/yourname/raku-math-utils.git"
}
Math-Utils/
├── META6.json
├── lib/Math/Utils.rakumod
├── bin/math-utils              # executable scripts installed to PATH
├── t/01-basic.rakutest
├── resources/data/primes.txt   # accessed with %?RESOURCES<data/primes.txt>
├── README.md
├── Changes
└── LICENSE
zef install App::Mi6 fez
mi6 new Math::Utils               # scaffold a distribution
mi6 test                          # run tests
fez register && fez login
fez upload                        # publish to the zef ecosystem (or: mi6 release)

41.3 Notable Modules

Cro, Humming-Bird, Air, Bailador (older), HTTP::UserAgent, Cro::HTTP::Client, HTTP::Tiny

JSON::Fast, JSON::Class, Text::CSV, YAMLish, LibXML, TOML, Data::Dump::Tree

DBIish (SQLite, PostgreSQL, MySQL, Oracle), Red (ORM), DB::Pg, DB::SQLite, Redis

Getopt::Long, Terminal::ANSIColor, Terminal::Print, Term::ReadKey

Template::Mustache, Template6, Cro::WebApp templates Inline::Perl5, Inline::Python, NativeCall (core), NativeHelpers::Blob

Test (core), Test::Mock, Test::META, Test::When Pod::To::HTML/Markdown, Grammar::Tracer, Grammar::Debugger, Math::Matrix, Text::Table::Simple, Digest::MD5, Digest::SHA1::Native, OpenSSL, Base64

Data::Reshapers, Math::Polynomial, Stats, Jupyter kernel (Jupyter::Kernel)