@zakkster/lite-signal-decorators 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -6
- package/README.md +3 -3
- package/SignalDecorators.d.ts +1 -1
- package/SignalDecorators.js +2 -2
- package/llms.txt +7 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,57 @@ All notable changes to `@zakkster/lite-signal-decorators` are documented here.
|
|
|
4
4
|
The format follows Keep a Changelog; this project adheres to Semantic
|
|
5
5
|
Versioning.
|
|
6
6
|
|
|
7
|
+
## [0.3.0] - 2026-08-26
|
|
8
|
+
|
|
9
|
+
The class-reactivity benchmark release. Zero runtime changes: the 11-export
|
|
10
|
+
surface ships logic-identical to 0.2.0 (version constants aside); what this
|
|
11
|
+
release adds is the proof. Stage gate, all measured at closeout: 171/171
|
|
12
|
+
tests on both lanes; torture 13 scenarios / 13 sabotage controls all
|
|
13
|
+
green-and-breakable; the full benchmark matrix 42/42 lanes `sink=ok`, exit 0.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- `bench/` -- a private, never-shipped benchmark sub-package: six admitted
|
|
18
|
+
engines (`lsd` decorators, `lsd-define` buildless, the `lite-raw-boxes`
|
|
19
|
+
honesty baseline, MobX 7, signal-utils + signal-polyfill, a hand-rolled
|
|
20
|
+
alien-signals class) x seven class-shaped scenarios (vm-write, fleet-read
|
|
21
|
+
and fleet-tick over 10k instances, cascade 64/16+aggregate, deep-vm 64-deep,
|
|
22
|
+
churn as the headline, retention as gates). Ported lite-signal rig: anti-DCE
|
|
23
|
+
sink with analytic expected-sum oracles (skipped work rejects the lane),
|
|
24
|
+
median-of-5 + min, GC-fenced runs with real delta/retained heap columns,
|
|
25
|
+
machine provenance stamps with resolved adapter versions, a sabotaged-adapter
|
|
26
|
+
self-test proving the harness can fail, and machine-gated effect liveness on
|
|
27
|
+
lifecycle lanes. Candidates `classy-solid` and `@reactively/decorate` probed
|
|
28
|
+
and excluded with recorded one-line blockers (solid's stock-Node SSR
|
|
29
|
+
resolution; legacy-only decorators). Reproducible from a clean clone:
|
|
30
|
+
`cd bench && npm install && npm run bench`.
|
|
31
|
+
- `fleet-soak` -- the 13th torture scenario (soak group): 2000 VMs (16000 pool
|
|
32
|
+
nodes exactly) under sustained ticks with partial churn rotations for a
|
|
33
|
+
wall-clock budget; per-sample F-0, flat retained heap, gcGate maxMajor 0;
|
|
34
|
+
its sabotage control leaks one VM per rotation and is caught at the first
|
|
35
|
+
sample.
|
|
36
|
+
- `decisions/0006-kill-criteria.md` -- the formal verdicts. Criterion 1 (the
|
|
37
|
+
2.0x line vs the hand-written instance-field baseline) CLEARED WITH MARGIN:
|
|
38
|
+
vm-write 0.94x, fleet-read 1.10x (parity, per 0003's tied-layout finding).
|
|
39
|
+
Criterion 2 (churn cleanliness) CLEARED: 0 major and 0 minor collections
|
|
40
|
+
over 4096 lifecycle cycles on every lite lane, pools at floor (asserted
|
|
41
|
+
in-lane), retained settled at-or-below baseline -- and the decorated churn
|
|
42
|
+
loop emits ~12.6x less transient garbage than the hand-rolled equivalent.
|
|
43
|
+
Every competitor number published under the same stamp (AD-6 honesty
|
|
44
|
+
tiering); the wide-shape cascade/deep-vm gap vs raw boxes is recorded as an
|
|
45
|
+
S4 investigation item, not hidden.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- README: the measured-numbers section now cites the cross-framework matrix
|
|
50
|
+
and the 0006 verdicts alongside the package's own committed probes; version
|
|
51
|
+
references bumped.
|
|
52
|
+
- CHANGELOG release links now point at the package `repository`
|
|
53
|
+
(github.com/PeshoVurtoleta/lite-signal-decorators), matching the new
|
|
54
|
+
`repository`/`homepage`/`funding` fields in package.json.
|
|
55
|
+
- `llms.txt` scope note: 0.3.0 adds only dev-side proof; the export surface
|
|
56
|
+
is unchanged and frozen for 0.x.
|
|
57
|
+
|
|
7
58
|
## [0.2.0] - 2026-08-26
|
|
8
59
|
|
|
9
60
|
The adversarial-torture release: the 0.2 surface is frozen for 0.x, proven by
|
|
@@ -54,9 +105,8 @@ gc major=0 minor=0`.
|
|
|
54
105
|
|
|
55
106
|
## [0.2.0-preview.1] - 2026-08-26
|
|
56
107
|
|
|
57
|
-
The full runtime surface. Exports grow from 8 to 11.
|
|
58
|
-
preview
|
|
59
|
-
changes below first shipped with 0.2.0.
|
|
108
|
+
The full runtime surface. Exports grow from 8 to 11. Published under the
|
|
109
|
+
`preview` dist-tag on the same day 0.2.0 went to `latest`.
|
|
60
110
|
|
|
61
111
|
### Added
|
|
62
112
|
|
|
@@ -152,6 +202,7 @@ Initial release -- the decorator core.
|
|
|
152
202
|
- Torture skeleton (`@zakkster/lite-leak` + `@zakkster/lite-gc-profiler`):
|
|
153
203
|
retention, conservation, lifecycle, and zero-GC lanes.
|
|
154
204
|
|
|
155
|
-
[0.
|
|
156
|
-
[0.2.0
|
|
157
|
-
[0.
|
|
205
|
+
[0.3.0]: https://github.com/PeshoVurtoleta/lite-signal-decorators/releases/tag/v0.3.0
|
|
206
|
+
[0.2.0]: https://github.com/PeshoVurtoleta/lite-signal-decorators/releases/tag/v0.2.0
|
|
207
|
+
[0.2.0-preview.1]: https://github.com/PeshoVurtoleta/lite-signal-decorators/releases/tag/v0.2.0-preview.1
|
|
208
|
+
[0.1.0]: https://github.com/PeshoVurtoleta/lite-signal-decorators/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -245,7 +245,7 @@ Symbol keys work (`Reflect.ownKeys`). A spec key colliding with an own property
|
|
|
245
245
|
| Export | Value |
|
|
246
246
|
|---|---|
|
|
247
247
|
| `ReactiveDisposedError` | `extends Error`; `name: "ReactiveDisposedError"`; fields `className`, `key`. Thrown on ANY touch of a disposed instance's surface. |
|
|
248
|
-
| `VERSION` | `"0.
|
|
248
|
+
| `VERSION` | `"0.3.0"` |
|
|
249
249
|
|
|
250
250
|
### The rejection matrix
|
|
251
251
|
|
|
@@ -348,7 +348,7 @@ The gates that hold it (run on every change, all green at 0.2.0):
|
|
|
348
348
|
- Torture: **12/12 scenarios** (zero-GC read/write lanes at `maxMajor 0, maxPauseMs 4`; 4096-cycle leak gate at 0 live / 0 findings / 0 warnings; capacity atomicity at every overflow point; a 300-seed x 20k-op oracle with zero divergences) -- plus **12/12 sabotage controls** proving each gate can actually fail.
|
|
349
349
|
- `churn-soak`: sustained construct/use/dispose for a wall-clock budget; pools at floor and retained heap flat at every sample.
|
|
350
350
|
|
|
351
|
-
The cross-framework
|
|
351
|
+
The cross-framework matrix lives in `bench/` (private, never shipped): six engines -- both our tiers, the hand-written `lite-raw-boxes` baseline, MobX 7, signal-utils/signal-polyfill, and a hand-rolled alien-signals class -- across seven class-shaped scenarios, checksum-verified for identical work, stamped into `bench/results.txt`. The formal verdicts are in [`decisions/0006-kill-criteria.md`](decisions/0006-kill-criteria.md): the decorated path measured **0.94x** the hand-written baseline on vm-write and **1.10x** on a 10k-instance fleet read (the 2.0x kill line cleared with margin), and **0 major + 0 minor GC over 4096 construct/use/dispose cycles** with pools at floor -- while emitting ~12.6x less transient garbage per churn run than the hand-rolled class it replaces.
|
|
352
352
|
|
|
353
353
|
</details>
|
|
354
354
|
|
|
@@ -473,7 +473,7 @@ Because an instance whose base-class boxes live in one pool and whose subclass b
|
|
|
473
473
|
No, and the README says so with numbers: 22.12 ns/op vs 15.25 raw vs 11.67 unbatched on the reference rig -- a thunk + rest-array per call. Use it for actions; keep per-frame writes on plain accessors.
|
|
474
474
|
|
|
475
475
|
**Where are `costOf`, labels, the audit hook, private members?**
|
|
476
|
-
Not in 0.
|
|
476
|
+
Not in 0.3.0 -- the runtime surface froze for 0.x at 0.2.0, and the introspection layer (capacity accounting, devtools identity) is the 0.4.0 milestone. The `llms.txt` scope note tracks exactly what is and isn't included.
|
|
477
477
|
|
|
478
478
|
---
|
|
479
479
|
|
package/SignalDecorators.d.ts
CHANGED
|
@@ -273,4 +273,4 @@ export class ReactiveDisposedError extends Error {
|
|
|
273
273
|
// --- Version ------------------------------------------------------------------
|
|
274
274
|
|
|
275
275
|
/** Package version. Kept in lockstep with package.json and llms.txt. */
|
|
276
|
-
export const VERSION: "0.
|
|
276
|
+
export const VERSION: "0.3.0";
|
package/SignalDecorators.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @zakkster/lite-signal-decorators v0.
|
|
2
|
+
* @zakkster/lite-signal-decorators v0.3.0
|
|
3
3
|
* --------------------
|
|
4
4
|
* Stage-3 decorator layer over @zakkster/lite-signal. Turns a plain class into
|
|
5
5
|
* a reactive view-model with measured per-instance cost and deterministic
|
|
@@ -1298,4 +1298,4 @@ export function rootOf(vm) {
|
|
|
1298
1298
|
// --- Version ------------------------------------------------------------------
|
|
1299
1299
|
|
|
1300
1300
|
/** Package version. Kept in lockstep with package.json and llms.txt. */
|
|
1301
|
-
export const VERSION = "0.
|
|
1301
|
+
export const VERSION = "0.3.0";
|
package/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @zakkster/lite-signal-decorators
|
|
2
2
|
|
|
3
|
-
VERSION 0.
|
|
3
|
+
VERSION 0.3.0
|
|
4
4
|
|
|
5
5
|
> Stage-3 decorator layer over @zakkster/lite-signal. Turns a plain class into a
|
|
6
6
|
> reactive view-model where each instance has a measured per-property cost, a
|
|
@@ -55,7 +55,7 @@ slot for a poison handle, so any later read/write throws a named
|
|
|
55
55
|
`forEachOwned` / lite-devtools. Throws `ReactiveDisposedError` after dispose.
|
|
56
56
|
- `ReactiveDisposedError` -- `extends Error`, `name` `"ReactiveDisposedError"`,
|
|
57
57
|
fields `className` and `key`.
|
|
58
|
-
- `VERSION` -- `"0.
|
|
58
|
+
- `VERSION` -- `"0.3.0"`.
|
|
59
59
|
|
|
60
60
|
## Registry law (one registry per host chain)
|
|
61
61
|
|
|
@@ -137,7 +137,8 @@ routed per-registry via `createRegistry()`).
|
|
|
137
137
|
|
|
138
138
|
## Scope note
|
|
139
139
|
|
|
140
|
-
0.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
140
|
+
0.3.0 = the 0.2.0 runtime surface (unchanged -- the same 11 exports, frozen for
|
|
141
|
+
0.x) plus the dev-side class-reactivity benchmark (`bench/`, private, never
|
|
142
|
+
shipped) and the fleet-soak torture scenario; the formal kill-criteria verdicts
|
|
143
|
+
live in decisions/0006-kill-criteria.md. Not yet included: cost introspection
|
|
144
|
+
(`costOf`/`capacityFor`), labels, an audit hook, and private-member support.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zakkster/lite-signal-decorators",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Stage-3 decorator layer over @zakkster/lite-signal. The reactive class layer where an instance has a measured cost, deterministic teardown, and a churn benchmark.",
|
|
5
5
|
"author": "Zahary Shinikchiev <shinikchiev@yahoo.com>",
|
|
6
6
|
"license": "MIT",
|