About

What we ship

Distributions

Vary ships in four formats. All include the compiler, bundled JRE, and everything needed to write, run, test, format, and mutation-test Vary code.

DistributionPlatformInstall guide
varyupLinux x64, Windows x64, macOS (arm64/x64)varyup
Docker imageAnyDocker
Linux tar.gzLinux x64Linux
macOS tar.gzmacOS arm64, macOS x64macOS
Windows ZIPWindows x64Windows

varyup is the recommended way to install and manage toolchains. It is a single binary available from the GitHub Releases page. It downloads Vary toolchains, manages multiple versions side-by-side, and selects the active version globally or per-project.

What ships in the Docker image

The Docker image (ghcr.io/ccollicutt/vary:latest) is built on Eclipse Temurin 25 JRE.

ComponentPath in imageWhat it is
Vary compiler JAR/opt/vary/vary.jarFat JAR containing the compiler, test runner, formatter, mutation engine, and language server
vary wrapper/usr/local/bin/varyShell script that loads JVM args from conf/ and runs java -jar /opt/vary/vary.jar
JVM configuration/opt/vary/conf/JVM argument files (vary.jvmargs, vary.jvmargs.http, vary.jvmargs.repl)
Standard library/opt/vary/stdlib/Built-in Vary modules (collections, json, math, text, fs, http, etc.)
Examples/opt/vary/examples/Sample programs and test files
VS Code extension/opt/vary/vscode-vary/Extension source with TextMate grammar and LSP client
LLM skill/opt/vary/llm-skill/Language reference files for AI coding assistants
Eclipse Temurin 25 JREsystemJava runtime that executes everything

What ships in the Linux tar.gz

ComponentPathWhat it is
varyvaryShell launcher that loads JVM args from conf/ and runs vary.jar
Vary compiler JARvary.jarFat JAR (same as Docker image)
Eclipse Temurin 25 JREjre/Bundled Java runtime
JVM configurationconf/JVM argument files
Standard librarystdlib/Built-in Vary modules
Examplesexamples/Sample programs and test files
VS Code extensionvscode-vary/VSIX extension file
LLM skillllm-skill/Language reference files for AI coding assistants
LicenceLICENSE.txtCompiler licence
Third-party noticesTHIRD_PARTY_NOTICES.txtTemurin JRE licence

What ships in the Windows ZIP

ComponentPathWhat it is
vary.exevary.exeNative Go launcher that loads JVM args from conf\ and runs vary.jar
Vary compiler JARvary.jarFat JAR (same as Docker image)
Eclipse Temurin 25 JREjre\Bundled Java runtime
JVM configurationconf\JVM argument files
Standard librarystdlib\Built-in Vary modules
Examplesexamples\Sample programs and test files
VS Code extensionvscode-vary\VSIX extension file
LLM skillllm-skill\Language reference files for AI coding assistants
LicenceLICENSE.txtCompiler licence
Third-party noticesTHIRD_PARTY_NOTICES.txtTemurin JRE licence

Vary licensing

ComponentLicenceDetails
Compiler, CLI, runtimeProprietary (free to use)Free for personal, educational, and commercial use. Cannot be redistributed or reverse engineered. Code you write with it is yours. Licence terms may change between releases.
Standard libraryMIT/opt/vary/stdlib/LICENSE (Docker image)
ExamplesMIT/opt/vary/examples/LICENSE (Docker image)
LLM skillMIT/opt/vary/llm-skill/LICENSE (Docker image)
VS Code extensionMIT/opt/vary/vscode-vary/LICENSE (Docker image)
varyup toolchain managerMITvaryup/LICENSE in the source repository

The full licence for the compiler is at /opt/vary/LICENSE inside the Docker image, LICENSE.txt in the tar.gz/ZIP, and in the root of the project repository.

Third-party licences

The compiler is built on open-source libraries. Everything bundled in the distributions and its licence is listed below.

Java runtime

ComponentLicenceNotes
Eclipse Temurin 25GPL 2.0 with Classpath ExceptionThe Classpath Exception means applications running on the JVM (including Vary programs) are not subject to GPL requirements. This is the same licence used by OpenJDK.

Compiler dependencies (inside the fat JAR)

These are bundled into vary.jar via the Shadow plugin.

LibraryVersionLicenceWhat it does
Kotlin2.3.0Apache 2.0Language the compiler is written in
ASM9.8BSD 3-ClauseJVM bytecode generation and manipulation
Clikt4.2.1Apache 2.0Command-line argument parsing
LSP4J0.21.1Eclipse Public Licence 2.0Language Server Protocol implementation
Kotlin Coroutines1.7.3Apache 2.0Async support for the language server
JLine3.25.1BSD 3-ClauseTerminal handling and REPL support
Jackson2.17.2Apache 2.0JSON processing
SQLite JDBC3.45.1.0Apache 2.0SQLite database driver (bundled native binaries)
SnakeYAML2.2Apache 2.0YAML configuration parsing
Flexmark0.64.8BSD 2-ClauseMarkdown processing
Pebble3.2.2BSD 3-ClauseTemplate engine
PMD CPD7.7.0BSD 4-ClauseCopy-paste detection for code duplication analysis

Quarkus framework (inside the fat JAR)

Used when running HTTP services via expose ... via http. All Quarkus components are Apache 2.0 licensed.

LibraryVersionWhat it does
Quarkus Core3.31.1Application framework and lifecycle
Quarkus Bootstrap3.31.1Application bootstrap and class loading
Quarkus REST3.31.1HTTP request handling
Quarkus REST Jackson3.31.1JSON serialization for REST endpoints
Quarkus SmallRye OpenAPI3.31.1OpenAPI spec generation
Quarkus Swagger UI3.31.1Interactive API documentation
Quarkus Vert.x HTTP3.31.1Underlying HTTP server
Quarkus Arc3.31.1Dependency injection
Jakarta WS RS API3.1.0REST endpoint annotations (EPL 2.0)
Jakarta CDI API4.0.1Dependency injection API (Apache 2.0)

varyup dependencies

varyup is a standalone Go binary. These libraries are compiled into the varyup executable.

LibraryVersionLicenceWhat it does
Cobra1.8.1Apache 2.0Command-line interface framework
go-toml2.2.3MITTOML configuration parsing
x/sys0.43.0BSD 3-ClauseFile locking (Unix and Windows)

Licence summary

Licence typeComponents
Apache 2.0Kotlin, Clikt, Coroutines, Jackson, SQLite JDBC, SnakeYAML, Quarkus (all), Jakarta CDI, Cobra
MITgo-toml, varyup, VS Code extension, stdlib, examples, LLM skill
BSD 3-ClauseASM, JLine, Pebble, x/sys
BSD 4-ClausePMD CPD
BSD 2-ClauseFlexmark
Eclipse Public Licence 2.0LSP4J, Jakarta WS RS
GPL 2.0 + Classpath ExceptionEclipse Temurin JRE

The GPL 2.0 + Classpath Exception on the JRE does not affect code that runs on the JVM. This is the standard licence for OpenJDK and is used by virtually every Java application in production.

← Ecosystem