Vary
A readable, statically-typed programming language that measures test strength.
Why Vary
A lie detector for tests. Tests can lie. Mutation testing exposes the ones that do. vary mutate shows which tests are weak, which mutations survived, and exactly what to fix.
Contracts and assertions. Contracts (in / out) declare what a function expects and what it promises. observe assertions check behaviour at runtime. Both are part of the language, not annotations you bolt on.
One CLI for the entire workflow. Run, check, test, format, and mutate from a single binary. Everything ships with the compiler. No plugins or extra tools required. Get started in minutes.
Fast JVM execution. Vary compiles to JVM bytecode and runs on any JVM. Mutation testing uses bytecode patching, so mutants run without recompiling.
Recent Articles
- What's new in Vary v147-alpha.1 — v147-alpha.1 adds Via, an early-alpha application server system for Vary apps. It also ships declarative API and persistence infrastructure, managed SQLite bindings, Javalin-backed HTTP service jars with OpenAPI output, and stronger Via deploy diagnostics.
- Introducing Via secrets and config — Via separates plain runtime config from secrets. Apps declare the secret names they need, the runner gives each instance a short-lived workload token, and the config server returns values only when the token, app, deploy, instance, and declared secret name all match.
- Golden Path: Install Via and the Echo Server — Unpack echo.zip to a temporary workspace, install and initialize Via, create the echo app/domain, copy examples/echo to a clean temporary Git repo, then run target doctor, preflight, deploy once, CLI smoke, and direct HTTP smoke with --apply-manifest.
- What Via Learns from Heroku — Heroku's best idea was everything around the source push: build, release, config, runtime, and logs owned by the platform. Via keeps that shape, but makes
vary app deploy the command people use.