One empty TCP connection could kill any Wyn HTTP server. HashMap's typed setters corrupted the heap. v1.21.0 fixes 88 defects in the gap between 'wyn check says no errors' and a program that actually works - and adds the gates that find them.
Blog
Development notes, benchmarks, and updates from the Wyn project.
Wyn v1.20.0: fire-and-forget spawn dispatches 1M tasks in 0.67s, awaited spawn/await_all/parallel overlap cooperatively by default with no async ceremony, experimental GPU dispatch for [float].map, recursive and nested data, and a sanitizer-verified memory-safety sweep.
Wyn v1.19.1 is an identity and polish patch: the CLI prints one clean line instead of ASCII art, the wyvern-W emblem becomes the visual identity at wynlang.com, and the PATH-invocation fix is in every install.
Wyn v1.19.0: a real test runner, working project templates, wyn pkg audit for supply-chain checks, string lambdas, struct equality, typed channels, a fuzzed crash-proof parser, safe self-upgrade with wyn upgrade, and ASan/TSan gates on every commit.
Wyn v1.18.0 is a hardening pass: an ASan-verified use-after-free fix in codegen, a batch of real compiler correctness fixes found by building all 48 sample apps, wyn bind handling real-world C headers (lz4, zstd), and the wyn fix migrator for removed syntax.
Wyn v1.17.0 ships a git-URL package manager (no central registry), one-command C library bindings proven against SQLite, a coroutine scheduler as the concurrency default with task cancellation, and a properly Python-style print(). Some breaking cleanups too.
Wyn v1.16.0 turns on a real C FFI - call any C library from Wyn and link it via wyn.toml - plus Pythonic sugar: range(a, b, step) and if let conditional binding.
Wyn v1.15.0 lets any scalar ride inside an Option or Result: float? / bool? and Result<float, _> / Result<bool, _> now compile everywhere. Plus, function names can finally shadow C standard-library symbols like connect, read, and socket.
Wyn v1.14.0 polishes the type system: int? / string? / Result<int, string> as clean return types (no more mangled names), match as an expression on any Option/Result, type-inferred default arguments, println(array), negative string indexing, and if/else where all branches return.
Wyn v1.13.0 brings Pythonic ergonomics to a language that compiles to native binaries: in / not in membership, negative indexing, open-ended slices, map iteration (for k, v in map), tuple unpacking and swap, and Some/None/Ok/Err for any payload type.
Wyn v1.12.0 fixes three real memory-safety bugs from v1.11 (use-after-free, double-free, heap overflow), stops truncating long interpolated strings, makes Time::sleep cooperative inside spawn, and ships a warning-clean build. All fixes verified under AddressSanitizer.
Wyn v1.11 adds enum.to_string(), indexed for loops, string repeat, optional types, better error messages, and cross-platform tooling improvements.
Wyn v1.10 delivers zero memory leaks, 50KB release binaries, spawn/await with real OS threads, and 4x faster compilation.
Wyn v1.9 completes the roadmap: yield-based generators, a real debugger, cross-compilation to 5 targets, and 36 official packages ready to install.
Honest benchmarks on Apple M3 Pro: fib(35) in 41.6ms (clang -O2), 1M StringBuilder appends in 5.6ms, 50KB hello world binaries. Re-measured on v1.21.0. Run them yourself.
WynJS is a JavaScript runtime written in 2,700 lines of Wyn. 217 tests passing. It found 20 compiler bugs through dogfooding - here's how it works.
Wyn v1.8 release notes: float+int auto-promotion, 25 bug fixes, polished developer experience, and stability improvements across the compiler.
A complete REST API with concurrent request handling, in-memory storage, and JSON responses. 93 lines of Wyn, 69KB binary, zero external dependencies.
A web API with routing, SQLite, and JSON in Wyn - no npm install, no pip, no go get. Just wyn run and it works. Batteries-included programming.
What the Wyn type system catches at compile time and what it leaves to runtime. Type mismatches, undefined variables, wrong arg counts - and the tradeoffs we made.
Progress toward a self-hosted Wyn compiler. The self-hosted compiler has a lexer, parser, and partial codegen - all written in Wyn itself.
Build a concurrent port scanner in just 11 lines of Wyn. What takes 11 seconds sequentially finishes in 1 second with spawn/await concurrency.
How Wyn produces tiny native binaries by compiling to C. No VM, no garbage collector, no runtime bloat - 51KB dev build, 50KB with --release.
Wyn v1.8 adds stackful coroutines with an M:N work-stealing scheduler. Spawn millions of concurrent tasks with microseconds of overhead per spawn.
36 official Wyn packages and a live registry. Install sqlite, redis, bcrypt, jwt, and more with one command. No npm, no pip - just wyn pkg install.
The Wyn package registry is written in Wyn itself. 130 lines of code, SQLite storage, spawned tasks per request - a real-world dogfooding story.
After 20 years of switching between Python, Go, C, and Bash, I built Wyn - one compiled language for CLI tools, web servers, and system utilities.