mirror of https://github.com/status-im/evmc.git
12 KiB
12 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.
6.3.0 - unreleased
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]
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]