Recent Releases of https://github.com/ipsilon/evmc
https://github.com/ipsilon/evmc - EVMC 12.1.0
Added
- Add
EVMC_DELEGATEDcall flag. #720 - Add
EVMC_EXPERIMENTALrevision to enable experimental features of EVMs. #728 - Add support for transient storage in Rust bindings. #725
- C
Published by chfast about 1 year ago
https://github.com/ipsilon/evmc - EVMC 12.0.0
Added
- Add Osaka EVM revision. #711
- Add EOF
TXCREATEinstruction support. #709 - Add
EOFCREATEmessage kind support. #681 - Add support for EOF creation transaction (
EOFCREATE) in theevmc 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
bindgento fix bindings generation. #707
Removed
- Java bindings have been removed. #706
- C
Published by chfast over 1 year ago
https://github.com/ipsilon/evmc - EVMC 11.0.1
Changed
- Improved compatibility with CMake 3.27. #701
- C
Published by chfast about 2 years ago
https://github.com/ipsilon/evmc - EVMC 11.0.0 "Cancun"
Added
- Extended
tx_contextwith the EIP-4844 blob hashes #691 - Extended
tx_contextwith the EIP-7516 "blob base fee" for theBLOBBASEFEEEVM instruction. #696 - Added EIP-1153 transient storage support #693
- Go: the
Execute()now also returns the amount of gas refunded. #690
- C
Published by chfast about 2 years ago
https://github.com/ipsilon/evmc - EVMC 10.1.1
Fixed
- cmake: Fix
evmc_add_vm_test()not working in cross-compilation #695
- C
Published by chfast over 2 years ago
https://github.com/ipsilon/evmc - EVMC 10.1.0 "Shanghai"
Added
- The Prague EVM revision (anticipated after Cancun) #683
- C++: Make
evmc::Resultaccessible viaevmc_resultreference #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
- C
Published by chfast almost 3 years ago
https://github.com/ipsilon/evmc - EVMC 10.0.0
Added
- Information about
PUSH0instruction 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_ERRORhas been defined to provide a convenient way of initializingevmc_loader_error_codeobjects. #617 - Support for Visual Studio 2022. #619
- C++ types
evmc::addressandevmc::bytes32are convertible tostd::basic_string_view<uint8_t>. #636 - Convenient constructors for C++
evmc::result. #660 - Rust: The
EvmcVm::set_optionhas been added. #614
Changed
- The
code_addressfield has been added to theevmc_messagetype. It represents the address of an account from which the code is being executed and is useful forDELEGATECALLimplementations. #611 #615 - The
evmc_message::destinationfield has been renamed toevmc_message::recipientto clarify its purpose and match the naming from the Yellow Paper. #616 - The
evmc_storage_statushas been extended to provide information about every possible case of storage net gas metering (EIP-2200). #661 - The
selfdestructmethod returns the information if the given address has not been registered as selfdestructed yet. #662 - C++: The
evmc::resulthas been renamed toevmc::Resultfor consistency with C++ types of similar kind. #665 - C++: The
HostContextdoes not cache transaction context (evmc_tx_context) anymore. #631 - Go: The
create2Saltparameter has been removed from theVM.Execute(). #612 - Code quality improvements. #618 #620 #621 #632
- According to EIP-4399,
block_difficultyfield was renamed toblock_prev_randao, andDIFFICULTYopcode toPREVRANDAO. #635 - The
evmc::hexsupport 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
@filesyntax must be used. E.g.evmc run @contract.evm --input @data.in. #647 - Improvements to the
evmc::MockedHosttesting utility around account storage and selfdestructs. #661 #662 #670
Fixed
- Java bindings fixes. #653
Removed
- The support for C++
0_addressand0_bytes32literals has been removed. #652
- C
Published by chfast over 3 years ago
https://github.com/ipsilon/evmc - EVMC 9.0.0
Added
- Support for London EIP-3198:
block_base_feemember added toevmc_tx_context,BASEFEEinstruction added. #603 - Added Shanghai EVM revision. #604
- Added
EVMC_LATEST_STABLE_REVISON: alias for the latest known EVM revision with finalized specification. #605 - The
--benchflag has been added toevmc runto more precisely measure execution time. #598 - Output stream operators and
to_string()overloads for EVMC typesevmc_revisionandevmc_status_codeare 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
- C
Published by chfast over 4 years ago
https://github.com/ipsilon/evmc - EVMC 8.0.0
Added
- Support for Berlin EIP-2929:
access_account()andaccess_storage()functions added toevmc_host_interface. #571
Changed
- Instruction
SHA3has been renamed toKECCAK256as 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
- C
Published by chfast almost 5 years ago
https://github.com/ipsilon/evmc - EVMC 7.5.0
Added
- New option
--inputforevmc runtool to specify execution input data (calldata). #564 - New option
--createforevmc runtool to create new contract with provided init code before main execution. This allows using Solidity compiler binary outputs directly by the tool. #566bash solc --bin Contract.sol -o . evmc run --create Contract.bin --input 370158ea evmc runtool accepts both hex-strings or file paths forcodeand--inputarguments. #574- New static C++ library
evmc::hexadded with procedures for hex encoding/decoding. Hex-strings are used by EVMC and related projects for internal testing. #575 - New
EVMC_INSUFFICIENT_BALANCEerror 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::hashand comparison operators for EVMC types has been optimized. #560 #561 evmc --versionnow 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
- C
Published by chfast almost 5 years ago
https://github.com/ipsilon/evmc - EVMC 7.4.0
Changed
- The C++ standard required increased to C++14. #521
- The C++ literals for
addressandbytes32types have been reimplemented to usestatic_assertto 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
- C
Published by chfast over 5 years ago
https://github.com/ipsilon/evmc - EVMC 7.3.0
Added
- Support for Go modules. #486
Changed
- The minimum Go version supported bumped to 1.11 (Go modules are required). #486
- Removed dependency on go-ethereum in Go bindings by introducing own
AddressandHashtypes. #513
- C
Published by chfast almost 6 years ago
https://github.com/ipsilon/evmc - 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 --helpfor more information. - C++: EVMC basic types
addressandbytes32have all the comparison operators supported. #474 - C++: Convenient constructors from
uint64_tadded for basic typesaddressandbytes32. #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::addressandevmc::bytes32has been fixed. #498
- C
Published by chfast almost 6 years ago
https://github.com/ipsilon/evmc - EVMC 7.1.0
Added
- Added
MockedHostC++ class (in form of header-onlyevmc::mocked_hostlibrary) 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_cpptarget has been added which represents the C++ EVMC API. #470
Changed
- Require Rust 1.37.0 as a minimum.
- In the Rust bindings mark read-only functions in
ExecutionContextas non-mutating. #444 - In the C++
HostInterfacethe logically read-only methods are marked withconst. #461 - Updated dependencies of the Rust bindings to latest stable versions. #462
- C
Published by chfast about 6 years ago
https://github.com/ipsilon/evmc - 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_idadded toevmc_tx_contextstruct. #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_instancerenamed toevmc_vm. #430 - The
evmc_contextrenamed toevmc_host_context. #426 - The
evmc_host_interfaceis now separated fromevmc_host_context. This simplifies language bindings which implement theevmc_host_interface. #427 - The
evmc::vmrenamed toevmc::VMin C++ API. #252 - Previously deprecated
helpers.hppheader file has been removed. #410 - Previously deprecated
EVMC_CONSTANTINOPLE2andEVMC_LATEST_REVISIONrevisions have been removed. #411 - Previously deprecated tracing API has been removed. #429
- In
evmc::instructionslibrary the undefined instructions have0gas cost instead of previous-1value. #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 nowboolinstead ofint. #442 - In the Rust bindings make
ExecutionContextoptional withinexecute. #350 - A set of small improvements to C++ API. #445 #449 #451
- C
Published by chfast over 6 years ago
https://github.com/ipsilon/evmc - EVMC 6.3.1
Added
- Added
LoadAndConfiguremethod 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::uint256beinstead ofevmc_uint256be. [#403] - [Cable] upgraded to 0.4.4 to fix incompatibility with older versions. [#405]
- C
Published by chfast over 6 years ago
https://github.com/ipsilon/evmc - 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::vmobjects in C++ API. [#341] - The basic types
addressandbytes32have 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
addressandbytes32have user defined literals. [#359]cpp auto a = 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359_address; auto b = 0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3_bytes32; - CMake option
EVMC_INSTALL(ONby 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-vmtestertool received support for EVMC module configuration. E.g.evmc-vmtester ./my_vm,mode=interpreter. [#366] - In
evmc-vmRust crate,ExecutionResultnow hassuccess,failureandreverthelpers. [#297, #368] - Introduction of
evmc-declareRust crate with a procedural macro for easy VM declaration. [#262, #316] - Introduction of
ExecutionMessagewrapper in theevmc-vmRust crate. [#324] - Added type aliases and traits on basic types in the
evmc-vmRust 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_codeis optional (can beNULL). [#311]
Deprecated
- The usage of
evmc/helpers.hpphas been deprecated. Useevmc/evmc.hppwhich 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
vmtestertool 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.hpphas been fixed. [#300] - A loaded VM with incompatible ABI version is now properly destroyed. [#305, #306]
- C
Published by chfast over 6 years ago
https://github.com/ipsilon/evmc - EVMC 6.2.2
- Fixed: [#281] Compilation error of
evmc::result::raw()in Visual Studio fixed. - Fixed: [#282] The
evmc::result's move assignment operator fixed.
- C
Published by chfast almost 7 years ago
https://github.com/ipsilon/evmc - EVMC 6.2.1
- Fixed: [#256, #257]
Disallow implicit conversion from C++
evmc::resulttoevmc_resultcausing unintendent premature releasing of resources.
- C
Published by chfast almost 7 years ago
https://github.com/ipsilon/evmc - EVMC 6.2.0
- Added: [#216]
CMake option
EVMC_TEST_TOOLSto 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 by
evmc_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 the
TxContextstruct. - Changed: [#221, #234, #238, #241, #242] A lot of evmc-vmtester improvements.
- Changed: #251 upgraded to version 0.2.17.
- Deprecated: [#196]
The
EVMC_CONSTANTINOPLE2revision name is deprecated, replaced withEVMC_PETERSBURG.
- C
Published by chfast almost 7 years ago
https://github.com/ipsilon/evmc - EVMC 6.1.1
- Added: [#192] Documentation of elements of evmc_revision.
- Fixed: [#190] Compilation with GCC 5 because of the "deprecated" attribute applied to an enum element.
- C
Published by chfast almost 7 years ago
https://github.com/ipsilon/evmc - EVMC 6.1.0
- Added: [#174] The Istanbul EVM revision.
- Added: [#182]
The
is_zero()C++ helper for basic data types. - Added: [#186] Reserved the post-Constantinople EVM revision number.
- Added: [#187] C++ wrappers for VM and execution result objects.
- Deprecated: [#184]
The
EVMC_LATEST_REVISIONis deprecated, replaced withEVMC_MAX_REVISION.
- C
Published by axic about 7 years ago
https://github.com/ipsilon/evmc - EVMC 6.0.2
- Fixed: [#179] Add missing salt argument for CREATE2 in Host in Go bindings.
- C
Published by chfast about 7 years ago
https://github.com/ipsilon/evmc - EVMC 6.0.1
- Fixed: [#169] Integration of EVMC as a CMake subproject is easier because Hunter is not loaded unless building tests (
EVMC_TESTING=ON) is requested.
- C
Published by chfast about 7 years ago
https://github.com/ipsilon/evmc - Demo 1: geth + aleth-interpreter
The package contains geth 1.8.17 with added EVMC 6.0.0 support and Aleth Interpreter - the EVMC compatible EVM interpreter from Aleth project.
Usage:
sh
./geth --vm.evm=./aleth-interpreter.so
Geth: https://github.com/ewasm/go-ethereum/releases/tag/v1.8.17-evmc.6.0.0
- C
Published by chfast over 7 years ago
https://github.com/ipsilon/evmc - EVMC 6.0.0
- Added: [#116] EVMC Host implementation example.
- Added: [#127] Support for Constantinople SSTORE net gas metering.
- Added: [#133] Support for Constantinople CREATE2 salt in Go bindings.
- Added: [#144] A VM can now report its capabilities (i.e. EVM and/or ewasm).
- Added: [#159] EVMC Host implementation guide.
- Added: [#160] EVMC VM implementation guide.
- Changed: [#119] EVMC loader symbol searching has been generalized.
- Changed: [#125] The
evmc_context_fn_tablerenamed toevmc_host_interface. - Changed: [#128] The
evmc_messagefields reordered. - Changed: [#136] The
evmc_set_option()now returns more information about the failure cause. - Changed: [#138], [#140] In C the
booltype is used instead ofintfor true/false flags. - Changed: [#152] Introduction of the
evmc_bytes32type. - Changed: [#154] Simplification of signatures of Host methods.
- C
Published by chfast over 7 years ago
https://github.com/ipsilon/evmc - EVMC 5.2.0
- Feature: [#81] Use also "evmc_create" function name for loading EVMC DLLs.
- Fix: [#92] The evmc.h header compatibility with C++98 fixed.
- Fix: [#93], [#103] Compilation and build configuration fixes.
- Improved: [#97], [#107] Documentation improvements, including documentation for the VM Tester.
- C
Published by chfast over 7 years ago
https://github.com/ipsilon/evmc - EVMC 5.1.0
- Feature: [#41] Go language bindings for EVMC.
- Feature: [#56, #62] New error codes.
- Feature: [#67, #68, #70] More helper functions.
- Fix: [#72] Go bindings: Properly handle unknown error codes.
- Improved: [#58] Documentation has been extended.
- Improved: [#59] Optional Result Storage helper module has been separated.
- Improved: [#75] Cable upgraded to 0.2.11.
- Improved: [#77] The license changed from MIT to Apache 2.0.
- C
Published by chfast over 7 years ago
https://github.com/ipsilon/evmc - EVMC 5.0.0
- Feature: [#23, #24] List of status codes extended and reordered.
- Feature: [#32] VM Tracing API.
- Feature: [#33, #34] The support library with metrics tables for EVM1 instructions.
- Feature: [#35] Ability to create EVMC CMake package.
- Feature: [#40] The loader support library for VM dynamic loading.
- Feature: [#45] Constantinople: Support for
CREATE2instruction. - Feature: [#49] Constantinople: Support for
EXTCODEHASHinstruction. - Feature: [#52] Constantinople: Storage status is reported back from
evmc_set_storage().
- C
Published by chfast over 7 years ago