[package]
edition = "2024"
rust-version = "1.88"
name = "lazily"
version = "0.55.0"
build = false
exclude = ["signaling/"]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Lazy reactive signals with dependency tracking and cache invalidation"
readme = "README.md"
keywords = [
"reactive",
"signals",
"lazy",
"dependency-tracking",
"cache",
]
categories = ["data-structures"]
license = "MIT"
repository = "https://github.com/lazily-hub/lazily-rs"
[features]
async = [
"dep:tokio",
"dep:parking_lot",
]
default = ["smallvec"]
distributed = []
durable-sqlite = [
"ipc",
"dep:rusqlite",
]
ffi = [
"ipc",
"dep:serde_json",
]
instrumentation = []
ipc = [
"serde",
"dep:serde_json",
]
ipc-binary = [
"ipc",
"dep:postcard",
]
ipc-msgpack = [
"ipc",
"dep:rmp-serde",
]
json-base64 = [
"ffi",
"dep:base64",
]
loom = ["thread-safe"]
lossless-tree = ["distributed"]
scale-bench = []
scale-compare = ["dep:leptos_reactive"]
serde = [
"dep:serde",
"smallvec?/serde",
]
shm = [
"ipc",
"dep:libc",
]
signaling-client = [
"distributed",
"serde",
"dep:serde_json",
"dep:tokio",
"dep:tokio-tungstenite",
"dep:futures-util",
]
statechart = []
statechart-json = ["dep:serde_json"]
std_sync_mutex = ["thread-safe"]
thread-safe = ["dep:parking_lot"]
tokio = ["dep:tokio"]
vec_edges = []
webrtc = [
"ipc",
"dep:serde_json",
"dep:parking_lot",
]
webrtc-str0m = [
"webrtc",
"dep:str0m",
]
websocket = [
"webrtc",
"dep:tokio",
"dep:tokio-tungstenite",
"dep:futures-util",
]
[lib]
name = "lazily"
crate-type = [
"lib",
"cdylib",
]
path = "src/lib.rs"
[[bin]]
name = "lazily-interop-peer"
path = "src/bin/lazily-interop-peer.rs"
required-features = [
"distributed",
"webrtc",
]
[[example]]
name = "actor_rpc"
path = "examples/actor_rpc.rs"
[[example]]
name = "edge_audit"
path = "examples/edge_audit.rs"
[[example]]
name = "fanout_scaling"
path = "examples/fanout_scaling.rs"
[[example]]
name = "instrumentation_profile"
path = "examples/instrumentation_profile.rs"
required-features = [
"instrumentation",
"thread-safe",
]
[[example]]
name = "node_memory_audit"
path = "examples/node_memory_audit.rs"
[[example]]
name = "pubsub_load"
path = "examples/pubsub_load.rs"
[[example]]
name = "pubsub_load_thread_safe"
path = "examples/pubsub_load_thread_safe.rs"
required-features = ["thread-safe"]
[[example]]
name = "rc_handle_spike"
path = "examples/rc_handle_spike.rs"
[[example]]
name = "teardown_scope_spike"
path = "examples/teardown_scope_spike.rs"
[[example]]
name = "tokio_sync"
path = "examples/tokio_sync.rs"
required-features = ["tokio"]
[[example]]
name = "webrtc_live_e2e"
path = "examples/webrtc_live_e2e.rs"
required-features = [
"signaling-client",
"webrtc-str0m",
]
[[test]]
name = "async_integration"
path = "tests/async_integration.rs"
[[test]]
name = "async_resolve_loop"
path = "tests/async_resolve_loop.rs"
[[test]]
name = "async_state_machine"
path = "tests/async_state_machine.rs"
[[test]]
name = "async_stress"
path = "tests/async_stress.rs"
[[test]]
name = "collections_conformance"
path = "tests/collections_conformance.rs"
[[test]]
name = "collections_family_conformance"
path = "tests/collections_family_conformance.rs"
[[test]]
name = "command_conformance"
path = "tests/command_conformance.rs"
[[test]]
name = "compute_fortification"
path = "tests/compute_fortification.rs"
[[test]]
name = "computed_ripple_when"
path = "tests/computed_ripple_when.rs"
[[test]]
name = "conformance"
path = "tests/conformance.rs"
[[test]]
name = "coordination_conformance"
path = "tests/coordination_conformance.rs"
[[test]]
name = "crdt_plane"
path = "tests/crdt_plane.rs"
[[test]]
name = "crdt_tree_laws"
path = "tests/crdt_tree_laws.rs"
[[test]]
name = "decorator_factories"
path = "tests/decorator_factories.rs"
[[test]]
name = "distributed_conformance"
path = "tests/distributed_conformance.rs"
[[test]]
name = "durable_outbox"
path = "tests/durable_outbox.rs"
[[test]]
name = "familysync_conformance"
path = "tests/familysync_conformance.rs"
[[test]]
name = "feedback_drain_bound"
path = "tests/feedback_drain_bound.rs"
[[test]]
name = "ffi"
path = "tests/ffi.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "ipc"
path = "tests/ipc.rs"
[[test]]
name = "lossless_tree_conformance"
path = "tests/lossless_tree_conformance.rs"
[[test]]
name = "lossless_tree_proptest"
path = "tests/lossless_tree_proptest.rs"
[[test]]
name = "lossless_tree_schema"
path = "tests/lossless_tree_schema.rs"
[[test]]
name = "materialization_async_conformance"
path = "tests/materialization_async_conformance.rs"
[[test]]
name = "materialization_conformance"
path = "tests/materialization_conformance.rs"
[[test]]
name = "materialization_threadsafe_conformance"
path = "tests/materialization_threadsafe_conformance.rs"
[[test]]
name = "membership_conformance"
path = "tests/membership_conformance.rs"
[[test]]
name = "merge_conformance"
path = "tests/merge_conformance.rs"
[[test]]
name = "merge_execution_models"
path = "tests/merge_execution_models.rs"
[[test]]
name = "merge_laws"
path = "tests/merge_laws.rs"
[[test]]
name = "presence_conformance"
path = "tests/presence_conformance.rs"
[[test]]
name = "property_graph"
path = "tests/property_graph.rs"
[[test]]
name = "queue_conformance"
path = "tests/queue_conformance.rs"
[[test]]
name = "queue_demand_driven"
path = "tests/queue_demand_driven.rs"
[[test]]
name = "queue_family_conformance"
path = "tests/queue_family_conformance.rs"
[[test]]
name = "rateshape_conformance"
path = "tests/rateshape_conformance.rs"
[[test]]
name = "reactive_graph_conformance"
path = "tests/reactive_graph_conformance.rs"
[[test]]
name = "relay_core"
path = "tests/relay_core.rs"
[[test]]
name = "relay_examples"
path = "tests/relay_examples.rs"
[[test]]
name = "relay_policy"
path = "tests/relay_policy.rs"
[[test]]
name = "relay_roles"
path = "tests/relay_roles.rs"
[[test]]
name = "relay_spill"
path = "tests/relay_spill.rs"
[[test]]
name = "relay_transport"
path = "tests/relay_transport.rs"
[[test]]
name = "reliable_sync_conformance"
path = "tests/reliable_sync_conformance.rs"
[[test]]
name = "resilience_conformance"
path = "tests/resilience_conformance.rs"
[[test]]
name = "revision_engine"
path = "tests/revision_engine.rs"
[[test]]
name = "schema_compliance"
path = "tests/schema_compliance.rs"
[[test]]
name = "seqcrdt_conformance"
path = "tests/seqcrdt_conformance.rs"
[[test]]
name = "service_conformance"
path = "tests/service_conformance.rs"
[[test]]
name = "signal"
path = "tests/signal.rs"
[[test]]
name = "signaling_negative_conformance"
path = "tests/signaling_negative_conformance.rs"
[[test]]
name = "spec_compliance"
path = "tests/spec_compliance.rs"
[[test]]
name = "state_machine"
path = "tests/state_machine.rs"
[[test]]
name = "statechart_conformance"
path = "tests/statechart_conformance.rs"
[[test]]
name = "stdlib_conformance"
path = "tests/stdlib_conformance.rs"
[[test]]
name = "stdlib_revision_barrier"
path = "tests/stdlib_revision_barrier.rs"
[[test]]
name = "stdlib_timeout"
path = "tests/stdlib_timeout.rs"
[[test]]
name = "stdlib_timer"
path = "tests/stdlib_timer.rs"
[[test]]
name = "str0m_net"
path = "tests/str0m_net.rs"
[[test]]
name = "temporal_conformance"
path = "tests/temporal_conformance.rs"
[[test]]
name = "thread_safe_loom"
path = "tests/thread_safe_loom.rs"
[[test]]
name = "thread_safe_state_machine"
path = "tests/thread_safe_state_machine.rs"
[[test]]
name = "thread_safe_stress"
path = "tests/thread_safe_stress.rs"
[[test]]
name = "tokio_sync"
path = "tests/tokio_sync.rs"
[[test]]
name = "topic_conformance"
path = "tests/topic_conformance.rs"
[[test]]
name = "tracking_frame"
path = "tests/tracking_frame.rs"
[[test]]
name = "webrtc_signaling"
path = "tests/webrtc_signaling.rs"
[[test]]
name = "webrtc_transport"
path = "tests/webrtc_transport.rs"
[[test]]
name = "windowing_conformance"
path = "tests/windowing_conformance.rs"
[[test]]
name = "work_queue_conformance"
path = "tests/work_queue_conformance.rs"
[[bench]]
name = "async_context"
path = "benches/async_context.rs"
harness = false
required-features = ["async"]
[[bench]]
name = "context"
path = "benches/context.rs"
harness = false
[[bench]]
name = "ipc_transport"
path = "benches/ipc_transport.rs"
[[bench]]
name = "profile"
path = "benches/profile.rs"
harness = false
required-features = ["instrumentation"]
[[bench]]
name = "revision_engine"
path = "benches/revision_engine.rs"
harness = false
[[bench]]
name = "scale"
path = "benches/scale.rs"
harness = false
required-features = ["scale-bench"]
[[bench]]
name = "scale_compare"
path = "benches/scale_compare.rs"
harness = false
required-features = ["scale-compare"]
[[bench]]
name = "tokio_sync"
path = "benches/tokio_sync.rs"
harness = false
required-features = ["tokio"]
[[bench]]
name = "webrtc_transport"
path = "benches/webrtc_transport.rs"
harness = false
required-features = ["webrtc"]
[[bench]]
name = "wire_optimizations"
path = "benches/wire_optimizations.rs"
harness = false
required-features = ["json-base64"]
[dependencies.arc-swap]
version = "1"
[dependencies.base64]
version = "0.22"
optional = true
[dependencies.futures-util]
version = "0.3"
features = [
"sink",
"std",
]
optional = true
default-features = false
[dependencies.lazily-macros]
version = "=0.23.0"
[dependencies.leptos_reactive]
version = "0.6"
optional = true
[dependencies.libc]
version = "0.2"
optional = true
[dependencies.parking_lot]
version = "0.12"
optional = true
[dependencies.postcard]
version = "1"
features = ["alloc"]
optional = true
[dependencies.rmp-serde]
version = "1"
optional = true
[dependencies.rusqlite]
version = "0.40"
features = ["bundled"]
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
optional = true
[dependencies.serde_json]
version = "1"
optional = true
[dependencies.smallvec]
version = "1"
optional = true
[dependencies.str0m]
version = "0.20"
optional = true
[dependencies.tokio]
version = "1"
features = [
"macros",
"rt-multi-thread",
"sync",
"time",
"net",
"io-util",
]
optional = true
default-features = false
[dependencies.tokio-tungstenite]
version = "0.24"
features = ["rustls-tls-webpki-roots"]
optional = true
[dev-dependencies.criterion]
version = "0.8"
[dev-dependencies.jsonschema]
version = "0.46.8"
default-features = false
[dev-dependencies.libc]
version = "0.2"
[dev-dependencies.loom]
version = "0.7"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.rmp-serde]
version = "1"
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tempfile]
version = "3"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(naive_edge_remove)",
"cfg(naive_dispose_scan)",
"cfg(audit_probe)",
]