Skip to content

feat(execution): Delete Base Execution Evm Crate#1602

Draft
refcell wants to merge 1 commit intomainfrom
feat/remove-base-execution-evm
Draft

feat(execution): Delete Base Execution Evm Crate#1602
refcell wants to merge 1 commit intomainfrom
feat/remove-base-execution-evm

Conversation

@refcell
Copy link
Contributor

@refcell refcell commented Mar 23, 2026

Summary

Merges base-execution-evm into base-revm and base-alloy-evm behind an execution feature flag, eliminating the redundant crate entirely. The split between the two crates was required to avoid a base-revm ↔ base-alloy-evm dependency cycle: lower-level execution types (error, l1_reth, next_block) live in base-revm[execution] while the EVM config, block assembler, and receipt builder live in base-alloy-evm[execution]. All consumers previously depending on base-execution-evm have been updated to depend on the appropriate crate with the execution feature enabled.

@refcell refcell added K-cleanup Kind: general cleanup A-execution Area: execution crates labels Mar 23, 2026
@refcell refcell self-assigned this Mar 23, 2026
@cb-heimdall
Copy link
Collaborator

cb-heimdall commented Mar 23, 2026

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@vercel
Copy link

vercel bot commented Mar 23, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
base Ignored Ignored Preview Mar 23, 2026 4:20pm

Request Review

use base_consensus_genesis::{L1ChainConfig, RollupConfig, SystemConfig};
use base_execution_chainspec::OpChainSpecBuilder;
use base_execution_evm::OpEvmConfig;
use base_revm::OpEvmConfig;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpEvmConfig is defined and exported from base-alloy-evm (behind the execution feature), not from base-revm. This import will fail to compile.

Suggested change
use base_revm::OpEvmConfig;
use base_alloy_evm::OpEvmConfig;

The Cargo.toml for this crate also needs base-alloy-evm added as a dependency (with the execution feature enabled).

use base_bundles::{BundleExtensions, BundleTxs, ParsedBundle, TransactionResult};
use base_execution_chainspec::OpChainSpec;
use base_execution_evm::{OpEvmConfig, OpNextBlockEnvAttributes};
use base_revm::{OpEvmConfig, OpNextBlockEnvAttributes};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpEvmConfig is exported from base-alloy-evm, not base-revm. OpNextBlockEnvAttributes is correctly in base-revm. This needs to be split:

Suggested change
use base_revm::{OpEvmConfig, OpNextBlockEnvAttributes};
use base_alloy_evm::OpEvmConfig;
use base_revm::OpNextBlockEnvAttributes;

The crate's Cargo.toml also needs base-alloy-evm added as a dependency with the execution feature.

use base_alloy_consensus::OpBlock;
use base_execution_chainspec::OpChainSpec;
use base_execution_evm::{OpEvmConfig, OpNextBlockEnvAttributes};
use base_revm::{OpEvmConfig, OpNextBlockEnvAttributes};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue as in meter.rs: OpEvmConfig is exported from base-alloy-evm, not base-revm.

Suggested change
use base_revm::{OpEvmConfig, OpNextBlockEnvAttributes};
use base_alloy_evm::OpEvmConfig;
use base_revm::OpNextBlockEnvAttributes;

use base_alloy_evm::{OpBlockExecutorFactory, OpEvm, OpEvmFactory};
use base_execution_chainspec::{BASE_MAINNET, BASE_SEPOLIA, OpChainSpec};
use base_execution_evm::{OpEvmConfig, OpRethReceiptBuilder};
use base_revm::{OpEvmConfig, OpRethReceiptBuilder};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neither OpEvmConfig nor OpRethReceiptBuilder is exported from base-revm — both are in base-alloy-evm.

Suggested change
use base_revm::{OpEvmConfig, OpRethReceiptBuilder};
use base_alloy_evm::{OpEvmConfig, OpRethReceiptBuilder};

//! };
//! use base_execution_chainspec::BASE_SEPOLIA;
//! use base_execution_evm::OpEvmConfig;
//! use base_revm::OpEvmConfig;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doc example references base_revm::OpEvmConfig but OpEvmConfig is exported from base_alloy_evm, not base_revm. This doc example won't compile if tested with cargo test --doc.

Suggested change
//! use base_revm::OpEvmConfig;
//! use base_alloy_evm::OpEvmConfig;

@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 97f345d to 31e4593 Compare March 23, 2026 16:20
@github-actions
Copy link
Contributor

Review Summary

The crate consolidation is well-structured: lower-level execution types (error, l1_reth, next_block) go to base-revm[execution] while the EVM config, block assembler, and receipt builder go to base-alloy-evm[execution]. Feature gating, orphan-rule compliance, and re-export structure are all correct.

Blocking: Wrong import paths (5 files)

These are already flagged in inline comments but are compilation-breaking — OpEvmConfig and OpRethReceiptBuilder are exported from base-alloy-evm (behind execution), not from base-revm:

File Wrong import Fix
actions/harness/src/l2.rs:18 use base_revm::OpEvmConfig use base_alloy_evm::OpEvmConfig + add base-alloy-evm dep to Cargo.toml
crates/client/metering/src/block.rs:9 use base_revm::{OpEvmConfig, …} Split: OpEvmConfig from base_alloy_evm, OpNextBlockEnvAttributes from base_revm + add base-alloy-evm dep
crates/client/metering/src/meter.rs:9 use base_revm::{OpEvmConfig, …} Same split as block.rs
crates/execution/node/tests/it/builder.rs:9 use base_revm::{OpEvmConfig, OpRethReceiptBuilder} use base_alloy_evm::{OpEvmConfig, OpRethReceiptBuilder}
crates/execution/node/src/rpc.rs:19 use base_revm::OpEvmConfig (doc example) use base_alloy_evm::OpEvmConfig

No other issues found. The module organization, feature flag design, dependency direction, trait impl relocation (orphan-rule-correct move of FromRecoveredTx/FromTxWithEncoded for OpTransaction to base-revm), and Cargo.toml changes are all sound.

@github-actions github-actions bot added the M-prevent-stale Meta: Not Stale label Mar 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-execution Area: execution crates K-cleanup Kind: general cleanup M-prevent-stale Meta: Not Stale

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants