Comparing ipsilon:master...luxcpp:master · ipsilon/evmone

Commits on Apr 5, 2026

  1. 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
    Configuration menu

    Browse the repository at this point in the history

  2. Configuration menu

    Browse the repository at this point in the history

  3. 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
    Configuration menu

    Browse the repository at this point in the history

  4. 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
    Configuration menu

    Browse the repository at this point in the history

  5. 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)
    Configuration menu

    Browse the repository at this point in the history

  6. Configuration menu

    Browse the repository at this point in the history

  7. 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
    Configuration menu

    Browse the repository at this point in the history