@kudzujs/core 0.16.22 → 0.16.23
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/PERFORMANCE.md +16 -0
- package/README.md +1 -1
- package/RELEASES.md +26 -0
- package/docs/next-architecture/application-capability-release-plan.md +15 -1
- package/docs/next-architecture/compiler-current-architecture.md +1 -1
- package/docs/next-architecture/versioning.md +1 -1
- package/framework/compiler/source-compiler.mjs +12 -1
- package/package.json +1 -1
package/PERFORMANCE.md
CHANGED
|
@@ -76,6 +76,22 @@ route handlers. Benchmark contract and budget deltas are zero; the production AI
|
|
|
76
76
|
comparison is not rerun until selected-branch reactive text is also addressed.
|
|
77
77
|
This follow-up ships as `@kudzujs/core@0.16.22`.
|
|
78
78
|
|
|
79
|
+
The 2026-09-04 selected-branch follow-up lowers a reactive scalar branch through
|
|
80
|
+
the existing text-binding compiler path. It adds no semantic primitive,
|
|
81
|
+
compiler pass, runtime concept, API, dependency, or shared-runtime source byte;
|
|
82
|
+
net production growth is 11 lines in one existing compiler file. The focused
|
|
83
|
+
fixture covers an update that remains in the selected branch and a later branch
|
|
84
|
+
replacement. Required Chrome, all 302 tests, `npm run check`, and package smoke
|
|
85
|
+
pass. Rebuilding the five retained commerce sources against this tree changes
|
|
86
|
+
their frozen `below` check from false to true, so all five pass build, behavior,
|
|
87
|
+
accessibility, browser, and output acceptance while retaining the zero-JavaScript
|
|
88
|
+
static sibling. The existing checkout handler grows by 147-154 transferred bytes
|
|
89
|
+
across those authored variants; no shared runtime module was added. Benchmark
|
|
90
|
+
contracts and budgets are unchanged. This is a same-source compiler follow-up,
|
|
91
|
+
not a new equal-condition model run, so the published 11/25 versus 24/25 result
|
|
92
|
+
and the `1.0.0` block remain unchanged pending the complete production rerun.
|
|
93
|
+
This follow-up ships as `@kudzujs/core@0.16.23`.
|
|
94
|
+
|
|
79
95
|
## 0.21.2 Browser Performance And Memory
|
|
80
96
|
|
|
81
97
|
Measured 2026-09-03 at revision
|
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.23 - reactive conditional branch text.** Selected conditional branches now keep scalar text reactive while their condition remains true, using Kudzu's existing text-binding ownership. The retained commerce sources pass 5/5 on the current compiler; `1.0.0` remains blocked pending a complete equal-condition rerun. Read the [release notes](./RELEASES.md#01623---reactive-conditional-branch-text), open the [release page](https://github.com/kudzujs/kudzu/releases/tag/v0.16.23), 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,31 @@
|
|
|
1
1
|
# Kudzu Releases
|
|
2
2
|
|
|
3
|
+
## 0.16.23 - Reactive Conditional Branch Text
|
|
4
|
+
|
|
5
|
+
Kudzu 0.16.23 removes the second commerce compiler blocker selected by the
|
|
6
|
+
corrected `0.21.4` AI delivery evidence: scalar text inside a selected
|
|
7
|
+
conditional branch remains reactive without restructuring ordinary TSX.
|
|
8
|
+
|
|
9
|
+
### Changed in 0.16.23
|
|
10
|
+
|
|
11
|
+
- Lowers reactive scalar conditional branches through the existing text-binding
|
|
12
|
+
compiler path while preserving conditional ownership and static HTML.
|
|
13
|
+
- Verifies updates that remain in one branch and later replace that branch in
|
|
14
|
+
required Chrome.
|
|
15
|
+
- Passes all five retained commerce sources with `empty`, `below`, and `reached`
|
|
16
|
+
true while preserving their zero-JavaScript static siblings.
|
|
17
|
+
- Adds no semantic primitive, compiler pass, runtime concept, public API,
|
|
18
|
+
dependency, or shared-runtime source byte; `1.0.0` remains unauthorized pending
|
|
19
|
+
a complete equal-condition rerun.
|
|
20
|
+
- Updates `create-kudzu@0.1.148` to generate projects on
|
|
21
|
+
`@kudzujs/core@^0.16.23`.
|
|
22
|
+
|
|
23
|
+
### Upgrade
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
npm install @kudzujs/core@^0.16.23
|
|
27
|
+
```
|
|
28
|
+
|
|
3
29
|
## 0.16.22 - Reactive Collection Count Reuse
|
|
4
30
|
|
|
5
31
|
Kudzu 0.16.22 removes the first compiler blocker selected by the corrected
|
|
@@ -2169,6 +2169,20 @@ comparison must be rerun only after the remaining selected-branch reactive-text
|
|
|
2169
2169
|
blocker is addressed. This follow-up is released as `@kudzujs/core@0.16.22`
|
|
2170
2170
|
with `create-kudzu@0.1.147`. `1.0.0` remains unauthorized.
|
|
2171
2171
|
|
|
2172
|
+
The second evidence-selected follow-up now lowers reactive scalar text inside a
|
|
2173
|
+
selected conditional branch through the existing binding descriptor and
|
|
2174
|
+
conditional ownership paths. It adds no semantic primitive, compiler pass,
|
|
2175
|
+
runtime concept, API, dependency, or shared-runtime source byte; one production
|
|
2176
|
+
compiler file grows by net 11 lines. A focused fixture proves same-branch text
|
|
2177
|
+
updates and branch replacement, and required Chrome, all 302 tests, package
|
|
2178
|
+
smoke, and `npm run check` pass. The five retained commerce sources now pass
|
|
2179
|
+
their complete acceptance with `empty`, `below`, and `reached` all true and a
|
|
2180
|
+
zero-JavaScript static sibling. Their route-specific checkout handlers add
|
|
2181
|
+
147-154 transferred bytes; no runtime module or benchmark contract changes.
|
|
2182
|
+
This does not revise the published equal-condition score without a complete
|
|
2183
|
+
rerun, so `1.0.0` remains unauthorized. This follow-up is released as
|
|
2184
|
+
`@kudzujs/core@0.16.23` with `create-kudzu@0.1.148`.
|
|
2185
|
+
|
|
2172
2186
|
## `1.0.0`: Stable Application Model
|
|
2173
2187
|
|
|
2174
2188
|
`1.0.0` is authorized only after every required `0.21.x` gate passes. It means:
|
|
@@ -2314,4 +2328,4 @@ release transaction where possible or document and publish a forward-fix patch.
|
|
|
2314
2328
|
| `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 |
|
|
2315
2329
|
| `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 |
|
|
2316
2330
|
| `0.21.3` | Released as `0.16.17` | Preserve exact package, browser, benchmark, registry, and fresh-install evidence. | One initial navigation benchmark invocation stalled at the outer timeout; its clean seven-profile rerun passed all alarms |
|
|
2317
|
-
| `0.21.4` | Measured gate failed;
|
|
2331
|
+
| `0.21.4` | Measured gate failed; selected blockers released through `0.16.23` | Preserve both raw batches, the corrected revision-2 protocols, the failed success/cost decision, collection count reuse, and selected-branch reactive text; keep `1.0.0` blocked pending a complete rerun. | Published result remains Kudzu 11/25 versus React + Vite 24/25; retained commerce sources now pass 5/5 on `0.16.23` |
|
|
@@ -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.23` architecture, built on the completed `0.9.0` semantic-compression release and `0.8.23` Goal A compiler foundation. The `0.21.4` AI delivery gate is measured and blocked; 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
|
|
|
@@ -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.148` retains the explicit install instructions and generates projects with `@kudzujs/core@^0.16.23`.
|
|
70
70
|
|
|
71
71
|
## Release Boundary
|
|
72
72
|
|
|
@@ -1872,8 +1872,19 @@ function createKudzuTransformer({ semantic, handlerUrl, file, sourceFiles, sourc
|
|
|
1872
1872
|
|
|
1873
1873
|
const compileRenderExpression = (expression, anchor) => {
|
|
1874
1874
|
const parts = conditionalParts(expression)
|
|
1875
|
-
if (!parts) return ts.visitNode(expression, visitor)
|
|
1876
1875
|
const setters = settersForNode(anchor, settersByFunction)
|
|
1876
|
+
if (!parts) {
|
|
1877
|
+
if (containsJsx(expression)) return ts.visitNode(expression, visitor)
|
|
1878
|
+
const resolved = resolveReactiveJsxExpression(expression, nearestFunction(anchor), setters)
|
|
1879
|
+
const usedStates = referencedStateNames(resolved, setters, resolved, bindingIndex)
|
|
1880
|
+
const captures = captureNames(resolved, resolved, setters, bindingIndex)
|
|
1881
|
+
if ((usedStates.size || captures.size) && !ts.isIdentifier(resolved)) {
|
|
1882
|
+
usesBehavior = true
|
|
1883
|
+
usesBinding = true
|
|
1884
|
+
return descriptors.compileReactiveBinding(resolved, { setters, importBindings, derived: calculationBinding(expression, nearestFunction(anchor)) }).node
|
|
1885
|
+
}
|
|
1886
|
+
return ts.visitNode(expression, visitor)
|
|
1887
|
+
}
|
|
1877
1888
|
const condition = resolveReactiveJsxExpression(parts.condition, nearestFunction(anchor), setters)
|
|
1878
1889
|
const usedStates = referencedStateNames(condition, setters, condition, bindingIndex)
|
|
1879
1890
|
const captures = captureNames(condition, condition, setters, bindingIndex)
|