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
Via server JAR/opt/vary/via.jarFat JAR for the Via self-hosted application server (operator binary)
via wrapper/usr/local/bin/viaOperator launcher that runs the Via server 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)
viaviaOperator launcher for the Via self-hosted application server
Via server JARvia.jarFat JAR for the Via server
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

The Via self-hosted application server is a Linux-only operator tool, so it ships only in the Docker image and Linux tar.gz - not in the Windows ZIP or macOS tar.gz.

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.6Apache 2.0YAML configuration parsing
Flexmark0.64.8BSD 2-ClauseMarkdown processing
Pebble3.2.2BSD 3-ClauseTemplate engine
PMD CPD7.22.0BSD 4-ClauseCopy-paste detection for code duplication analysis

HTTP runtime

Used when running HTTP services via expose ... via http and the declarative api/service DSL. The Vary HTTP runtime owns route metadata, authentication, CSRF, sessions, and API token verification; application code never imports these libraries directly.

LibraryVersionLicenceWhat it does
Javalin7.2.0Apache 2.0Embedded HTTP transport for generated Vary route metadata
pac4j6.4.1Apache 2.0Authentication and authorization core
pac4j-oidc6.4.1Apache 2.0OIDC Authorization Code + PKCE client
Nimbus JOSE/JWT10.8Apache 2.0JWT/JWS/JWK parsing, signing, and verification
OAuth2/OIDC SDK11.37Apache 2.0OIDC discovery, token requests, and userinfo

varyup dependencies

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

LibraryVersionLicenceWhat it does
Cobra1.10.2Apache 2.0Command-line interface framework
go-toml2.2.4MITTOML configuration parsing
sigstore-go1.1.4Apache 2.0Sigstore signature verification for downloaded toolchains
x/sys0.43.0BSD 3-ClauseFile locking (Unix and Windows)

Licence summary

Licence typeComponents
Apache 2.0Kotlin, Clikt, Coroutines, Jackson, SQLite JDBC, SnakeYAML, Javalin, pac4j, pac4j-oidc, Nimbus JOSE/JWT, OAuth2/OIDC SDK, Cobra, sigstore-go
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
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