Releases: stackblitz/alien-signals
v1.0.0
New createReactiveSystem()
API
The core algorithm is now decoupled from the public API, and you can redesign your surface API using the alien-signals algorithm.
(The following example is based on proposal-signals/signal-polyfill#44)
const system = createReactiveSystem({
updateComputed(computed: Computed) {
return computed.update();
},
notifyEffect(watcher: subtle.Watcher) {
if (watcher.flags & alien.SubscriberFlags.Dirty) {
watcher.run();
return true;
}
return false;
},
});
signal, computed, effect, effectScope are now function-based instead of class-based
The class-based API design can minimize memory usage, but at the same time I think the get()
and set()
methods of class signal are also significantly worse in DX.
Since the core algorithm is now decoupled from the surface API, we decided to stop caring about scalability and memory footprint and switch to a function-based API to ensure proper DX by default.
For the latest API usage, please refer to the readme: https://github.com/stackblitz/alien-signals#usage
Performance improved by 12% compared to v0.6
With the 1.0 refactor changes, we have again seen performance improvements in our internal benchmark scripts in alien-signals.
Please note that this improvement is only theoretical since the --jitless
flag is disabled in the alien-signals bench script, but it is a good thing anyway. :)