Overload cached for non-class use - #1218
Open
NullVoxPopuli wants to merge 3 commits into
Open
Conversation
* Add RFC: Overload cached for non-class use Derived-state companion to RFC 1071 (overloaded tracked). Re-uses the Reactive/ReadOnlyReactive interfaces defined there; cached(fn, options) returns a read-only CachedValue. * Fill in proposal PR URL Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Do not conflate derived state with cached state Derived state is just plain functions and needs no API; cached() is opt-in memoization of a derivation. Reword Summary, Motivation, usage headings, and How We Teach accordingly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Address review: guides link, drop terms paragraph, RFC 615 to appendix - Motivation references the in-flight reactivity guides (ember-learn/guides-source#2219) instead of claiming docs are sparse - remove the derived-vs-cached clarification paragraph (the guides cover it; not an ambiguation) - move the RFC 615 relationship to the Appendix, without any de-emphasize/deprecate intent Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Address review: drop equals, drop 'memoization' wording - remove the equals option from the proposed API entirely (calling fn is the expensive part; re-running it to discard the result is silly); noted as deferred in the Appendix - say caching, not memoization, throughout - reword the 'born a ReadOnlyReactive' sentence - drop the implementation-would-be-lower aside Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Apply suggestion from @NullVoxPopuli * Address review: get on ReadOnlyReactive, trim examples and mentions - no new CachedValue interface; add get to ReadOnlyReactive instead (an RFC 1071 oversight) and return ReadOnlyReactive from cached() - apply suggested guides sentence (drop 'over the years') - Starbeam only in prior art; resources are a different concept - remove the contrived nested-let template example Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: NullVoxPopuli-ai-agent <268630448+NullVoxPopuli-ai-agent@users.noreply.github.com> Co-authored-by: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com>
NullVoxPopuli
commented
Jul 31, 2026
NullVoxPopuli
commented
Jul 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Sample implementation
Propose overloading
@cachedfor non-class useSummary
This pull request is proposing a new RFC.
To succeed, it will need to pass into the Exploring Stage, followed by the Accepted Stage.
A Proposed or Exploring RFC may also move to the Closed Stage if it is withdrawn by the author or if it is rejected by the Ember team. This requires an "FCP to Close" period.
An FCP is required before merging this PR to advance to Accepted.
Upon merging this PR, automation will open a draft PR for this RFC to move to the Ready for Released Stage.
Exploring Stage Description
This stage is entered when the Ember team believes the concept described in the RFC should be pursued, but the RFC may still need some more work, discussion, answers to open questions, and/or a champion before it can move to the next stage.
An RFC is moved into Exploring with consensus of the relevant teams. The relevant team expects to spend time helping to refine the proposal. The RFC remains a PR and will have an
Exploringlabel applied.An Exploring RFC that is successfully completed can move to Accepted with an FCP is required as in the existing process. It may also be moved to Closed with an FCP.
Accepted Stage Description
To move into the "accepted stage" the RFC must have complete prose and have successfully passed through an "FCP to Accept" period in which the community has weighed in and consensus has been achieved on the direction. The relevant teams believe that the proposal is well-specified and ready for implementation. The RFC has a champion within one of the relevant teams.
If there are unanswered questions, we have outlined them and expect that they will be answered before Ready for Release.
When the RFC is accepted, the PR will be merged, and automation will open a new PR to move the RFC to the Ready for Release stage. That PR should be used to track implementation progress and gain consensus to move to the next stage.
Checklist to move to Exploring
S-Proposedis removed from the PR and the labelS-Exploringis added.Checklist to move to Accepted
Final Comment Periodlabel has been added to start the FCP