Skip to content

Why I Built Wyn

October 2025

I kept switching languages. Python for scripts, Go for servers, C for performance, Bash for glue. Every project meant picking a language, setting up tooling, remembering which ecosystem does what.

I wanted one language that could handle a CLI tool, a web server, a data pipeline, and a system utility without reaching for something else. Not a language that's best at one thing — a language that's good enough at everything.

So I started building Wyn.

The design constraints

Three rules from day one:

  1. Compiles to a single binary. No runtime, no VM, no interpreter. Copy the file to a server and run it.
  2. Batteries included. HTTP server, SQLite, JSON, file I/O, crypto — all in the standard library. No package manager needed for basic tasks.
  3. Readable by default. Curly braces, static types, no semicolons. If you know any C-family language, you can read Wyn.

How it works

Wyn compiles to C, then uses TCC (for fast iteration, ~260ms) or your system compiler (for optimized release builds). The generated C is straightforward — no garbage collector, no runtime overhead. Your program is just C with a thin standard library.

wyn
fn main() -> int {
    var server = Http.listen(8080)
    println("Listening on :8080")
    while true {
        var req = Http.accept(server)
        Http.respond(req, 200, "hello")
    }
    return 0
}

Build it: wyn build server.wyn -o server --release. The binary is ~35KB. Deploy it anywhere.

What I use it for

I've been using Wyn for my own projects for the past year. A monitoring dashboard, a log parser, a package registry, various CLI tools. The experience of writing the tool, building it, and deploying it in one language — without Docker, without dependency management, without a build system — is something I hadn't felt since writing C in the 90s, except now with a real standard library.

Try it

bash
curl -fsSL https://wynlang.com/install.sh | sh

Or visit wynlang.com/playground to try it in the browser.

MIT License