HUMAN UNDERSTANDABLE, MACHINE WRITABLE.
vary
A readable, statically-typed programming
language that measures test strength.
Install the toolchain manager and latest compiler. Vary is currently in alpha. Full install docs →
curl -fsSL https://github.com/ccollicutt/vary/releases/latest/download/install.sh | sh
Features
Why varylang
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.
See it in action
What Vary looks like
Testing built into the language
Tests are not bolted on through a framework. test blocks and observe assertions are part of the language. You write checks next to the code they check.
Readable syntax
Vary keeps the clarity developers like in Python while adding static typing and compile-time checks. No semicolons, no ceremony.
Mistakes caught before runtime
Static typing, null safety, and compile-time analysis flag errors before the program runs. You get those checks without the code getting verbose.
Core ideas
What makes Vary different
From the blog