Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,31 @@ jobs:
- name: Formatting
run: cargo fmt --all --check

- name: Clippy
run: cargo clippy --all-targets --no-deps -- -D warnings
- name: Clippy (all features)
run: cargo clippy --all-targets --all-features --no-deps -- -D warnings

- name: Tests (all targets)
run: cargo test --all-targets
- name: Tests (all targets, all features)
run: cargo test --all-targets --all-features

- name: Doc tests
run: cargo test --doc
- name: Doc tests (all features)
run: cargo test --doc --all-features

- name: Docs
run: cargo doc --no-deps
- name: Docs (all features)
run: cargo doc --no-deps --all-features
env:
RUSTDOCFLAGS: "-D warnings"

# --all-features enables reactive-ws, which shadows the polling-only and
# no-reactive cfg branches. Exercise those distinct compile paths too so a
# feature-gated regression cannot slip through.
- name: Feature matrix (polling-only + no-reactive core)
run: |
cargo clippy --all-targets --no-default-features --features reactive-polling --no-deps -- -D warnings
cargo test --no-default-features --features reactive-polling
cargo build --no-default-features

- name: Benchmarks compile
run: cargo bench --no-run
run: cargo bench --no-run --all-features

- name: Package
run: cargo package --locked
Expand Down
255 changes: 249 additions & 6 deletions CHANGELOG.md

Large diffs are not rendered by default.

78 changes: 77 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 16 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "evm-fork-cache"
version = "0.1.0"
version = "0.2.0"
edition = "2024"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
Expand All @@ -11,11 +11,11 @@ readme = "README.md"
repository = "https://github.com/KaiCode2/evm-fork-cache"
documentation = "https://docs.rs/evm-fork-cache"

# Keep the published crate lean: the per-phase development specs are internal
# planning artifacts (they reference an adapter surface extracted before release),
# and the CI workflow has no consumer value. The consumer-facing ROADMAP.md and
# KNOWN_ISSUES.md under docs/ are still shipped.
exclude = ["docs/phase-*-spec.md", ".github/"]
# Keep the published crate lean: development specs and release plans (per-phase
# build orders with internal line references) are planning artifacts, and the CI
# workflow has no consumer value. The consumer-facing ROADMAP.md, KNOWN_ISSUES.md,
# INTERNALS.md, and benchmark notes under docs/ are still shipped.
exclude = ["docs/*-spec.md", "docs/*-plan.md", ".github/"]

# Build the docs.rs page with every feature enabled so the full surface — the
# reactive runtime, the default WebSocket subscriber, the opt-in polling
Expand Down Expand Up @@ -49,7 +49,6 @@ alloy-rpc-types-eth = "1.0.38"
alloy-sol-types = "1.4"

futures = "0.3"
anyhow = "1.0.98"
bincode = "1.3"
foundry-fork-db = "0.22"
revm = { version = "34.0", features = ["std", "serde", "optional_eip3607", "optional_no_base_fee", "optional_balance_check"] }
Expand All @@ -67,11 +66,17 @@ tokio = { version = "1.48.0", features = ["rt-multi-thread", "time"] }
tracing = "0.1.41"

[dev-dependencies]
anyhow = "1.0.98"
alloy-node-bindings = "1.1.2"
alloy-rpc-client = { version = "1.0.38", features = ["reqwest"] }
alloy-transport = "1.0.38"
alloy-transport-http = "1.0.38"
criterion = "0.5"
# Gzip-capable HTTP client for the bulk-storage benchmark example: enabling the
# `gzip` feature makes reqwest advertise `Accept-Encoding: gzip` and
# transparently decompress responses — a large win for multi-hundred-KB
# `eth_call` payloads (see docs/bulk-storage-extraction.md).
reqwest = { version = "0.12", default-features = false, features = ["gzip"] }
# `macros` powers `#[tokio::main]`/`#[tokio::test]` in the examples and tests.
# `time` lets live RPC examples bound their subscription windows.
tokio = { version = "1.48.0", features = ["macros", "rt-multi-thread", "time"] }
Expand Down Expand Up @@ -116,6 +121,10 @@ required-features = ["reactive"]
name = "reactive_runtime"
required-features = ["reactive"]

[[example]]
name = "reactive_engine_lifecycle"
required-features = ["reactive"]

[[example]]
name = "cold_start"
required-features = ["reactive"]
Expand Down
Loading
Loading