Details
Assignee
Antranig BasmanAntranig BasmanReporter
Antranig BasmanAntranig BasmanComponents
Priority
Major
Details
Details
Assignee
Antranig Basman
Antranig BasmanReporter
Antranig Basman
Antranig BasmanComponents
Priority
Created August 23, 2019 at 12:36 PM
Updated July 19, 2024 at 12:03 PM
The current ChangeApplier's idiom for applying updates and relays is highly inefficient in many cases, especially where the meaning of relay rules is to simply share parts of model contents without modification.
We should move over to a system where model contents are considered immutable as JS objects and any mutation is performed by a shallow "clone to root", and all implicit model relays are operated by reference sharing. This will offer performance characteristics similar to contemporary systems such as redux etc. but it should be noted that this will not necessarily be the best choice for all users - where large models are frequently receiving updates to isolated values we can generate less garbage by updating them in place (although realising these savings would also require reducing the other bookkeeping structures managed by the ChangeApplier.
This model is described at https://wiki.fluidproject.org/display/fluid/New+New+Notes+on+the+ChangeApplier .