Skip to content

Releases: ethereum/evmc

EVMC 12.0.0

05 Aug 19:51
v12.0.0
8874e47
Compare
Choose a tag to compare

Added

  • Add Osaka EVM revision. #711
  • Add EOF TXCREATE instruction support. #709
  • Add EOFCREATE message kind support. #681
  • Add support for EOF creation transaction (EOFCREATE) in the evmc run. #713
  • go: Expose transient storage API. #708

Changed

  • Set Cancun as the latest stable revision EVMC_LATEST_STABLE_REVISION. #716

Fixed

  • C++: Fix basic_string<unsigned char> incompatibility with latest libc++. #712
  • rust: Update bindgen to fix bindings generation. #707

Removed

  • Java bindings have been removed. #706

EVMC 11.0.1

20 Dec 14:38
v11.0.1
d2de33f
Compare
Choose a tag to compare

Changed

  • Improved compatibility with CMake 3.27. #701

EVMC 11.0.0 "Cancun"

29 Nov 09:40
v11.0.0
24f939e
Compare
Choose a tag to compare

Added

  • Extended tx_context with the EIP-4844 blob hashes #691
  • Extended tx_context with the EIP-7516 "blob base fee" for the BLOBBASEFEE EVM instruction. #696
  • Added EIP-1153 transient storage support #693
  • Go: the Execute() now also returns the amount of gas refunded. #690

EVMC 10.1.1

02 Sep 17:09
v10.1.1
e10a21a
Compare
Choose a tag to compare

Fixed

  • cmake: Fix evmc_add_vm_test() not working in cross-compilation #695

EVMC 10.1.0 "Shanghai"

22 Apr 13:59
v10.1.0
3db7f9e
Compare
Choose a tag to compare

Added

  • The Prague EVM revision (anticipated after Cancun) #683
  • C++: Make evmc::Result accessible via evmc_result reference #686

Changed

  • Set Shanghai as the latest stable revision EVMC_LATEST_STABLE_REVISION. #687
  • Bump minimum supported compiler versions: #685
    • GCC: 7 → 8
    • Clang: 5 → 9
    • CMake: 3.10 → 3.16

EVMC 10.0.0

25 Aug 10:43
v10.0.0
05819e3
Compare
Choose a tag to compare

Added

  • Information about PUSH0 instruction from EIP-3855 for Shanghai revision. #628
  • The Paris (aka The Merge) EVM revision. #627 #634
  • The Cancun EVM revision (anticipated after Shanghai) #633
  • The gas refund counter has been added to the evmc_result. #666
  • The error code EVMC_LOADER_UNSPECIFIED_ERROR has been defined to provide a convenient way of initializing evmc_loader_error_code objects. #617
  • Support for Visual Studio 2022. #619
  • C++ types evmc::address and evmc::bytes32 are convertible to std::basic_string_view<uint8_t>. #636
  • Convenient constructors for C++ evmc::result. #660
  • Rust: The EvmcVm::set_option has been added. #614

Changed

  • The code_address field has been added to the evmc_message type. It represents the address of an account from which the code is being executed and is useful for DELEGATECALL implementations. #611 #615
  • The evmc_message::destination field has been renamed to evmc_message::recipient to clarify its purpose and match the naming from the Yellow Paper. #616
  • The evmc_storage_status has been extended to provide information about every possible case of storage net gas metering (EIP-2200). #661
  • The selfdestruct method returns the information if the given address has not been registered as selfdestructed yet. #662
  • C++: The evmc::result has been renamed to evmc::Result for consistency with C++ types of similar kind. #665
  • C++: The HostContext does not cache transaction context (evmc_tx_context) anymore. #631
  • Go: The create2Salt parameter has been removed from the VM.Execute(). #612
  • Code quality improvements. #618 #620 #621 #632
  • According to EIP-4399, block_difficulty field was renamed to block_prev_randao, and DIFFICULTY opcode to PREVRANDAO. #635
  • The evmc::hex support C++ library has been refactored and converted to a single-header library. #643 #648 #649 #654
  • For command-line tools to load input/code from a file the @file syntax must be used. E.g. evmc run @contract.evm --input @data.in. #647
  • Improvements to the evmc::MockedHost testing utility around account storage and selfdestructs. #661 #662 #670

Fixed

  • Java bindings fixes. #653

Removed

  • The support for C++ 0_address and 0_bytes32 literals has been removed. #652

EVMC 9.0.0

30 Jun 10:59
v9.0.0
18bea41
Compare
Choose a tag to compare

Added

  • Support for London EIP-3198: block_base_fee member added to evmc_tx_context, BASEFEE instruction added. #603
  • Added Shanghai EVM revision. #604
  • Added EVMC_LATEST_STABLE_REVISON: alias for the latest known EVM revision with finalized specification. #605
  • The --bench flag has been added to evmc run to more precisely measure execution time. #598
  • Output stream operators and to_string() overloads for EVMC types evmc_revision and evmc_status_code are now part of public C and C++ API. #599

Changed

  • Adjustments to evmc::mocked_host: storage changes to non-existent keys are now preserved. #594

EVMC 8.0.0

27 Apr 17:52
v8.0.0
b1f4f23
Compare
Choose a tag to compare

Added

  • Support for Berlin EIP-2929: access_account() and access_storage() functions added to evmc_host_interface. #571

Changed

  • Instruction SHA3 has been renamed to KECCAK256 as proposed by EIP-1803 to better match the underlying hash function. #590
  • The C++ standard required has been increased to C++17. The minimal officially supported Clang version has been increased from 3.8 to 5. #584

EVMC 7.5.0

23 Mar 21:08
v7.5.0
649c661
Compare
Choose a tag to compare

Added

  • New option --input for evmc run tool to specify execution input data (calldata). #564
  • New option --create for evmc run tool to create new contract with provided init code before main execution. This allows using Solidity compiler binary outputs directly by the tool. #566
    solc --bin Contract.sol -o .
    evmc run --create Contract.bin --input 370158ea
  • evmc run tool accepts both hex-strings or file paths for code and --input arguments. #574
  • New static C++ library evmc::hex added with procedures for hex encoding/decoding. Hex-strings are used by EVMC and related projects for internal testing. #575
  • New EVMC_INSUFFICIENT_BALANCE error code has been registered. #528

Changed

  • Java bindings fixes and improvements. It must be noted the bindings are in a work in progress state and are not suggested for production use. #535 #537 #541 #545 #549 #550 #551 #552 #553 #557 #579 #580 #581
  • C++'s std::hash and comparison operators for EVMC types has been optimized. #560 #561
  • evmc --version now also informs about the version of the loaded EVM. #567
  • The Example VM (evmc::example-vm) has been converted from C to C++. It now implements a subset of real EVM opcodes so examples and tests can use valid EVM bytecodes. #539

EVMC 7.4.0

24 Jun 16:24
v7.4.0
5915690
Compare
Choose a tag to compare

Changed

  • The C++ standard required increased to C++14. #521
  • The C++ literals for address and bytes32 types have been reimplemented to use static_assert to report errors. This makes C++ bindings exception-free (no-throw guarantee level of exception safety). #520

Removed

  • The support for Visual Studio 2015 C/C++ compiler has been dropped as a consequence of requiring C++14. #521