Comparing ipsilon:master...luxcpp:master · ipsilon/evmone
Commits on Apr 5, 2026
-
feat: GPU parallel execution scaffolding (Block-STM + Metal/CUDA)
- evm::gpu::MvMemory — multi-version data structure for optimistic concurrency - evm::gpu::Scheduler — Block-STM collaborative task scheduler - evm::gpu::execute_block() — dispatcher for CPU/GPU backends - Backends: CPU_Sequential, CPU_Parallel, GPU_Metal, GPU_CUDA - GPU paths fall back to CPU parallel until kernels are implemented
-
feat: Block-STM parallel engine + Metal Keccak-256 GPU
- parallel_engine: real Block-STM with evmone workers via EVMC Host - parallel_host: intercepts storage via MvMemory for conflict detection - Metal Keccak-256: 13x speedup (17.1 Mhash/s GPU vs 1.3 Mhash/s CPU) - bench_parallel: 2.19x speedup on 500 tx block (CPU parallel) - All in evm::gpu namespace
-
rename: evmone namespace → evm, add block execution benchmark
- namespace evmone → evm in all lib/evm/ sources (26 files) - library target: libevmone → libevm - project name: evmone → evm - EVMC ABI preserved (evmc_create_evmone unchanged) - bench_block.cpp: sequential vs Block-STM parallel comparison - evm-gpu static lib + evm-bench-block executable
-
feat: unified GPU state hashing via luxcpp/gpu
- GpuStateHasher wraps luxcpp/gpu keccak256_batch API - auto_detect() + set_backend() for runtime GPU toggle - All 3 modes (sequential, parallel, GPU) produce identical results - 21 tests passing (mode consistency + Keccak known vectors)
-
fix: JUMPDEST validation, balance underflow check, EVMC host completion
- evm_kernel.metal: added is_valid_jumpdest() that scans bytecode from offset 0 skipping PUSH data, used by both JUMP and JUMPI opcodes - state_db.cpp: replaced assert(balance >= amount) with throw std::logic_error for release-safe balance underflow detection - evmc_host.hpp: expanded host interface for full EVM compatibility - evm_interpreter.hpp: additional opcode support in GPU interpreter