More languages

The languages without their own page, with their exact catalogue state as of 2026.35.22 (2026-08-25), verified against the live index. Three states exist, and they mean different things:

  • Published — resolvable by name, pullable, scanned. Runs today.
  • Declared — the image is listed in the signed payload but no tool is bound to it yet. kapsl --info <name> reports unknown tool; the name is reserved, the runtime is not runnable.
  • Examples only — a runnable example exists in the corpus (captured against the development catalogue), but the runtime is not in the signed catalogue at all.
LanguageStateNotesExample
Perl 5.40/5.42/5.44Publishedperl, perldoc, prove, cpan; lines @5.40/@5.42/@5.44perl-simple
ElixirExamples onlymix/Hex workflow documented; not in the signed catalogueelixir-simple, elixir-hex
Haskell (GHC)Examples onlyghc not in the signed cataloguehaskell-simple
Java (OpenJDK)Declaredopenjdk-jdk/openjdk-jre images declared, no java/mvn tool boundjava-maven-simple
Scala (sbt)Declaredsbt image declared, no tool boundscala-sbt-simple
R (r-project)Declaredr-project image declared, no R/Rscript tool bound; @renv provider documentedr-simple, r-renv
C# (dotnet)Examples onlydotnet not in the signed cataloguecsharp-dotnet-simple
LuaExamples onlylua/luarocks not in the signed catalogue; rockspecs must be passed explicitly (no auto-detectable canonical name)lua-simple, lua-luarocks
AnsibleDeclaredansible image declared; the galaxy provider is built in and is how collections are installed into an environmentansible-simple, ansible-galaxy

Perl: the one that runs, and a live scan gate

Perl is the only "more language" fully published: lines 5.40.5, 5.42.3, 5.44.0 with perl, perldoc, prove, and cpan as separate tools.

kapsl perl -e 'print "$^V\n"'
perl v5.44.0

It is also a good demonstration of the scan gate, because the older lines currently carry CRITICAL findings in the index's own data (CVE-2026-8376, CVE-2026-13221 on the 5.40 and 5.42 images; 5.44 is clean). At or above the configured prompt severity, a run asks — and with no terminal to ask on, it fails closed:

kapsl [email protected] -e 'print "hi\n"'
ERROR  Vulnerability scan requires review, but no terminal to ask on

On a TTY the same command shows the findings and offers continue/dismiss; in CI the choices are --skip-scan for a known-accepted state, or pinning the clean line. This is the security model working as designed — a vulnerability database is only as good as the gate that enforces it — but it is the kind of thing that reads as a bug on first encounter. See Scanning for the severities and the VEX path.

What "declared" and "examples only" buy you

Nothing you can run, today. The examples are still worth reading — they are captured, runnable-from-checkout transcripts of the intended shape (the elixir-hex example documents the @hex inline-package form; ansible-galaxy documents the two path gotchas the galaxy provider handles invisibly) — but a recipe that requires kapsl elixir or kapsl dotnet on a clean machine will fail with unknown tool until the corresponding publish lands. Check kapsl --info <name>; the index site shows declared images per project, and the catalogue's payload lists them.

JVM and friends

The JVM cluster — java-maven-simple, kotlin-gradle-simple, scala-sbt-simple, clojure-lein-simple — shares the compiled-language mechanics from the Rust and Go pages (measured ABI pin, build-tool capabilities, the toolchain-vs-built-binary split) on top of the declared OpenJDK images. None of the JVM tools are published yet; the examples run against the development catalogue.