Show HN: Wyzer Programming Language
A new Rust-inspired systems language called Wyzer is drawing attention for its attempt to unify ownership rules across memory, threads, and networks using linear/affine types, Perceus-style reference counting, and “choreographic programming” to generate distributed code. Commenters are intrigued by the promise of deadlock-free, GC-free, multi-node programs, but repeatedly note that the current README and website bury or omit concrete examples of these core ideas, making the language look like “Rust without a borrow checker.” Many see strong potential — especially given the author’s young age — but argue it’s too early for prime-time adoption until there are clearer docs, realistic distributed and memory-heavy examples, and explicit treatment of trade-offs such as reference-counting performance and cycle handling.
Overall reception
- Many find the idea and ambition impressive, especially given the author’s age, and like the clear, non-AI-written tone.
- Others see it as “just another Rust-like language” and are skeptical it will become more than a personal project.
- Several people explicitly say the choreography concept is genuinely interesting once they dig for it.
Syntax and documentation
- Syntax is widely described as conservative and familiar (C/Java/TypeScript/Rust-like), which many view positively.
- Multiple commenters criticize the README and site for burying the novel ideas (choreographic programming, Perceus-style memory model) behind basic syntax and scattered markdown files.
- Requests for:
- More and better-organized examples (especially non-trivial programs, data structures, and distributed cases).
- An examples/ directory.
- A top-down README that leads with the unique features.
- Some links (docs site) are currently broken or “under development,” which frustrates early adopters.
Choreographic programming
- Several people cannot find any concrete examples in the repo; available tests are described as trivial.
- Once explained in-thread, choreography is framed as:
- A high-level way to specify global communication steps (send+receive as one atomic construct).
- Compilers “project” these into endpoint code, giving deadlock freedom by construction for the compiled programs.
- Questions raised:
- How deadlock freedom is guaranteed in practice, especially for complex distributed systems.
- Comparisons with session types, MPI/PGAS languages, architecturally-aware compilers, and “server functions” in modern web frameworks.
- How to distinguish local vs. remote calls and handle latency/timeouts.
Memory model and performance
- Wyzer uses linear/affine ideas plus Perceus-style reference counting; pitched as “memory safety without tracing GC.”
- Commenters ask:
- How cycles are handled (leaks, cycle collectors, or type restrictions).
- Whether multiple owners cause subtle performance issues.
- A substantial sub-thread debates whether garbage collection is inherently slower/less predictable, with nuanced arguments about different GC designs.
Project maturity and positioning
- Some suggest the project was shown too early; core docs, distributed examples, and realistic programs are still missing.
- Suggestions include emphasizing:
- The “one ownership rule” (memory/threads/networks) but also clarifying its limits.
- Concrete cases where Wyzer catches or prevents issues beyond what Rust or other systems do.