Recent Releases of https://github.com/ipsilon/evmc

https://github.com/ipsilon/evmc - EVMC 12.1.0

Added

  • Add EVMC_DELEGATED call flag. #720
  • Add EVMC_EXPERIMENTAL revision 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 TXCREATE instruction support. #709
  • Add EOFCREATE message kind support. #681
  • Add support for EOF creation transaction (EOFCREATE) in the evmc 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 bindgen to 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_context with the EIP-4844 blob hashes #691
  • Extended tx_context with the EIP-7516 "blob base fee" for the BLOBBASEFEE EVM 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::Result accessible via evmc_result reference #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 PUSH0 instruction 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_ERROR has been defined to provide a convenient way of initializing evmc_loader_error_code objects. #617
  • Support for Visual Studio 2022. #619
  • C++ types evmc::address and evmc::bytes32 are convertible to std::basic_string_view<uint8_t>. #636
  • Convenient constructors for C++ evmc::result. #660
  • Rust: The EvmcVm::set_option has been added. #614

Changed

  • The code_address field has been added to the evmc_message type. It represents the address of an account from which the code is being executed and is useful for DELEGATECALL implementations. #611 #615
  • The evmc_message::destination field has been renamed to evmc_message::recipient to clarify its purpose and match the naming from the Yellow Paper. #616
  • The evmc_storage_status has been extended to provide information about every possible case of storage net gas metering (EIP-2200). #661
  • The selfdestruct method returns the information if the given address has not been registered as selfdestructed yet. #662
  • C++: The evmc::result has been renamed to evmc::Result for consistency with C++ types of similar kind. #665
  • C++: The HostContext does not cache transaction context (evmc_tx_context) anymore. #631
  • Go: The create2Salt parameter has been removed from the VM.Execute(). #612
  • Code quality improvements. #618 #620 #621 #632
  • According to EIP-4399, block_difficulty field was renamed to block_prev_randao, and DIFFICULTY opcode to PREVRANDAO. #635
  • The evmc::hex support 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 @file syntax must be used. E.g. evmc run @contract.evm --input @data.in. #647
  • Improvements to the evmc::MockedHost testing utility around account storage and selfdestructs. #661 #662 #670

Fixed

  • Java bindings fixes. #653

Removed

  • The support for C++ 0_address and 0_bytes32 literals 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_fee member added to evmc_tx_context, BASEFEE instruction added. #603
  • Added Shanghai EVM revision. #604
  • Added EVMC_LATEST_STABLE_REVISON: alias for the latest known EVM revision with finalized specification. #605
  • The --bench flag has been added to evmc run to more precisely measure execution time. #598
  • Output stream operators and to_string() overloads for EVMC types evmc_revision and evmc_status_code are 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() and access_storage() functions added to evmc_host_interface. #571

Changed

  • Instruction SHA3 has been renamed to KECCAK256 as 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 --input for evmc run tool to specify execution input data (calldata). #564
  • New option --create for evmc run tool to create new contract with provided init code before main execution. This allows using Solidity compiler binary outputs directly by the tool. #566 bash solc --bin Contract.sol -o . evmc run --create Contract.bin --input 370158ea
  • evmc run tool accepts both hex-strings or file paths for code and --input arguments. #574
  • New static C++ library evmc::hex added with procedures for hex encoding/decoding. Hex-strings are used by EVMC and related projects for internal testing. #575
  • New EVMC_INSUFFICIENT_BALANCE error 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::hash and comparison operators for EVMC types has been optimized. #560 #561
  • evmc --version now 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 address and bytes32 types have been reimplemented to use static_assert to 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 Address and Hash types. #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 --help for more information.
  • C++: EVMC basic types address and bytes32 have all the comparison operators supported. #474
  • C++: Convenient constructors from uint64_t added for basic types address and bytes32. #488
  • C++: Added VM::get_raw_pointer() method to directly access VM C API when needed. #492

Changed

  • CMake minimum version required has been bumped to 3.10. #495

Fixed

  • The implementation of C++ operator< for evmc::address and evmc::bytes32 has been fixed. #498

- C
Published by chfast almost 6 years ago

https://github.com/ipsilon/evmc - EVMC 7.1.0

Added

  • Added MockedHost C++ class (in form of header-only evmc::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

  • Require Rust 1.37.0 as a minimum.
  • In the Rust bindings mark read-only functions in ExecutionContext as non-mutating. #444
  • In the C++ HostInterface the logically read-only methods are marked with const. #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_id added to evmc_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 to evmc_vm. #430
  • The evmc_context renamed to evmc_host_context. #426
  • The evmc_host_interface is now separated from evmc_host_context. This simplifies language bindings which implement the evmc_host_interface. #427
  • The evmc::vm renamed to evmc::VM in C++ API. #252
  • Previously deprecated helpers.hpp header file has been removed. #410
  • Previously deprecated EVMC_CONSTANTINOPLE2 and EVMC_LATEST_REVISION revisions have been removed. #411
  • Previously deprecated tracing API has been removed. #429
  • In evmc::instructions library the undefined instructions have 0 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 now bool instead of int. #442
  • In the Rust bindings make ExecutionContext optional within execute. #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 LoadAndConfigure method to the Go API. [#404]

Deprecated

  • Previously deprecated is_zero() helper has been removed, but replaced with new evmc::is_zero() in API compatible way. [#406]

Fixed

  • In C++ API the get_balance() method now returns expected evmc::uint256be instead of evmc_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 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] cpp 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]

- 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::result to evmc_result causing 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_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 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 TxContext struct.
  • Changed: [#221, #234, #238, #241, #242] A lot of evmc-vmtester improvements.
  • Changed: #251 upgraded to version 0.2.17.
  • Deprecated: [#196] The EVMC_CONSTANTINOPLE2 revision name is deprecated, replaced with EVMC_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_REVISION is deprecated, replaced with EVMC_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_table renamed to evmc_host_interface.
  • Changed: [#128] The evmc_message fields reordered.
  • Changed: [#136] The evmc_set_option() now returns more information about the failure cause.
  • Changed: [#138], [#140] In C the bool type is used instead of int for true/false flags.
  • Changed: [#152] Introduction of the evmc_bytes32 type.
  • 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 CREATE2 instruction.
  • Feature: [#49] Constantinople: Support for EXTCODEHASH instruction.
  • Feature: [#52] Constantinople: Storage status is reported back from evmc_set_storage().

- C
Published by chfast over 7 years ago