You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
main released 0.13.2 while this branch was open, and this branch had
claimed that number for the Node floor change. Both the changelog and the
README quickstart conflicted on it.
The released 0.13.2 section stays as main wrote it, and the floor entries
move to a new 0.13.3 section. 0.13.3 also matches the Ruby gem, whose
release carries the same date.
The rest of the version references follow the release procedure:
package.json, src/version.ts, the process metadata test literal, the
README quickstart, docs/parity.md, and the example tag in
docs/releasing.md.
| Multiplayer, presence, or collaboration | Room, session, or document | Joins, moves, and edits commit in order; subscribers refresh from committed state |
93
+
| Reservations and expiring holds | Show, resource, or stock item | Availability checks and holds cannot interleave; a durable reminder can release an old hold |
94
+
| Checkout and account workflows | Cart, order, account, device | The current step, retries, and effect results return to the same ordered mailbox |
95
+
| Per-key rate limits | API key, account, or device | Token checks and decrements are serialized; a reminder can refill the bucket |
96
+
| Stateful agent sessions | Agent session | Messages and tool results apply in order and pending work survives a worker exit |
97
+
98
+
The common shape is one durable coordination boundary with an application
99
+
defined identity. Work for that identity is serialized, while unrelated rooms,
100
+
carts, accounts, or sessions can progress concurrently. A single global rate
101
+
limiter or another very hot identity is a poor fit because it becomes an
102
+
intentional bottleneck. If one ordinary row transaction solves the problem,
103
+
prefer that. See [Choosing Solid Objects](docs/fit.md) for the longer guide.
104
+
80
105
## Running in a deployed application
81
106
82
107
[Shuffle Up and Play](https://shuffleupandplay.com/) is a deployed reference
@@ -112,28 +137,6 @@ and multi-process lease fencing are verified separately by the library's
112
137
[correctness contract](docs/correctness.md). Evaluate those guarantees and
113
138
limits against your own workload.
114
139
115
-
## What Solid Objects is for
116
-
117
-
Use Solid Objects when more than one request, job, or process can act on the
118
-
same logical thing and the next action must use its latest committed state.
119
-
These are the stateful coordination patterns for which people often reach for
120
-
Durable Objects:
121
-
122
-
| Pattern | One identity per | What the object coordinates |
| Multiplayer, presence, or collaboration | Room, session, or document | Joins, moves, and edits commit in order; subscribers refresh from committed state |
125
-
| Reservations and expiring holds | Show, resource, or stock item | Availability checks and holds cannot interleave; a durable reminder can release an old hold |
126
-
| Checkout and account workflows | Cart, order, account, device | The current step, retries, and effect results return to the same ordered mailbox |
127
-
| Per-key rate limits | API key, account, or device | Token checks and decrements are serialized; a reminder can refill the bucket |
128
-
| Stateful agent sessions | Agent session | Messages and tool results apply in order and pending work survives a worker exit |
129
-
130
-
The common shape is one durable coordination boundary with an application
131
-
defined identity. Work for that identity is serialized, while unrelated rooms,
132
-
carts, accounts, or sessions can progress concurrently. A single global rate
133
-
limiter or another very hot identity is a poor fit because it becomes an
134
-
intentional bottleneck. If one ordinary row transaction solves the problem,
135
-
prefer that. See [Choosing Solid Objects](docs/fit.md) for the longer guide.
136
-
137
140
## How it works
138
141
139
142
An object is addressed by its TypeScript class and application-defined ID.
0 commit comments