Skip to content

show usage of plain S.js signals inside JSX - #9

Merged
ryansolid merged 4 commits into
solidjs:masterfrom
lume:patch-1
Oct 9, 2018
Merged

ryansolid merged 4 commits into
solidjs:masterfrom
lume:patch-1

Conversation

@trusktr

@trusktr trusktr commented Oct 8, 2018

Copy link
Copy Markdown
Contributor

No description provided.

@ryansolid
ryansolid merged commit b1f056f into solidjs:master Oct 9, 2018
ryansolid added a commit that referenced this pull request Oct 30, 2026
…y a re-run (#4493)

* fix(signals): a derived store's derive re-runs when a source it pends on settles

`createStore(fn)` over an async memo. The derive went pending on the memo's
flight by propagation (`familyStatus` -> `wakeFamily`), and the store's
readers were parked on the derive itself. When the flight then settled
without the derive re-running (a rejection staged in its transaction, or a
re-ask that returned to the committed question), the settle walk retired
the memo from the derive but never reached the readers parked on it:
`isPending` stayed true forever (F-9), and the staged rejection's
transaction never landed, so the error never showed (F-12, D-41). The wake
now marks the derive blocked, as a pass that threw is, so the settle
re-runs it and its commit settles the family.

Found by the async-gen rerun on rc.20 (pair E3, rows #1 and #9).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015hPxMkC3jg3Uivh65gvaf2

* chore(size): record the derived-store settle fix's sizes over next @ 7135a77

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015hPxMkC3jg3Uivh65gvaf2

* fix(signals): a derived store's readers settle with its derive, not by a re-run

The derive pending by propagation (familyStatus -> wakeFamily) was marked
blocked so its source's settle re-ran it. For an async derive that re-run
is a new flight: when the source's rejection was staged, the walk in
stageError re-ran the derive in the same flush, ahead of the commit that
publishes the error to it. The new flight woke the family again, so a
reader beside isPending showed a second pending frame before the error
(#4463's error-once test, D-41).

The settle walk now settles the family instead (familyStatus with no
status -> settleFamily) when it retires a derive's pending without a pass
to re-run, as a memo's readers settle through its dependents (F-9, A9).
The error still reaches the derive at the commit (F-12, D-41), and the
re-ask that nets to the committed question ends isPending (F-9).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015hPxMkC3jg3Uivh65gvaf2

* chore(size): record the derived-store settle fix's sizes over next @ d0fc285

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015hPxMkC3jg3Uivh65gvaf2

* fix(signals): settle a derive's family only in a store build

On next @ 643a7a7 the ungated `else (node as any).fam?.st()` laid out
+20 B brotli on hello world (9,993 B, over its 9.98 KB cap) from -3 B
minified. A derive's family exists only when the store module is loaded,
which is what sets `storeParkHook`, so the arm is gated on it and folds
away in store-free bundles: every one is 0 B vs next, hello world
included (9,973 B). The settle walk's `_blocked` clear is back to next's
form.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015hPxMkC3jg3Uivh65gvaf2

---------

Co-authored-by: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants