Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## 0.14.8 - 2026-09-09

- Hold the actor instance and message claim locks through every fenced commit
on PostgreSQL and MySQL. Lease recovery and stale-process cleanup revalidate
those rows after waiting, so they cannot requeue a message that completed in
the meantime.

## 0.14.7 - 2026-09-05

- Read SQL message results and completion status in one statement so concurrent
Expand Down
2 changes: 1 addition & 1 deletion docs/parity.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ is needed for the JavaScript stale-result race fix.
| ------------------------------------------------------------------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Actor registry, durable identity, JSON state, and adjacent state migrations | Native | Ordinary classes, static actor types, inferred state, explicit migrations, and isolated runtime context across every actor-instance callback. |
| Fluent committed calls and background delivery | Native | `await reference.operation()` and `reference.send.operation()`. |
| Ordered mailbox, sequence allocation, idempotency, retries, dead letters, leases, renewal, and fenced commits | Native | Relational ready/claimed membership tables, distinct generated request IDs and caller idempotency keys, durable history, and adapter-appropriate sequence locking. |
| Ordered mailbox, sequence allocation, idempotency, retries, dead letters, leases, renewal, and fenced commits | Native | Relational ready/claimed membership tables, distinct generated request IDs and caller idempotency keys, durable history, adapter-appropriate sequence locking, and PostgreSQL/MySQL row locks held from fence validation through commit. |
| Domain rejection and strict poison ordering | Native | Rejections accept JavaScript identifier-style codes and roll back without retry; invalid codes fail terminally, while retryable failures block later operations until completion or dead-lettering. |
| Bounded activation passes and hot-actor fairness | Native | Configurable turn-count and elapsed-time budgets bound each pass, then move only that actor's already-due memberships behind actors already waiting. |
| Bounded claim candidate scan | Native | A configurable ordered scan continues to another ready actor when a worker loses the first candidate's lease race. |
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "solid-objects",
"version": "0.14.7",
"version": "0.14.8",
"description": "Race-free realtime state per application identity, backed by your SQL database",
"type": "module",
"license": "MIT",
Expand Down Expand Up @@ -136,14 +136,14 @@
"@types/node": "^24.0.0",
"@types/pg": "^8.21.0",
"@types/ws": "^8.18.1",
"@vitest/coverage-v8": "^4.1.10",
"@vitest/coverage-v8": "^4.1.11",
"mysql2": "^3.23.3",
"pg": "^8.23.0",
"prettier": "^3.9.6",
"redis": "^6.2.1",
"signal-polyfill": "^0.2.2",
"typescript": "^5.9.0",
"vitest": "^4.1.10",
"vitest": "^4.1.11",
"wrangler": "^4.129.0",
"ws": "^8.21.3"
},
Expand Down
Loading