Two HashMap.new() with different value types shared one type, and the second map answered 0 - silently, at exit 0, in v1.21.0 too. parallel{} ran a block of Time.sleep calls one after another while looking concurrent: 1,649ms for eight 200ms branches, now 210ms. v1.22.0 fixes both, implements the ten Option/Result combinators, and gives HashSet a real element type.
Blog
Development notes, benchmarks, and updates from the Wyn project.
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.
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.