Skip to content

Conversation

@gordonbrander
Copy link
Contributor

No description provided.

- Convert to class style
- Four types: stream, readonly stream, cell, computedcell
The functioanl style of definition is definitely terser and more fluent.
Being able to destructure and restructure cells means we can offer
readonly without a special type.
- Allows for glitch-free reactivity.
- Does not allow for cycles
- To allow cycles, we'll need to complete the implementation in
  experimental
- Two transaction phases, updates and reads
- Updates sets state, marks computed dirty, reads recalculates computed
  (using call stack as an implicit topological sorting mechanism)

TODO: write tests
We want streams to run before cell state updates so that they can only
sample the state of the graph before it updates.

...also fix bug with scan where it was one step behind.
- Streams are feed-forward (no loops)
- Cells allow loops through push-pull
- Streams are buffered
- Cells are last write wins
- Streams prevent the diamond problem by zipping pairwise (events are
  held up until both sides have provided a value... if one stream goes
  faster, then it builds up in a buffer)
We probably don't want to expose these to library consumers in some cases?
Removing them as methods and exposing as functions gives us more
optionality in what to expose to consumers.

TODO: need to figure out a cleverer way of hiding subscription endpoint
than a symbol.
@gordonbrander gordonbrander marked this pull request as ready for review June 6, 2024 23:38
@gordonbrander gordonbrander merged commit 0eef23d into main Jun 6, 2024
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