Pony: An actor-model, capabilities-secure, high-performance programming language
Website, onboarding, and examples
- Many commenters struggled to find non-trivial code; the homepage and “discover” page are seen as too conceptual and light on examples.
- Repeated requests for: a short elevator pitch, a real code snippet on the front page, and a richer playground (beyond “Hello, world”) showing actors, capabilities, and typical use cases.
- Some praise other languages’ sites (Nim, D, Factor) as better models: bullets plus several real examples, and obvious “try it” entry points.
Syntax vs semantics debate
- Large subthread arguing whether syntax is a primary adoption filter or a superficial concern.
- One camp: syntax is the “UI” of a language and an immediate yes/no filter; people want to see it early.
- Other camp: Pony’s interesting parts are its semantics (actors, reference capabilities, GC), and leading with syntax invites shallow bike-shedding.
- Some middle ground: show code and concepts together; syntax is how novel semantics are expressed, so examples matter.
Core language ideas as discussed
- Pony is described as an actor-based, statically and strongly typed, GC’d language with per-actor heaps and reference capabilities (e.g.,
isofor isolated graphs). - Actors run one behavior at a time; message passing plus capabilities aim to give safe concurrency without data races and with “batteries included,” somewhat Go-like.
- ORCA garbage collector is highlighted as low-jitter and tightly co-designed with the type system, but not aiming at hard real-time guarantees.
- Error model: no unchecked runtime exceptions; partial functions and an
Option-like mechanism with enforced handling, though some find this heavy for invariant violations. - Quirks noted: division by zero yields zero; explicit checked/unchecked arithmetic operators; no operator precedence (requires parentheses).
Concurrency, performance, and locks
- Dispute over Pony’s claim that locks “cause big performance hits.”
- Some argue modern mutexes can be very cheap under low contention and that message queues rely on shared memory and synchronization anyway.
- Actor model is defended as easier to reason about (mailboxes, one-thread-per-actor semantics), though not a silver bullet; queues can also contend.
Deadlock-free marketing claim
- Several commenters criticize “deadlock-free” as overstated: actor systems and message passing can still deadlock logically, even without locks.
- Clarifications: Pony avoids lock-based deadlocks at the runtime/scheduling level, but user-level protocols can still end in states with no progress (deadlock or livelock).
Ecosystem, adoption, and community
- Interest in reference capabilities and safety model, but concerns about small ecosystem, sparse libraries, and rough edges (e.g., deprecated packages still listed).
- Some mention prior production use (not heavily publicized) and that at least one notable adopter later moved to Rust due to shifting product needs.
- Community uses Zulip (seen positively versus Slack); there are talks, podcasts, and prior HN threads for deeper dives.
Documentation style and audience fit
- Several readers feel the docs are written for people new to static typing and PL concepts, making them slow for experienced programmers who want a concise semantic overview.
- Suggested improvement: a one-page “for PL people” summary of type system, capabilities, actor model, and guarantees, plus more pattern-style examples (e.g., backpressure, data sharing).