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., iso for 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).