revm_interpreter/
lib.rs

1//! # revm-interpreter
2//!
3//! Interpreter is part of the project that executes EVM instructions.
4#![cfg_attr(not(test), warn(unused_crate_dependencies))]
5#![cfg_attr(not(feature = "std"), no_std)]
6
7#[cfg(not(feature = "std"))]
8extern crate alloc as std;
9
10#[macro_use]
11mod macros;
12
13/// Gas calculation utilities and constants.
14pub mod gas;
15/// Host interface for external blockchain state access.
16pub mod host;
17/// Context passed to instruction implementations.
18pub mod instruction_context;
19/// Instruction execution results and success/error types.
20mod instruction_result;
21/// EVM instruction implementations organized by category.
22pub mod instructions;
23/// Core interpreter implementation for EVM bytecode execution.
24pub mod interpreter;
25/// Types for interpreter actions like calls and contract creation.
26pub mod interpreter_action;
27/// Type traits and definitions for interpreter customization.
28pub mod interpreter_types;
29
30// Reexport primary types.
31pub use context_interface::{
32    context::{SStoreResult, SelfDestructResult, StateLoad},
33    CreateScheme,
34};
35pub use gas::{Gas, InitialAndFloorGas};
36pub use host::Host;
37pub use instruction_context::InstructionContext;
38pub use instruction_result::*;
39pub use instructions::{instruction_table, Instruction, InstructionTable};
40pub use interpreter::{
41    num_words, InputsImpl, Interpreter, InterpreterResult, SharedMemory, Stack, STACK_LIMIT,
42};
43pub use interpreter_action::{
44    CallInput, CallInputs, CallOutcome, CallScheme, CallValue, CreateInputs, CreateOutcome,
45    FrameInput, InterpreterAction,
46};
47pub use interpreter_types::InterpreterTypes;
48pub use primitives::{eip7907::MAX_CODE_SIZE, eip7907::MAX_INITCODE_SIZE};