EVMC – Ethereum Client-VM Connector API https://evmc.ethereum.org
Go to file
Stefan Talpalaru 8e5f8c8979
AppVeyor: add Nim bindings test suite
2020-02-06 11:25:20 +01:00
bindings Nimble support 2020-02-02 04:16:27 +01:00
cmake Update Hunter to v0.23.214 2019-11-11 13:38:53 +01:00
docs Rename evmc_instance -> evmc_vm 2019-09-25 21:30:32 +02:00
examples cmake: Specify c++11 as required compile feature 2019-12-23 21:42:17 +01:00
include/evmc cpp: Fix less compare for address and bytes32 2020-01-07 15:59:24 +01:00
lib cmake: Specify c++11 as required compile feature 2019-12-23 21:42:17 +01:00
test test: Add unit test for C++ less_cmp 2020-01-07 15:59:23 +01:00
tools tools: Use VM::get_raw_pointer() 2019-12-13 15:55:56 +01:00
.bumpversion.cfg EVMC 7.2.0-alpha.0 2019-12-04 10:02:20 +01:00
.clang-format ci: Upgrade clang-format to version 9 2019-09-25 13:51:24 +02:00
.clang-tidy Add clang-tidy config 2019-11-21 11:23:34 +01:00
.codespell-whitelist rust: Add helpers for execution result handling 2019-03-19 15:09:43 -04:00
.gitignore Add workspace Cargo file 2019-03-13 15:54:22 +01:00
.travis.yml CI: Run ctest tests in parallel, in random order 2019-04-02 14:41:31 +02:00
AUTHORS.md Introduce AUTHORS file 2018-08-21 09:39:42 +02:00
CHANGELOG.md CHANGELOG: And entry about operator< fix 2020-01-07 16:17:21 +01:00
CMakeLists.txt cmake: Do not set default toolchain file 2019-12-23 21:42:16 +01:00
CNAME Add CNAME for evmc.ethereum.org alias 2019-09-07 11:40:30 +01:00
Cargo.toml rust: Procedural macro for automatic VM declaration 2019-06-04 16:18:23 +01:00
Doxyfile examples: Move example_vm into the examples/example_vm subdirectory 2019-07-23 12:16:44 +01:00
LICENSE Change license to Apache 2.0 2018-08-22 13:54:30 +02:00
README.md README: Mention `evmc run` in the testing tools section 2019-12-16 20:07:41 +01:00
appveyor.yml AppVeyor: add Nim bindings test suite 2020-02-06 11:25:20 +01:00
circle.yml cmake: Do not set default toolchain file 2019-12-23 21:42:16 +01:00
codecov.yml ci: Disable codecov status reporting 2019-12-10 11:44:39 +01:00

README.md

EVMC

chat: on gitter readme style: standard

Ethereum Client-VM Connector API

The EVMC is the low-level ABI between Ethereum Virtual Machines (EVMs) and Ethereum Clients. On the EVM side it supports classic EVM1 and ewasm. On the Client-side it defines the interface for EVM implementations to access Ethereum environment and state.

Usage

Documentation

Please visit the documentation.

Languages support

Language Supported Versions Supported Compilers Feature Support
C C99, C11 GCC 6+, clang 3.8+, MSVC 2015+ Host- and VM-side
C++ C++11, C++14, C++17 GCC 6+, clang 3.8+, MSVC 2015+ Host- and VM-side
Go (bindings) 1.9 - 1.12 Host-side only
Rust (bindings)¹ 2018 edition 1.37.0 and newer VM-side only
Java (bindings) 11 Host-side only

1. Rust support is limited and not complete yet, but it is mostly functional already. Breaking changes are possible at this stage.

Testing tools

  • evmc run (tools/evmc) — executes bytecode in any EVMC-compatible VM implementation.
  • evmc-vmtester (tools/vmtester) — can test any EVM implementation for compatibility with EVMC.
  • evm-test (evmone → test/unittests) — allows running the collection of evmone's unit tests on any EVMC-compatible EVM implementation.
  • evmone-fuzzer (evmone → test/fuzzer) — differential fuzzer for EVMC-compatible EVM implementations.

EVMs

Clients

Maintainers

See also the list of EVMC Authors.

Contributing

chat: on gitter

Talk with us on the EVMC Gitter chat.

License

Licensed under the MIT License.

Internal

Making new release

  1. Update CHANGELOG.md, put the release date, update release link.
  2. git add CHANGELOG.md.
  3. Tag new release: bumpversion --allow-dirty prerel.
  4. Prepare CHANGELOG for next release: add unreleased section and link.
  5. git add CHANGELOG.md.
  6. Start new release series: bumpversion --allow-dirty --no-tag minor.