@kudzujs/core 0.16.16 → 0.16.17
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/MIGRATION_ROADMAP.md +1 -1
- package/PERFORMANCE.md +61 -0
- package/README.md +1 -1
- package/RELEASES.md +28 -0
- package/docs/next-architecture/README.md +1 -1
- package/docs/next-architecture/application-capability-release-plan.md +49 -0
- package/docs/next-architecture/compiler-current-architecture.md +1 -1
- package/docs/next-architecture/large-application-ai-native-roadmap.md +3 -3
- package/docs/next-architecture/versioning.md +2 -2
- package/package.json +1 -1
package/MIGRATION_ROADMAP.md
CHANGED
|
@@ -57,7 +57,7 @@ Syntax compatibility does not mean reproducing React wholesale. Kudzu accepts th
|
|
|
57
57
|
- stronger JavaScript failure resilience;
|
|
58
58
|
- no remaining material large-route build-scaling weakness.
|
|
59
59
|
|
|
60
|
-
The completed 0.9 plan defines the cross-framework comparison and release gate. The active application packet is `0.21.
|
|
60
|
+
The completed 0.9 plan defines the cross-framework comparison and release gate. The active application packet is `0.21.3` in the capability release plan below. Benchmark-only feature omission, unmatched accessibility, weighted scores that hide losses, and unrecorded environment differences do not count as proof.
|
|
61
61
|
|
|
62
62
|
### 0.10.0 Through 0.21.x: Application Capability Release Train
|
|
63
63
|
|
package/PERFORMANCE.md
CHANGED
|
@@ -2,6 +2,67 @@
|
|
|
2
2
|
|
|
3
3
|
Reproducibility classes: `npm run benchmark`, `npm run benchmark:keyed`, `npm run benchmark:native`, `npm run benchmark:module-cache`, `npm run benchmark:project-navigation`, `npm run benchmark:project-state`, `npm run benchmark:source-scale`, and `npm run benchmark:ai-delivery` are maintained in this repository; `npm run benchmark:commerce` is a maintained paired runner over the public external storefront; older excluded-workspace sections are historical provenance only and are not current framework rankings.
|
|
4
4
|
|
|
5
|
+
## 0.21.2 Browser Performance And Memory
|
|
6
|
+
|
|
7
|
+
Measured 2026-09-03 at revision
|
|
8
|
+
`fcb42ae388c733ff9098f8c4a059690a21a56ed3` on Linux x64 with Node 24.14.0,
|
|
9
|
+
Chrome 152.0.7977.64, an Intel i5-9500, six logical CPUs, and 31.2 GiB RAM.
|
|
10
|
+
These are same-revision application gates, not cross-framework or historical
|
|
11
|
+
regression claims. Each timing benchmark ran alone with seven fresh Chrome
|
|
12
|
+
profiles; the list decision rotates strategies. Median browser budgets are 100
|
|
13
|
+
ms for measured interactions and enhanced navigation, 1,000 ms for bounded-list
|
|
14
|
+
load, and 2,000 ms for the complete static 10,000-row document.
|
|
15
|
+
|
|
16
|
+
| Fixture | Metric | Raw samples | Median / budget |
|
|
17
|
+
|---|---|---|---:|
|
|
18
|
+
| 2,000 keyed rows | Append 33 | `[9.6, 13.9, 10.8, 12.3, 8.6, 8.8, 7.0]` ms | 9.6 / 100 ms |
|
|
19
|
+
| 2,000 keyed rows | Filter to one | `[16.0, 17.6, 20.4, 21.1, 17.6, 16.3, 16.9]` ms | 17.6 / 100 ms |
|
|
20
|
+
| 2,000 keyed rows | Restore 1,999 | `[66.9, 84.5, 95.3, 78.5, 94.6, 76.4, 98.1]` ms | 84.5 / 100 ms |
|
|
21
|
+
| 2,000 keyed rows | Reverse 2,000 | `[19.4, 18.8, 19.4, 18.7, 18.8, 27.3, 19.6]` ms | 19.4 / 100 ms |
|
|
22
|
+
| Project application | Table save | `[0.8, 0.9, 0.9, 0.9, 0.8, 2.8, 1.0]` ms | 0.9 / 100 ms |
|
|
23
|
+
| Project application | List-to-detail navigation | `[4.2, 9.5, 4.9, 4.2, 6.4, 11.7, 4.1]` ms | 4.9 / 100 ms |
|
|
24
|
+
| 10,000-row direct | Complete load | `[999.8, 1030.9, 982.2, 1070.1, 1047.2, 939.0, 994.3]` ms | 999.8 / 2,000 ms |
|
|
25
|
+
| 100-row pagination | Complete load | `[327.3, 133.9, 163.1, 145.1, 150.5, 417.1, 190.1]` ms | 163.1 / 1,000 ms |
|
|
26
|
+
| 100-row pagination | Next range | `[39.3, 13.3, 14.1, 22.1, 14.6, 18.1, 22.3]` ms | 18.1 / 100 ms |
|
|
27
|
+
| 100-row window | Complete load | `[185.1, 472.8, 247.9, 315.0, 251.7, 148.4, 260.6]` ms | 251.7 / 1,000 ms |
|
|
28
|
+
| 100-row window | Next range | `[23.7, 14.4, 14.0, 48.5, 19.5, 50.5, 26.7]` ms | 23.7 / 100 ms |
|
|
29
|
+
|
|
30
|
+
The keyed graph is nine JavaScript files totaling 30,048 raw / 11,748
|
|
31
|
+
aggregate gzip B. The project list/detail session owns 17 unique JavaScript
|
|
32
|
+
files totaling 81,200 raw / 27,885 aggregate gzip B; its initial list and
|
|
33
|
+
concrete detail route graphs are 69,178 / 24,183 and 67,702 / 23,556 raw/gzip B.
|
|
34
|
+
These are structural route/session artifact bytes from the exact ownership
|
|
35
|
+
report, not compressed network-transfer measurements from the local uncompressed
|
|
36
|
+
server.
|
|
37
|
+
|
|
38
|
+
The lazy editor initially owns 12,982 raw / 6,153 gzip B and defers one 250,086
|
|
39
|
+
raw / 80,890 gzip B CodeMirror chunk. Two route owners share that one deferred
|
|
40
|
+
chunk while owning 21,599 / 9,466 and 21,609 / 9,468 eager raw/gzip B; the static
|
|
41
|
+
sibling owns zero JavaScript. Focused required-Chrome tests pass 3/3, proving no
|
|
42
|
+
deferred request before activation, one native module request, reuse by later
|
|
43
|
+
owners, and exact conditional/document cleanup.
|
|
44
|
+
|
|
45
|
+
The 10,000-row static control retains 10,000 rows, 50,015 elements, 90,023 DOM
|
|
46
|
+
nodes, zero listeners, 534,292 forced-GC heap bytes, and zero JavaScript. Both
|
|
47
|
+
bounded strategies retain exactly 100 rows: pagination records 1,467 nodes, one
|
|
48
|
+
listener, and 1,423,560 median heap bytes; windowing records 1,468 nodes, two
|
|
49
|
+
listeners, and 1,528,288 median heap bytes. Off-range state is released and
|
|
50
|
+
recreated while retained-row identity remains correct.
|
|
51
|
+
|
|
52
|
+
The default endurance gate passes five warm-ups, ten stale-prefetch races, and
|
|
53
|
+
30 ownership cycles in one profile. Across 101 navigations, editor
|
|
54
|
+
mounts/disposals balance at 71/71, browser state remains zero, documents remain
|
|
55
|
+
six, listeners remain seven, nodes move 164 to 165, and forced-GC heap moves
|
|
56
|
+
1,969,344 to 2,049,332 bytes: a 79,988 B increase under the existing 2 MiB or
|
|
57
|
+
15% alarm. No browser exception or failed request occurs. The raw ignored
|
|
58
|
+
artifacts are under
|
|
59
|
+
`test-results/endurance/2026-09-02T23-54-34-324Z/`.
|
|
60
|
+
|
|
61
|
+
The packet adds median alarms to three existing browser benchmarks and permits
|
|
62
|
+
the existing artifact collector to name the active packet. It changes no
|
|
63
|
+
production source, semantic primitive, compiler pass, runtime concept, deploy
|
|
64
|
+
artifact, public API, or browser byte.
|
|
65
|
+
|
|
5
66
|
## 0.21.1 Compiler And Route Scale
|
|
6
67
|
|
|
7
68
|
Measured 2026-09-01 on Linux x64 with Node 24.14.0, an Intel i5-9500, six
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Kudzu compiles ordinary React-shaped TypeScript and TSX into complete static HTM
|
|
|
14
14
|
|
|
15
15
|
> Experimental `0.16.x`: the compiler API and supported TSX surface may change.
|
|
16
16
|
|
|
17
|
-
**Latest release: 0.16.
|
|
17
|
+
**Latest release: 0.16.17 - Browser performance gates.** Kudzu now enforces maintained median budgets for keyed collections, bounded 10,000-item ranges, and enhanced navigation while preserving its existing lazy-load and long-session memory bounds. Read the [release notes](./RELEASES.md#01617---browser-performance-gates), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.16.17), or follow the [architecture packet](./docs/next-architecture/README.md).
|
|
18
18
|
|
|
19
19
|
- [Documentation](https://kudzujs.cloud/docs)
|
|
20
20
|
- [Installation guide](https://kudzujs.cloud/docs#install)
|
package/RELEASES.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Kudzu Releases
|
|
2
2
|
|
|
3
|
+
## 0.16.17 - Browser Performance Gates
|
|
4
|
+
|
|
5
|
+
Kudzu 0.16.17 turns existing browser performance and memory evidence into
|
|
6
|
+
maintained release alarms without changing production compiler or runtime code.
|
|
7
|
+
|
|
8
|
+
### Changed in 0.16.17
|
|
9
|
+
|
|
10
|
+
- Enforces 100 ms median budgets for 2,000-row append, filter, restore, and
|
|
11
|
+
reverse operations and project table-save and enhanced-navigation actions.
|
|
12
|
+
- Enforces 1,000 ms bounded-list and 2,000 ms complete static 10,000-row load
|
|
13
|
+
budgets while preserving retained identity and fresh off-range state.
|
|
14
|
+
- Records exact initial, session, and lazy JavaScript ownership, including one
|
|
15
|
+
shared deferred CodeMirror chunk and zero JavaScript on static siblings.
|
|
16
|
+
- Revalidates 30 ownership cycles and 101 navigations with balanced editor
|
|
17
|
+
handles, stable document/listener/cache counts, and 79,988 B forced-GC heap
|
|
18
|
+
growth under the existing alarm.
|
|
19
|
+
- Keeps single-run diagnostic acceptance outside statistical median enforcement.
|
|
20
|
+
- Adds no semantic primitive, compiler pass, production source, runtime concept,
|
|
21
|
+
public API, deploy artifact, or browser byte.
|
|
22
|
+
- Updates `create-kudzu@0.1.142` to generate projects on
|
|
23
|
+
`@kudzujs/core@^0.16.17`.
|
|
24
|
+
|
|
25
|
+
### Upgrade
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
npm install @kudzujs/core@^0.16.17
|
|
29
|
+
```
|
|
30
|
+
|
|
3
31
|
## 0.16.16 - Bounded Compiler Module Cache
|
|
4
32
|
|
|
5
33
|
Kudzu 0.16.16 bounds canonical TypeScript AST retention so the complete
|
|
@@ -15,7 +15,7 @@ The completed `0.9.0` milestone is recorded in [`0.9-semantic-compression.md`](.
|
|
|
15
15
|
|
|
16
16
|
[`1.0-large-application-compatibility-audit.md`](./1.0-large-application-compatibility-audit.md) records the first post-0.9 probes against Memos, Apache Answer, and Actual Budget. The audit finds that reduced slices build but whole-application source retention and behavior parity do not yet pass.
|
|
17
17
|
|
|
18
|
-
[`application-capability-release-plan.md`](./application-capability-release-plan.md) is the authoritative post-0.9 execution queue, currently at `0.21.
|
|
18
|
+
[`application-capability-release-plan.md`](./application-capability-release-plan.md) is the authoritative post-0.9 execution queue, currently at `0.21.3`. It assigns one application-capability section to each minor release and one independently accepted evidence packet to each patch release from `0.10.0` through the `1.0.0` gate. It supersedes the provisional 0.10/0.11/0.12 tool-first ordering in the completed 0.9 handoff without rewriting that historical record.
|
|
19
19
|
|
|
20
20
|
## Required Invariants
|
|
21
21
|
|
|
@@ -2035,6 +2035,31 @@ runtime concept, public API, deploy artifact, or browser byte.
|
|
|
2035
2035
|
- **Done condition:** complete features meet declared thresholds with bounded
|
|
2036
2036
|
long-session growth.
|
|
2037
2037
|
|
|
2038
|
+
**Result:** closed through existing route artifacts, keyed ownership, enhanced
|
|
2039
|
+
navigation, native ESM loading, and the released endurance harness. Seven fresh
|
|
2040
|
+
Chrome profiles keep 2,000-row append, filter, restore, and reverse medians at
|
|
2041
|
+
9.6, 17.6, 84.5, and 19.4 ms against a 100 ms median alarm. Project table save
|
|
2042
|
+
and list-to-detail navigation medians are 0.9 and 4.9 ms against the same alarm;
|
|
2043
|
+
the exact session graph owns 17 JavaScript files totaling 81,200 raw / 27,885
|
|
2044
|
+
aggregate gzip bytes. The static 10,000-row document loads in a 999.8 ms median
|
|
2045
|
+
against a 2,000 ms alarm. Pagination and windowing keep the DOM at 100 rows,
|
|
2046
|
+
load in 163.1 and 251.7 ms against a 1,000 ms alarm, and change range in 18.1
|
|
2047
|
+
and 23.7 ms against a 100 ms alarm.
|
|
2048
|
+
|
|
2049
|
+
The lazy editor retains 12,982 raw / 6,153 gzip eager bytes and one 250,086 raw
|
|
2050
|
+
/ 80,890 gzip deferred CodeMirror chunk; two route owners share one native ESM
|
|
2051
|
+
module request and the static sibling remains zero JavaScript. Focused Chrome
|
|
2052
|
+
acceptance passes 3/3. The endurance gate passes five warm-ups, ten stale-
|
|
2053
|
+
prefetch races, 30 ownership cycles, and 101 navigations: editor mounts and
|
|
2054
|
+
disposals balance 71/71, browser state stays zero, documents and listeners stay
|
|
2055
|
+
at six and seven, DOM nodes move by one, and forced-GC heap grows 79,988 B under
|
|
2056
|
+
the existing 2 MiB or 15% alarm. No exception or failed request occurs. Three
|
|
2057
|
+
existing benchmark entry points now fail when their declared median budgets are
|
|
2058
|
+
exceeded; the artifact collector may name the current packet. Production source,
|
|
2059
|
+
semantic primitives, compiler passes, runtime concepts, APIs, deploy artifacts,
|
|
2060
|
+
and browser bytes change by zero. Exact samples and limitations are recorded in
|
|
2061
|
+
`PERFORMANCE.md`; no package release is consumed.
|
|
2062
|
+
|
|
2038
2063
|
### `0.21.3`: Package And Release Candidate
|
|
2039
2064
|
|
|
2040
2065
|
- **Purpose:** verify the exact candidate as an installed product.
|
|
@@ -2044,6 +2069,28 @@ runtime concept, public API, deploy artifact, or browser byte.
|
|
|
2044
2069
|
- **Stop condition:** version metadata changes before the exact candidate passes.
|
|
2045
2070
|
- **Done condition:** the reviewed commit is independently publishable.
|
|
2046
2071
|
|
|
2072
|
+
**Candidate evidence:** accepted as `@kudzujs/core@0.16.17` and
|
|
2073
|
+
`create-kudzu@0.1.142`. The exact versioned tree passes `npm run check`, all 301
|
|
2074
|
+
remaining tests after the application contract, package smoke, generator
|
|
2075
|
+
creation, and both registry dry runs. Tarball inspection records the expected 85
|
|
2076
|
+
core files and four generator files with no bundled dependencies. The Node 22
|
|
2077
|
+
no-browser lane initially attempted the list acceptance despite
|
|
2078
|
+
`KUDZU_SKIP_BROWSER`; that test now follows the existing skip contract while the
|
|
2079
|
+
Node 24 required-Chrome lane retains the browser acceptance.
|
|
2080
|
+
|
|
2081
|
+
Seven fresh exact-candidate Chrome profiles pass every maintained alarm. The
|
|
2082
|
+
project table-save/navigation medians are 0.7/3.6 ms; direct, pagination, and
|
|
2083
|
+
window load medians are 849.2, 166.6, and 184.5 ms; bounded range medians are
|
|
2084
|
+
13.0 and 19.7 ms. The keyed benchmark also passes all four 100 ms alarms. A
|
|
2085
|
+
fresh endurance run balances editor mounts/disposals at 71/71 across 101
|
|
2086
|
+
navigations, with zero document/listener growth, one additional DOM node, and
|
|
2087
|
+
144,172 B forced-GC heap growth under the 2 MiB alarm. Package contents preserve
|
|
2088
|
+
the existing production compiler/runtime and introduce no semantic primitive,
|
|
2089
|
+
pass, runtime concept, API, deploy artifact, or browser byte. The immutable
|
|
2090
|
+
rollback contract remains forward-only: a failed push, tag, publication, or
|
|
2091
|
+
registry verification keeps this packet active; a published npm version or tag
|
|
2092
|
+
is never moved and requires a forward-fix patch.
|
|
2093
|
+
|
|
2047
2094
|
### `0.21.4`: AI Delivery Proof
|
|
2048
2095
|
|
|
2049
2096
|
- **Purpose:** run the final equal-condition comparison on production-shaped
|
|
@@ -2198,3 +2245,5 @@ release transaction where possible or document and publish a forward-fix patch.
|
|
|
2198
2245
|
| `0.20.5` | Closed by measured stop condition | Preserve the negative tooling-cost result and do not present structured tools as an AI cost reduction. | Tool-assisted attempts cost 16,933 more tokens per success; no release consumed |
|
|
2199
2246
|
| `0.21.0` | Closed by existing semantics | Preserve the complete browser parity matrix, large-list keyboard/release acceptance, and static exclusion controls. | No production change; no release consumed |
|
|
2200
2247
|
| `0.21.1` | Released as `0.16.16` | Preserve 100/1,000/10,000-route phase, RSS, output, digest, incremental-equivalence, recovery, and bounded canonical-AST retention evidence. | Full 10,000-route report has one complete measured run after two measured-stage diagnostics; no projection used |
|
|
2248
|
+
| `0.21.2` | Closed by existing semantics | Preserve initial/session/lazy bytes, keyed/range/navigation median alarms, and bounded endurance ownership evidence. | Same-revision absolute gates; structural artifact bytes are not compressed network transfer |
|
|
2249
|
+
| `0.21.3` | Candidate accepted as `0.16.17` | Complete the immutable release transaction, then advance to `0.21.4`. | One initial navigation benchmark invocation stalled at the outer timeout; its clean seven-profile rerun passed all alarms |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Current Compiler Architecture
|
|
2
2
|
|
|
3
|
-
This maps the current `0.16.
|
|
3
|
+
This maps the current `0.16.17` architecture, built on the completed `0.9.0` semantic-compression release and `0.8.23` Goal A compiler foundation. The active application packet is `0.21.3`; file and function names are the stable references, while line numbers are intentionally omitted because later work may still move code.
|
|
4
4
|
|
|
5
5
|
## Responsibility Map
|
|
6
6
|
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
4
|
|
|
5
|
-
Completed compiler-foundation record and longer-term plan after `0.8.35`. The [`0.9-semantic-compression.md`](./0.9-semantic-compression.md) execution queue is complete. The active queue for current work is [`application-capability-release-plan.md`](./application-capability-release-plan.md) at packet `0.21.
|
|
5
|
+
Completed compiler-foundation record and longer-term plan after `0.8.35`. The [`0.9-semantic-compression.md`](./0.9-semantic-compression.md) execution queue is complete. The active queue for current work is [`application-capability-release-plan.md`](./application-capability-release-plan.md) at packet `0.21.3`. This document does not mark any remaining planned capability as supported and does not authorize a React runtime, VDOM, hydration, retained browser component tree, generic rerenderer, public store/query/resource API, SPA router, or islands.
|
|
6
6
|
|
|
7
|
-
[`MIGRATION_ROADMAP.md`](../../MIGRATION_ROADMAP.md) remains the product authority for product invariants and fixture-driven feature selection. [`application-capability-release-plan.md`](./application-capability-release-plan.md) is authoritative for current work order and evidence at packet `0.21.
|
|
7
|
+
[`MIGRATION_ROADMAP.md`](../../MIGRATION_ROADMAP.md) remains the product authority for product invariants and fixture-driven feature selection. [`application-capability-release-plan.md`](./application-capability-release-plan.md) is authoritative for current work order and evidence at packet `0.21.3`; this plan retains the completed foundation, deferred program, and long-term production gates. If implementation evidence changes either boundary, update the relevant document before broadening a patch.
|
|
8
8
|
|
|
9
9
|
## Product Outcome
|
|
10
10
|
|
|
@@ -483,4 +483,4 @@ The first comparison is Kudzu versus React + Vite using the same agent, model, t
|
|
|
483
483
|
|
|
484
484
|
## Immediate Decision
|
|
485
485
|
|
|
486
|
-
All listed foundation and `0.9` slices are complete. Current work continues at `0.21.
|
|
486
|
+
All listed foundation and `0.9` slices are complete. Current work continues at `0.21.3` package and release candidate proof under the [`application-capability-release-plan.md`](./application-capability-release-plan.md); keep ResourceIR limited to qualifying independent fixtures, and do not add range ownership, virtualization, optimistic transactions, a public adapter/store API, or a router before evidence justifies them.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Planned Version Sequence
|
|
2
2
|
|
|
3
|
-
This is an execution sequence, not release history. `0.8.16` through `0.8.62` are completed scopes represented by package/release records. The `0.10.0` through `1.0.0` minor/patch sequence is maintained in [`application-capability-release-plan.md`](./application-capability-release-plan.md), currently at `0.21.
|
|
3
|
+
This is an execution sequence, not release history. `0.8.16` through `0.8.62` are completed scopes represented by package/release records. The `0.10.0` through `1.0.0` minor/patch sequence is maintained in [`application-capability-release-plan.md`](./application-capability-release-plan.md), currently at `0.21.3`; that plan supersedes the provisional tool-first 0.10/0.11/0.12 ordering in the completed 0.9 handoff.
|
|
4
4
|
|
|
5
5
|
Keep each patch behavior-preserving and independently reviewable. If a boundary proves inseparable, revise this plan before combining releases; do not silently broaden a patch.
|
|
6
6
|
|
|
@@ -66,7 +66,7 @@ Keep each patch behavior-preserving and independently reviewable. If a boundary
|
|
|
66
66
|
|
|
67
67
|
## Generator Versions
|
|
68
68
|
|
|
69
|
-
`create-kudzu@0.1.
|
|
69
|
+
`create-kudzu@0.1.142` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.16.17`.
|
|
70
70
|
|
|
71
71
|
## Release Boundary
|
|
72
72
|
|