mirror of https://github.com/status-im/evmc.git
16 KiB
16 KiB
Changelog
Documentation of all notable changes to the EVMC project.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
7.0.0 - unreleased
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 has been added. [#407]
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]
6.3.1 - 2019-08-19
Added
- Added
LoadAndConfigure
method to the Go API. [#404]
Deprecated
- Previously deprecated
is_zero()
helper has been removed, but replaced with newevmc::is_zero()
in API compatible way. [#406]
Fixed
- In C++ API the
get_balance()
method now returns expectedevmc::uint256be
instead ofevmc_uint256be
. [#403] - Cable upgraded to 0.4.4 to fix incompatibility with older versions. [#405]
6.3.0 - 2019-08-12
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
- 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]
6.2.2 - 2019-05-16
Fixed
- Compilation error of
evmc::result::raw()
in Visual Studio fixed. [#281] - The
evmc::result
's move assignment operator fixed. [#282]
6.2.1 - 2019-04-29
Fixed
- Disallow implicit conversion from C++
evmc::result
toevmc_result
causing unintendent premature releasing of resources. [#256, #257]
6.2.0 - 2019-04-25
Added
- CMake option
EVMC_TEST_TOOLS
to build evmc-vmtester without bothering with internal unit tests. [#216] - The full C++ EVMC API for both VM and Host implementations. [#217, #226]
- Initial and rough bindings for Rust. It is possible to implement an EVMC VM in Rust utilising some helpers. [#201, #202, #233]
- Handling of DLL loading errors greatly improved by
new
evmc_last_error_msg()
function. [#230, #232]
Changed
- The minimum supported GCC version is 6 (bumped from undocumented version 4.8). [#195]
- Go bindings improved by introduction of the
TxContext
struct. [#197] - A lot improvements to the
evmc-vmtester
tool. [#221, #234, #238, #241, #242] - Cable upgraded to version 0.2.17. [#251]
Deprecated
- The
EVMC_CONSTANTINOPLE2
revision name is deprecated, replaced withEVMC_PETERSBURG
. [#196]
6.1.1 - 2019-02-13
Added
- Documentation of elements of
evmc_revision
. [#192]
Fixed
- Fixed compilation with GCC 5 because of the "deprecated" attribute applied to an enum element. [#190]
6.1.0 - 2019-01-24
Added
- The Istanbul EVM revision has been added. [#174]
- The
is_zero()
C++ helper for basic data types has been added. [#182] - Reserved the post-Constantinople EVM revision number. [#186]
- The C++ wrappers for VM and execution result objects have been added. [#187]
Deprecated
- The
EVMC_LATEST_REVISION
name has been deprecated, replaced withEVMC_MAX_REVISION
. [#184]
6.0.2 - 2019-01-16
Fixed
- Add missing salt argument for CREATE2 in Host in Go bindings. [#179]
6.0.1 - 2018-11-10
Fixed
- Integration of EVMC as a CMake subproject is easier because
Hunter is not loaded unless building tests (
EVMC_TESTING=ON
) is requested. [#169]
6.0.0 - 2018-10-24
Added
- EVMC Host implementation example. [#116]
- Support for Constantinople SSTORE net gas metering. [#127]
- Support for Constantinople CREATE2 salt in Go bindings. [#133]
- A VM can now report its capabilities (i.e. EVM and/or ewasm). [#144]
- Introduction of the
evmc_bytes32
type. [#152] - EVMC Host implementation guide. [#159]
- EVMC VM implementation guide. [#160]
Changed
- EVMC loader symbol searching has been generalized. [#119]
- The
evmc_context_fn_table
renamed toevmc_host_interface
. [#125] - The
evmc_message
fields reordered. [#128] - The
evmc_set_option()
now returns more information about the failure cause. [#136] - In C the
bool
type is used instead ofint
for true/false flags. [#138, #140] - Simplification of signatures of Host methods. [#154]
5.2.0 - 2018-08-28
Added
- Use also "evmc_create" function name for loading EVMC DLLs. [#81]
Changed
Fixed
- The
evmc.h
header compatibility with C++98 fixed. [#92] - Compilation and build configuration fixes. [#93, #103]
5.1.0 - 2018-08-23
Added
- Go language bindings for EVMC. [#41]
- New error codes. [#56, #62]
- More helper functions. [#67, #68, #70]
Changed
- Documentation has been extended. [#58]
- Optional Result Storage helper module has been separated. [#59]
- Cable upgraded to 0.2.11. [#75]
- The license changed from MIT to Apache 2.0. [#77]
Fixed
- Go bindings: Properly handle unknown error codes. [#72]
5.0.0 - 2018-08-10
Added
- List of status codes extended and reordered. [#23, #24]
- VM Tracing API. [#32]
- The support library with metrics tables for EVM1 instructions. [#33, #34]
- Ability to create EVMC CMake package. [#35]
- The loader support library for VM dynamic loading. [#40]
- Constantinople: Support for
CREATE2
instruction. [#45] - Constantinople: Support for
EXTCODEHASH
instruction. [#49] - Constantinople: Storage status is reported back from
evmc_set_storage()
. [#52]