A compiled language that's actually approachable. Compiles to C, ships a single binary, reads like pseudocode.
do main() {
println("Hello, World!")
}
import @json
#json
const User struct {
name string
age int
}
do main() {
mut u = User{name: "Marshall", age: 31}
println(json.stringify(u))
}
// Output: {"name":"Marshall","age":31}
import @io
do main() {
mut content, err = io.read_file("config.json")
if err != nil {
eprintln("Failed: ${err}")
exit(1)
}
println(content)
}
- Readable syntax —
for_each,as_long_as,otherwise,when/is,do function_name(). Code that reads like it runs. - Ample Standard Library —
@strings,@arrays,@maps,@json@http,@server, and more! - Compiles to C — native speed, single binary, no runtime, no VM.
arrays · strings · maps · math · time · random · json · io · os
http · server · crypto · encoding · uuid · bytes · binary · sqlite
regex · csv · net · threads · sync · channels · mem · atomic · fmt · strconv
Download the latest release for your platform from the Releases page. No dependencies required.
Requires Go 1.23+ and a C compiler (gcc or clang).
git clone https://github.com/SchoolyB/EZ.git
cd EZ
make build
make installNote: EZ currently supports macOS and Linux only.
| Command | Description | Example |
|---|---|---|
ez <file> |
Compile and run | ez main.ez |
ez build <file> -o <name> |
Compile to a distributable binary | ez build main.ez -o myapp |
ez check <file> |
Type check without compiling | ez check main.ez |
ez watch <file> |
Watch for changes, re-run on save | ez watch main.ez |
ez fmt <path> |
Format .ez source files in place |
ez fmt . or ez fmt ./... |
ez fmt --check <path> |
Check formatting without modifying files (CI gate) | ez fmt --check ./... |
ez doc <file> |
Generate docs from #doc attributes |
ez doc main.ez |
ez pz <name> |
Scaffold a new project | ez pz myproject |
ez report |
Print system info for bug reports | ez report |
ez update |
Update to the latest stable version | ez update |
ez update --pre |
Update to the latest pre-release (alpha/beta) | ez update --pre |
ez install <version> |
Install a specific version by semver | ez install 2.5.0 |
ez version |
Show version info | ez version |
ez man |
Show help for the man command | ez man |
ez man <module> |
Show info about a stdlib module | ez man strings |
ez man <function> |
Show info about a stdlib function | ez man to_upper |
ez man <struct> |
Show info about a stdlib struct type | ez man HttpRequest |
ez update # latest stable
ez update --pre # latest pre-release
ez install 2.5.0 # pin to an exact versionez update checks for new versions, shows the changelog, and upgrades both the ez CLI and the compiler. Pass --pre to pick up the latest alpha, beta, or rc. Use ez install <version> to install an exact version by semver — downgrades and pre-release tags (e.g. 3.0.0-beta.2) are supported.
EZ is in active development. The language is usable for personal projects and dev tools. Breaking changes may occur frequently.
MIT License - Copyright (c) 2025-Present Marshall A Burns
See LICENSE for details.
Thank you to everyone who has contributed to EZ!























