maven:3-eclipse-temurin-25, pinned by digest in Containerfile, plus make, python3, and unzip
Native CI
actions/setup-java (Temurin 25, Maven repository cache); Maven from each project's wrapper
make toolchain verifies both environments. It checks that every tool is on the release line above. The Maven Enforcer also fails the build on any other Maven or Java release line.
A project is implemented once it is listed in IMPLEMENTED in the repository's root
Makefile. CI then builds, lints, and tests it in the container and natively on Linux,
macOS, and Windows.
The jar's #! line is #!/usr/bin/env -S LC_ALL=C.UTF-8 java -jar on Linux and macOS, so
the JVM decodes UTF-8 arguments under the runner's empty environment (#!/usr/bin/env -S java
-jar on Windows).
On Windows the programs re-read the UTF-16 command line (GetCommandLineW,
CommandLineToArgvW) through the FFM API, so non-ASCII arguments arrive intact outside the
ANSI code page.
NFR-02
(CONV-31):
at most 2.3 MiB above the JVM baseline (java -jar empty.jar, 37.8 MiB); no JVM tuning
flags.