Skip to content

EVMC 6.3.0

Compare
Choose a tag to compare
@chfast chfast released this 12 Aug 10:34
· 697 commits to master since this release
v6.3.0
f48ae8b

Added

  • Experimental support for Precompiles - EVMC modules containing implementations of Ethereum precompiled contracts. To learn more read the EVMC Precompiles feature description. [#267]
  • The vm::get_capabilities() method has been added in C++ API. [#301]
  • A CMake helper for running evmc-vmtester. [#303]
  • The loader module introduces standardized EVMC module configuration string which contains path to the module and additional options. E.g. ./modules/vm.so,engine=compiler,trace,verbosity=2. A VM can be loaded, created and configured atomically with new evmc_load_and_configure() function. [#313]
  • Full support for 32-bit architectures has been added. [#327]
  • The C/C++ API for creating execution results in VMs has been extended to handle common usage cases. [#333]
  • Support for moving evmc::vm objects in C++ API. [#341]
  • The basic types address and bytes32 have received their C++ wrappers to assure they are always initialized. They also have convenient overloaded operators for comparison and usage as keys in standard containers. [#357]
  • The C++ EVMC basic types address and bytes32 have user defined literals. [#359]
    auto a = 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359_address;
    auto b = 0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3_bytes32;
  • CMake option EVMC_INSTALL (ON by default) to disable installing EVMC targets. This may be useful when EVMC is included in other project as git submodule or subtree. [#360]
  • The evmc-vmtester tool received support for EVMC module configuration. E.g. evmc-vmtester ./my_vm,mode=interpreter. [#366]
  • In evmc-vm Rust crate, ExecutionResult now has success, failure and revert helpers. [#297, #368]
  • Introduction of evmc-declare Rust crate with a procedural macro for easy VM declaration. [#262, #316]
  • Introduction of ExecutionMessage wrapper in the evmc-vm Rust crate. [#324]
  • Added type aliases and traits on basic types in the evmc-vm Rust crate. [#342, #343]

Changed

  • A lot of documentation fixes, improvements and cleanups. [#271, #272, #276, #280, #345]
  • In C++ API evmc::result::raw() renamed to evmc::result::release_raw(). [#293]
  • In evmc_load_and_create() the error_code is optional (can be NULL). [#311]

Deprecated

  • The usage of evmc/helpers.hpp has been deprecated. Use evmc/evmc.hpp which provides the same features. [#358]
  • The tracing API has been deprecated as there have been some design flaws discovered. New API is expected to be introduced in future. [#376]

Fixed

  • The vmtester tool now builds with MSVC with /std:c++17. [#261, #263]
  • The evmc_release_result() helper has been fixed. [#266, #279]
  • The missing include guard in evmc.hpp has been fixed. [#300]
  • A loaded VM with incompatible ABI version is now properly destroyed. [#305, #306]