eval: use published rain-forker instead of the foundry-evm git dep - #523
Conversation
The generic forking executor (Forker, RawCallResult, ForkCallError, replay, tracing) moves out to the rain-forker crate on crates.io. rainlang-eval keeps only the Rain-specific layer: - error.rs / fork.rs become thin re-exports of rain_forker (native-only), so downstream paths like rain_interpreter_eval::fork::Forker keep working - fork_eval / fork_parse become a ForkEvalExt extension trait (Forker is now a foreign type) - trace.rs reads the revm-inspectors CallTraceArena directly (no foundry SparsedTraceArena wrapper) This removes the unpublishable foundry-evm git dependency (15 crates) from the workspace entirely, so rainlang-eval can itself be published. The workspace alloy bumps 1.0.12 -> 1.8.3 (rain-forker needs >=1.0.38; foundry-evm had been anchoring it low), which also clears a transitive winnow split. All eval tests pass (native + wasm + the 1000-way parallel fork_eval). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis PR extracts the forking executor from the rainlang_eval crate into a published rain-forker crate. Foundry git dependencies are removed from workspace configuration; the eval crate adopts rain-forker as a published dependency. The fork module and error types become re-exports; inherent fork methods on Forker are refactored into a ForkEvalExt extension trait. CLI commands and trace handling are updated to use the new trait. ChangesForking Executor Extraction
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related issues
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
Replaces rainlang-eval's
foundry-evmgit dependency (15 unpublishable crates) with the publishedrain-forkercrate, which provides the same generic forking executor (multi-fork RPC forking, typed calls, call tracing,replay_transaction) on revm 36 + foundry-fork-db + revm-inspectors — all on crates.io.rainlang-eval keeps only the Rain-specific layer:
error.rs/fork.rsare thin re-exports ofrain_forker(native-only), so downstream paths likerain_interpreter_eval::fork::Forkerkeep workingfork_eval/fork_parsebecome aForkEvalExtextension trait (Forkeris now a foreign type)trace.rsreads theCallTraceArenadirectly (no foundrySparsedTraceArenawrapper)This removes the foundry-evm git dep from the workspace entirely (0 foundry git refs in the lock), so rainlang-eval can itself be published — unblocking raindex's last git deps (raindex#2593).
The workspace
alloybumps 1.0.12 → 1.8.3 (rain-forker needs ≥1.0.38 via revm-inspectors; foundry-evm had been anchoring it low), which also clears a transitive winnow split. Within alloy 1.x, no source changes needed.All eval tests pass: native + wasm32 + the 1000-way parallel
fork_eval(1.04s, no deadlock).🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes