evmc/README.md

116 lines
3.8 KiB
Markdown
Raw Normal View History

2018-03-29 12:54:40 +00:00
# EVMC
2018-04-11 11:36:48 +00:00
[![chat: on gitter][gitter badge]][Gitter]
[![readme style: standard][readme style standard badge]][standard readme]
2018-03-29 12:54:40 +00:00
> Ethereum Client-VM Connector API
2018-10-23 16:52:34 +00:00
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
2018-03-29 12:54:40 +00:00
to access Ethereum environment and state.
2019-11-01 17:24:58 +00:00
2018-03-29 12:54:40 +00:00
## Usage
2019-01-18 13:05:20 +00:00
### Documentation
2018-03-29 12:54:40 +00:00
Please visit the [documentation].
2019-01-18 13:05:20 +00:00
### Languages support
2019-05-14 13:08:24 +00:00
| Language | Supported Versions | Supported Compilers
| ----------------------------- | --------------------- | ------------------------------
| **C** | C99, C11 | GCC 6+, clang 3.8+, MSVC 2015+
2019-05-14 13:08:24 +00:00
| **C++** | C++11, C++14, C++17 | GCC 6+, clang 3.8+, MSVC 2015+
| **Go** _(bindings)_ | 1.9 - 1.12 |
| **Rust** _(bindings)_[¹](#n1) | 2018 edition | 1.37.0 and newer
| **Java** _(bindings)_ | 11 |
2019-05-14 13:08:24 +00:00
<b id="n1">1</b>. Rust support is limited and not complete yet, but it is mostly functional already. Breaking changes are possible at this stage.
2019-04-24 08:31:02 +00:00
2019-11-01 17:24:58 +00:00
### Testing tools
* **evmc-vmtester** ([test/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.
2018-03-29 21:29:40 +00:00
## Related projects
### EVMs
2018-06-26 16:24:25 +00:00
- [aleth-interpreter]
2018-03-29 21:29:40 +00:00
- [evmjit]
2019-04-24 09:15:05 +00:00
- [evmone]
2018-03-29 21:29:40 +00:00
- [Hera]
2019-04-24 09:15:05 +00:00
- [Hera.rs]
- [Daytona]
- [eip1962-evmc] (EIP-2003 style precompile)
2018-03-29 21:29:40 +00:00
### Clients
2018-06-26 16:24:25 +00:00
- [aleth]
- [nim-evmc]
2018-03-29 21:29:40 +00:00
- [go-ethereum] (in progress)
- [pyevm] (in progress)
2018-06-26 16:24:25 +00:00
- [pyethereum] (abandoned)
- [Solidity] (for integration testing)
2018-03-29 12:54:40 +00:00
2018-03-29 12:54:40 +00:00
## Maintainers
- Alex Beregszaszi [@axic]
- Paweł Bylica [@chfast]
2018-08-21 07:39:42 +00:00
See also the list of [EVMC Authors](AUTHORS.md).
2018-10-24 21:42:04 +00:00
## Contributing
[![chat: on gitter][gitter badge]][Gitter]
Talk with us on the [EVMC Gitter chat][Gitter].
2018-03-29 12:54:40 +00:00
## License
2018-08-21 07:39:42 +00:00
Licensed under the [MIT License](LICENSE).
2018-03-29 12:54:40 +00:00
## Internal
### Making new release
1. Update [CHANGELOG.md](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`.
2018-03-29 12:54:40 +00:00
[@axic]: https://github.com/axic
[@chfast]: https://github.com/chfast
[documentation]: https://ethereum.github.io/evmc
2018-10-23 16:52:34 +00:00
[ewasm]: https://github.com/ewasm/design
2018-03-29 21:29:40 +00:00
[evmjit]: https://github.com/ethereum/evmjit
[evmone]: https://github.com/ethereum/evmone
2019-11-01 17:24:58 +00:00
[evmone → test/fuzzer]: https://github.com/ethereum/evmone/tree/master/test/fuzzer
[evmone → test/unittests]: https://github.com/ethereum/evmone/tree/master/test/unittests
2018-03-29 21:29:40 +00:00
[Hera]: https://github.com/ewasm/hera
2019-04-24 09:15:05 +00:00
[Hera.rs]: https://github.com/ewasm/hera.rs
[Daytona]: https://github.com/axic/daytona
[eip1962-evmc]: https://github.com/axic/eip1962-evmc
2018-04-11 11:36:48 +00:00
[Gitter]: https://gitter.im/ethereum/evmc
[aleth-interpreter]: https://github.com/ethereum/aleth/tree/master/libaleth-interpreter
[aleth]: https://github.com/ethereum/aleth
[Solidity]: https://github.com/ethereum/solidity
2018-06-26 16:24:25 +00:00
[nim-evmc]: https://github.com/status-im/nim-evmc
2019-04-24 09:15:05 +00:00
[go-ethereum]: https://github.com/ethereum/go-ethereum/pull/17954
2018-06-26 16:24:25 +00:00
[pyevm]: https://github.com/ethereum/py-evm
[pyethereum]: https://github.com/ethereum/pyethereum/pull/406
2018-04-11 11:36:48 +00:00
[standard readme]: https://github.com/RichardLitt/standard-readme
2019-11-01 17:24:58 +00:00
[test/vmtester]: https://github.com/ethereum/evmc/tree/master/test/vmtester
2018-04-11 11:36:48 +00:00
2019-05-14 13:10:34 +00:00
[gitter badge]: https://img.shields.io/gitter/room/ethereum/evmc.svg
[readme style standard badge]: https://img.shields.io/badge/readme%20style-standard-brightgreen.svg