bindings
EVMC 12.1.0cmake
cmake: Upgrade Hunter (#714)docs
EVMC 12.0.0-alpha.0examples
EVMC 12.1.0include
Add EXPERIMENTAL revision (#728)lib
Add EXPERIMENTAL revision (#728)test
Add EXPERIMENTAL revision (#728)tools
Add EOFCREATE message support (#681).bumpversion.cfg
EVMC 12.1.0.clang-format
Update clang-format config.clang-tidy
Update clang-tidy config.codespell-whitelist
ci: Upgrade compilers.gitignore
Add workspace Cargo file.travis.yml
CI: Run ctest tests in parallel, in random orderappveyor.yml
ci: Compile warning as errorAUTHORS.md
Introduce AUTHORS fileCargo.toml
rust: Procedural macro for automatic VM declarationCHANGELOG.md
EVMC 12.1.0circle.yml
ci: Upgrade macos resource class after deprecationCMakeLists.txt
EVMC 12.1.0CNAME
Add CNAME for evmc.ethereum.org aliascodecov.yml
ci: Disable codecov status reportingDoxyfile
Update doxygen configgo.mod
EVMC 12.0.0-alpha.0LICENSE
Change license to Apache 2.0README.md
Add phant to READMEEVMC
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 8+, clang 9+, MSVC 2017+ | Host- and VM-side |
| C++ | C++17 | GCC 8+, clang 9+, MSVC 2017+ | Host- and VM-side |
| Go (bindings) | 1.11+ (with modules) | Host-side only | |
| Rust (bindings)¹ | 2018 edition | 1.47.0 and newer | VM-side only |
| Java (bindings)² | 11 | Host-side only |
- ↑ Rust support is limited and not complete yet, but it is mostly functional already. Breaking changes are possible at this stage.
- ↑ Java support is in progress and the interface remains in flux. 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.
Related projects
EVMs
- aleth-interpreter
- Daytona
- eip1962-evmc (EIP-2003 style precompile)
- evmjit
- evmone
- Hera
- Hera.rs
- ssvm-evmc
Clients
- aleth
- core-geth (in progress)
- erigon (with silkworm)
- evmc-js
- go-ethereum (in progress)
- nim-evmc
- phant (in progress)
- pyevm (in progress)
- pyethereum (abandoned)
- rust-ssvm (Rust Host-side)
- silkworm
- Solidity (for integration testing)
Maintainers
See also the list of EVMC Authors.
Contributing
Talk with us on the EVMC Gitter chat.
License
Licensed under the Apache License, Version 2.0.
Internal
Making new release
- Update CHANGELOG.md, put the release date, update release link.
git add CHANGELOG.md.- Tag new release:
bumpversion --allow-dirty prerel. - Prepare CHANGELOG for next release: add unreleased section and link.
git add CHANGELOG.md.- Start new release series:
bumpversion --allow-dirty --no-tag minor.