Expand description
GraphReFly reactive data structures (M5.A — D177/D178/D179).
Four reactive structures backed by pluggable backends, integrated at the Core level (no Graph dependency required):
ReactiveLog— append-only log with optional ring-buffer capReactiveList— ordered list with positional insert/popReactiveMap— key-value map with set/delete operationsReactiveIndex— sorted index with primary key lookup + secondary sort
Each structure owns a Core state NodeId and emits DIRTY→DATA snapshots
on every mutation. Optional mutation_log companions record typed
BaseChange<XxxChange<T>> deltas for op-log changesets (Phase 14).
Default backends use Vec<T> / HashMap<K, V>. imbl-backed persistent
backends are deferred until bench evidence justifies (D178).
CRDT-backed variants (yrs / automerge / loro / diamond-types) are post-1.0 work, gated behind feature flags.
Re-exports§
pub use backend::HashMapBackend;pub use backend::IndexBackend;pub use backend::IndexRow;pub use backend::ListBackend;pub use backend::LogBackend;pub use backend::MapBackend;pub use backend::VecIndexBackend;pub use backend::VecListBackend;pub use backend::VecLogBackend;pub use changeset::BaseChange;pub use changeset::DeleteReason;pub use changeset::IndexChange;pub use changeset::Lifecycle;pub use changeset::ListChange;pub use changeset::LogChange;pub use changeset::MapChange;pub use changeset::Version;pub use reactive::AppendLogSink;pub use reactive::AttachOptions;pub use reactive::AttachStorageHandle;pub use reactive::IndexEqualsFn;pub use reactive::IndexOutOfBounds;pub use reactive::InternFn;pub use reactive::LogView;pub use reactive::MapConfigError;pub use reactive::ReactiveIndex;pub use reactive::ReactiveIndexOptions;pub use reactive::ReactiveList;pub use reactive::ReactiveListOptions;pub use reactive::ReactiveLog;pub use reactive::ReactiveLogOptions;pub use reactive::ReactiveMap;pub use reactive::ReactiveMapOptions;pub use reactive::ReactiveSub;pub use reactive::RetentionPolicy;pub use reactive::ScanHandle;pub use reactive::UpsertOptions;pub use reactive::ViewSpec;