Skip to content

Wyn v1.10: The Quality Release

v1.10 focuses on what matters most: speed, correctness, and developer experience. No new syntax - just making everything faster and more reliable.

Spawn/Await: Real Parallelism

The biggest change: spawn now uses real OS threads via a thread pool. Previous versions used cooperative coroutines - which meant zero parallelism for CPU-bound work.

wyn
fn fib(n: int) -> int {
    if n <= 1 { return n }
    return fib(n - 1) + fib(n - 2)
}

fn main() -> int {
    // Each fib(38) takes ~150ms
    var a = spawn fib(38)
    var b = spawn fib(38)
    var c = spawn fib(38)
    var d = spawn fib(38)
    
    // All 4 complete in ~150ms total
    await a; await b; await c; await d
    return 0
}
Metricv1.9v1.10
4x fib(38) parallelserial (no speedup)~150ms - same as one fib(38)
4x sleep(100ms)400ms (serial)103ms (parallel)
Spawn overhead~20μs~2μs (re-measured on current hardware)
Thread poolNoneCPU-count threads, 512KB stacks

50KB Binaries

wyn build --release now produces stripped, dead-code-eliminated binaries:

$ wyn build --release hello.wyn
$ ls -la hello
-rwxr-xr-x  1 user  staff  50KB  hello

Achieved via -ffunction-sections -fdata-sections + linker dead-stripping + strip. Before v1.10 an unstripped dev build was around 425KB; today's dev build is 51KB and --release is 50KB.

Faster Compilation

make now auto-builds a precompiled runtime library (libwyn_rt.a). User programs link against it instead of recompiling 33 source files:

v1.9v1.10
wyn build~4s288ms dev / 1.17s --release (current hardware)
Test suite (110 tests)~460s~97s (Linux)

Source-Line Error Messages

Errors now show the source line with a caret:

Error: Type mismatch at line 6:0
  --> app.wyn:6:0
     6 |     var result: string = add(1, 2)
       | ^
  Expected: string (text string)
  Got:      int (integer)
  Suggestion: use .to_string() to convert

No More Name Collisions

Users can now define functions named swap, clamp, input, sign, or any of the ~200 runtime function names without C linker errors. The codegen automatically prefixes user-defined names that collide.

String Concat Optimization

The s = s + x pattern is now optimized: when the string has a single owner, it's grown in-place with 2x capacity instead of copying.

50K char-by-char concat: 314ms → 163ms (48% faster)

CI: 4 Platforms Green

All tests pass on macOS ARM, macOS Intel, Ubuntu, and Windows.

Playground

Try Wyn in your browser at play.wynlang.com.

Upgrade

bash
wyn upgrade

MIT License - v1.20.0