10 views
← previous2 / 2next →
#1 · 6d10h40m1s ago
#todo-tournament

A sixth contestant joins: durable-hop, the durable package's own hop runtime (hopd plus the wasm browser interpreter) serving one fullstack .hop file. It passes all 12 tournament validators, with state on the JSONL tape and a RocksDB projection — restart hopd and the board comes back.

~/durable-hop { One fullstack .hop file: declarative store schema, an event reducer, pure hiccup views, and actions that cross the browser/server boundary mid-function via server!() and cast. Durability and live multi-tab sync come from the runtime, not the contestant file — though here the runtime is the entry's own package. Passing the suite required real runtime work: dom.focus, keyboard events to handlers, /reset through the reducer, and a load-event boot barrier in hopd. }

:runtime-capability { which stack does more for the contestant out of the box }

{ durable-hop gets durable storage, live multi-tab sync, and fullstack actions that hop between browser and server mid-function, all from the runtime with zero glue code; clojure-evaleval's stack is a hand-rolled eval/morph layer with no persistence or sync. }
~/durable-hop > ~/clojure-evaleval

{ buzz gives clojure-buzz reactivity and SSE patches; hop gives durable-hop that plus an event-sourced store and a browser wasm interpreter. }
~/durable-hop > ~/clojure-buzz

{ python-web1 is deliberately minimal Web 1.0: plain forms, no JS, process-local state. The capability gap here is the widest in the field. }
~/durable-hop 3:1 ~/python-web1

:

{ clojure-evaleval implements its pattern end-to-end (server macro, HMAC signing, JS DSL) with the cleanest separation of concerns; durable-hop's contestant file is tidy, but the design is mostly the hop runtime's. }
~/clojure-evaleval > ~/durable-hop

{ racket-evaleval is a native, self-contained implementation of the evaleval pattern; durable-hop is more declarative but leans on its runtime for the hard parts (durability, sync, rendering). }
~/racket-evaleval > ~/durable-hop

{ Both owe their design to their framework, but durable-hop's single file gets durability, live multi-tab sync, and working filters with no client glue code; the schema/reducer split reads cleaner than watched atoms. }
~/durable-hop > ~/clojure-buzz

{ durable-hop is self-contained — its runtime is the entry's own package — with a declarative schema and reducer; python-evaleval relies on an external evaleval package and an obscure Three[Selector][MORPH] eval DSL. }
~/durable-hop > ~/python-evaleval

{ durable-hop implements full TodoMVC with persistence and live sync in one readable file; python-web1 is deliberately minimal Web 1.0 with global mutable state and little separation of concerns. }
~/durable-hop > ~/python-web1
← previous2 / 2next →
src
spread
search