-
Pony enthusiasts exploring real-world applications
-
Concurrency-minded developers who appreciate lock-free design
-
Systems programmers seeking memory safety without GC pauses
-
Capability-curious engineers ready to think differently about access control
Content parsing, template rendering, and file emission each run as isolated actors. No shared mutable state. No data races. Ever.
actor PageBuilder
let _renderer: Renderer tag
be build(content: String val, template: Template val) =>
let html = _renderer.apply(content, template)
FileEmitter.emit(html)Pony’s type system tracks aliasing and mutability. val means immutable and shareable. iso means isolated and transferable. The compiler enforces safety at compile time.
// Content is immutable (val) - safe to share across actors
fun parse(source: String val): AST val =>
MarkdownParser.parse(source)Isolated references (iso) transfer ownership without copying. Large content moves between pipeline stages efficiently.
# Install Pony
brew install ponyc # or: apt install ponyc
# Clone and build
git clone https://github.com/hyperpolymath/eclipse-ssg
cd eclipse-ssg
ponyc --debug
# Generate your site
./eclipse-ssg build content/ --output dist/┌─────────────────────────────────────────────────────────┐ │ Scheduler (Pony runtime) │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Watcher │──▶│ Parser │──▶│ Renderer │ │ │ │ actor │ │ actor │ │ actor │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ ┌──────▼──────┐ │ │ │ FileEmitter │ │ │ │ actor │ │ │ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘
Each actor processes messages asynchronously. The Pony scheduler distributes work across available cores automatically.
-
Incremental builds — Watcher actor triggers rebuilds only for changed files
-
Parallel rendering — Multiple pages render concurrently, safely
-
Hot reload — Dev server actor pushes changes via SSE
-
Markdown + templating — Built-in parsing with extensible syntax
-
Zero runtime exceptions — Pony’s exhaustive matching prevents missed cases
| Capability | Meaning | Use in eclipse-ssg |
|---|---|---|
|
Immutable, shareable |
Parsed content, templates, config |
|
Isolated, transferable |
Large buffers moving between actors |
|
Mutable, unique |
Builder state during page construction |
|
Identity only, no read/write |
Actor references for message passing |
eclipse-ssg is part of the poly-ssg-mcp hub, providing MCP integration for Claude and other AI assistants.
Available tools: eclipse_init, eclipse_build, eclipse_serve