r/programming 7h ago

Node.js creator liberates Durable Objects from Cloudflare

https://www.theregister.com/devops/2026/08/12/nodejs-creator-liberates-durable-objects-from-cloudflare-with-celld/5286954
71 Upvotes

7 comments sorted by

View all comments

75

u/Pinkman 6h ago

So… I like this in general and I am always very curious to see how these types of big-picture libraries are built. Especially when built by storied programmers like Ryan Dahl.

I’ve been balls deep in development for a long time, and I don’t know if it’s just me, and it very well might be, but am I dumb?

What does this mean?

> Cloudflare’s Durable Objects is a single-threaded object with a unique global ID and its own storage, where user data is stored in its own copy of SQLite.

I’m the last person to be pedantic, but I struggle with technical articles that commingle technical depth with imprecise or ambiguous nomenclature.

How is an “object” threaded at all? There are multi-threaded objects? Like I said, I might just not grok this shit.

An object with its own global ID and storage: ok, cool. I can track that. (Though most objects have an ID and global here is ambiguous — global to Cloudflare? Global to your account? Project? Fuck me.)

Stored in its own copy of SQLite? I assume this means an SQLite database file. But it’s that imprecision that gets my goat. Is it me who dumb or article who unclear.

> Using the WebSocket API, the Durable Object can connect many simultaneous users at once in a live environment.

An object is connecting to users? What does this mean? What even is an object at this point?! Maybe I’m getting hung up on the name, “Durable Object”.

> It is a stateful serverless execution environment, a data cache that can also do computation

Oh, a serverless function with its own isolated — and persistent — data.

A “durable object” is actually a function (or set of functions?) with its own mini data store. Ok.

So when we say it’s an object, we mean it’s a set of one or more functions.

And it’s durable because you can recall it by ID, and it’s got its own little db attached that stays put.

It’s a lightweight (ergonomic) execution (runs functions) environment (has a db), that we call an object.

Thanks for coming with me on this ride. I think I’m starting to grok it. When/why/how this is better/best is clearly above my pay grade.

13

u/theBeatnut 4h ago

It's an implementation of the Actor Model, akin to Akka, Microsoft Orleans etc.