Releases: ethereum/evmc
Releases · ethereum/evmc
EVMC 7.3.0
EVMC 7.2.0
Added
- Added Java bindings. #455 #490 #503 #512
- New evmc command-line tool has been added. At the moment it supports command run for executing bytecode in any EVMC-compatible VM implementation. Try
evmc run --help
for more information. - C++: EVMC basic types
address
andbytes32
have all the comparison operators supported. #474 - C++: Convenient constructors from
uint64_t
added for basic typesaddress
andbytes32
. #488 - C++: Added
VM::get_raw_pointer()
method to directly access VM C API when needed. #492
Changed
Fixed
- The implementation of C++
operator<
forevmc::address
andevmc::bytes32
has been fixed. #498
EVMC 7.1.0
Added
- Added
MockedHost
C++ class (in form of header-onlyevmc::mocked_host
library) which can be used to emulate Host behavior when testing VM implementations. #456 - In the Rust bindings added more type aliases (
MessageKind
,MessageFlags
,StatusCode
,StorageStatus
,Revision
). #206 - In CMake the
evmc::evmc_cpp
target has been added which represents the C++ EVMC API. #470
Changed
EVMC 7.0.0 „Istanbul Ready”
This version of EVMC delivers compatibility with Istanbul EVM revision. The ABI breaking change has been required in this case so some other backward-incompatible changes are also included and deprecated APIs have been removed.
Added
- Support for Istanbul EIP-1344 (CHAINID opcode).
chain_id
added toevmc_tx_context
struct. #375 - Support for Istanbul EIP-1884 (Repricing for trie-size-dependent opcodes). #372
- The Berlin EVM revision number has been added. #407
- In C++ API, an overload for
VM::execute()
has been added that omits the Host context and interface parameters. This is useful for Precompiles VMs that do not interact with the Host. #302
Changed
- The
evmc_instance
renamed toevmc_vm
. #430 - The
evmc_context
renamed toevmc_host_context
. #426 - The
evmc_host_interface
is now separated fromevmc_host_context
. This simplifies language bindings which implement theevmc_host_interface
. #427 - The
evmc::vm
renamed toevmc::VM
in C++ API. #252 - Previously deprecated
helpers.hpp
header file has been removed. #410 - Previously deprecated
EVMC_CONSTANTINOPLE2
andEVMC_LATEST_REVISION
revisions have been removed. #411 - Previously deprecated tracing API has been removed. #429
- In
evmc::instructions
library the undefined instructions have0
gas cost instead of previous-1
value.
#425 - The EVM instruction tables have been redesigned to be more useful. #435
- The EVMC loader trims all extensions (previously only the last one) from the EVMC module file name. #439
- The EVMC loader no longer ties to guess the VM create function name by dropping prefix words from the name. #440
- The helper function
evmc_is_abi_compatible()
returns nowbool
instead ofint
. #442 - In the Rust bindings make
ExecutionContext
optional withinexecute
. #350 - A set of small improvements to C++ API. #445 #449 #451
EVMC 6.3.1
EVMC 6.3.0
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 newevmc_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
andbytes32
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
andbytes32
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 hassuccess
,failure
andrevert
helpers. [#297, #368] - Introduction of
evmc-declare
Rust crate with a procedural macro for easy VM declaration. [#262, #316] - Introduction of
ExecutionMessage
wrapper in theevmc-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 toevmc::result::release_raw()
. [#293] - In
evmc_load_and_create()
theerror_code
is optional (can beNULL
). [#311]
Deprecated
- The usage of
evmc/helpers.hpp
has been deprecated. Useevmc/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
EVMC 6.2.2
EVMC 6.2.1
EVMC 6.2.0
- Added: [#216]
CMake optionEVMC_TEST_TOOLS
to build evmc-vmtester without bothering with internal unit tests. - Added: [#217, #226]
The full C++ EVMC API for both VM and Host implementations. - Added: [#201, #202, #233]
Initial and rough bindings for Rust. It is possible to implement an
EVMC VM in Rust utilizing some helpers. - Added: [#230, #232]
Handling of DLL loading errors greatly improved byevmc_last_error_msg()
function. - Changed: [#195]
The minimum supported GCC version is 6 (bumped from undocumented version 4.8). - Changed: [#197]
Go bindings improved by introduction of theTxContext
struct. - Changed: [#221, #234, #238, #241, #242]
A lot of evmc-vmtester improvements. - Changed: [#251]
Cable upgraded to version 0.2.17. - Deprecated: [#196]
TheEVMC_CONSTANTINOPLE2
revision name is deprecated, replaced withEVMC_PETERSBURG
.