Skip to content

What's New in v1.10

"The Quality Release" - no new language features. Every change makes Wyn faster, safer, and more stable.

Highlights

  • Zero memory leaks - every string, array, and HashMap freed deterministically
  • Near-native compute - fib(35): 41ms on current hardware (~23x faster than Python)
  • Faster string building - StringBuilder does 1M appends in 14ms. Naive s = s + "x" in a loop is still quadratic: 1M iterations takes ~11.7s. Use StringBuilder for hot loops.
  • 50KB binaries - down from a ~425KB unstripped dev build
  • .sort() works - was silently a no-op in v1.9, now in-place qsort
  • Stdlib APIs fixed - Json, Http, Db, Crypto all work with correct param counts

Performance

Re-measured on current hardware (Apple M3 Pro, macOS 26) with the shipped toolchain, so these are the numbers you get today rather than the ones the original v1.10 announcement quoted:

Benchmarkv1.9v1.10 (measured today)
fib(35)slower, unoptimized codegen41ms
Sort 1M intsbroken (no-op)124ms
1M StringBuilder appendsn/a14ms
1M naive s = s + "x"quadratic, minutes~11.7s (still quadratic)
1M .len()slower, leaked9ms
wyn build (hello, dev)~4s288ms
Binary size (--release)425KB (unstripped dev)50KB
Memory (1M string ops)~3GB (leaked)1.5MB

Memory Safety

  • 50+ string functions converted to RC-tracked allocation
  • All buffer overflows eliminated (6 fixed-size buffers → dynamic)
  • Thread-safe RC with atomic CAS operations
  • Concurrent string operations: 30/30 correct, zero crashes
  • Verified with AddressSanitizer + UndefinedBehaviorSanitizer

Bug Fixes

  • .sort() was a no-op - codegen discarded the sorted copy
  • String array .sort() - used int comparator instead of strcmp
  • Signed division - -7 / 2 gave -4 instead of -3
  • Division by zero - now panics with clear message (was silent 0)
  • Triple method chain - "hello".trim().upper().reverse() crashed
  • Stdlib param counts - all builtin module functions had hardcoded 1-param limit
  • Method chain leak - "hello".upper().trim() leaked the intermediate
  • println/print leak - println(x.to_string()) leaked every call

Testing

  • 110 unit tests + 32 expect/regression tests = 142 total
  • All tests pass on macOS, Linux, Windows (ARM + x64)
  • Zero ASan/UBSan errors

Other Releases

MIT License - v1.20.0