breaking: change $state.frozen
-> $state.raw
#12511
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
closes #12434. This replaces
$state.frozen
with$state.raw
, which no longer addsSTATE_FROZEN_SYMBOL
or usesObject.freeze
— it leaves its argument untouched, and just creates a source for it.Draft because one test, around each block updates, is currently failing. This is because each blocks use
STATE_FROZEN_SYMBOL
to determine what kind of optimisations to apply.I'd like to explore whether there are alternative ways to think about this. I'm not a huge fan of the runtime checking anyway — it only works in simple cases (
each numbers
, but noteach numbers.filter(is_even)
, etc). I think it's possible that we could get further with the compiler (though there might be some tricky caveats about props crossing runes/non-runes boundaries and so on) — for example we could definitely improve cases like this:Will likely investigate these ideas in other PRs and circle back to this one.
Before submitting the PR, please make sure you do the following
feat:
,fix:
,chore:
, ordocs:
.Tests and linting
pnpm test
and lint the project withpnpm lint