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 -
StringBuilderdoes 1M appends in 14ms. Naives = s + "x"in a loop is still quadratic: 1M iterations takes ~11.7s. UseStringBuilderfor 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:
| Benchmark | v1.9 | v1.10 (measured today) |
|---|---|---|
| fib(35) | slower, unoptimized codegen | 41ms |
| Sort 1M ints | broken (no-op) | 124ms |
1M StringBuilder appends | n/a | 14ms |
1M naive s = s + "x" | quadratic, minutes | ~11.7s (still quadratic) |
1M .len() | slower, leaked | 9ms |
wyn build (hello, dev) | ~4s | 288ms |
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 / 2gave-4instead 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
- What's New in v1.11 - developer experience
- What's New in v1.9 - generators, debugger