Skip to content

SchoolyB/EZ

Repository files navigation

Flip - EZ Mascot

EZ

A compiled language that's actually approachable. Compiles to C, ships a single binary, reads like pseudocode.

Programming made EZ.

Learn More About EZ

CI CodeQL Security Scan


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)
}

What makes EZ different

  • Readable syntaxfor_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.

Standard Library

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


Install

Binary download (recommended)

Download the latest release for your platform from the Releases page. No dependencies required.

Build from source

Requires Go 1.23+ and a C compiler (gcc or clang).

git clone https://github.com/SchoolyB/EZ.git
cd EZ
make build
make install

Note: EZ currently supports macOS and Linux only.


Commands

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

Updating

ez update              # latest stable
ez update --pre        # latest pre-release
ez install 2.5.0       # pin to an exact version

ez 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.


Learn More

Tooling


Status

EZ is in active development. The language is usable for personal projects and dev tools. Breaking changes may occur frequently.


License

MIT License - Copyright (c) 2025-Present Marshall A Burns

See LICENSE for details.


Contributors

Thank you to everyone who has contributed to EZ!

akamikado CobbCoding1 CFFinch62 Aryan-Shrivastva arjunpathak072 deepika1214 blackgirlbytes majiayu000 prjctimg jaideepkathiresan Abhishek022001 Scanf-s HCH1212 elect0 jgafnea madhav-murali preettrank53 TechLateef dtee1 SAY-5 mvanhorn kas2804 su-s2008