From c242b7a29fa805fa590936333db7aad1f6de1b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 7 Aug 2019 14:04:16 +0200 Subject: [PATCH] Reformat CHANGELOG --- CHANGELOG.md | 410 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 244 insertions(+), 166 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7abeb7a..948e7d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,235 +1,311 @@ # Changelog +Documentation of all notable changes to the **EVMC** project. + +The format is based on [Keep a Changelog], +and this project adheres to [Semantic Versioning]. + ## [6.3.0] - unreleased -- Added: [[#267](https://github.com/ethereum/evmc/pull/267)] - Experimental support for _Precompiles_ - +### Added + +- Experimental support for _Precompiles_ - EVMC modules containing implementations of Ethereum precompiled contracts. To learn more read the [EVMC Precompiles](https://github.com/ethereum/evmc/issues/259) feature description. -- Added: [[#301](https://github.com/ethereum/evmc/pull/301)] - The `vm::get_capabilities()` method has been added in C++ API. -- Added: [[#303](https://github.com/ethereum/evmc/pull/303)] - A CMake helper for running evmc-vmtester. -- Added: [[#313](https://github.com/ethereum/evmc/pull/313)] - The loader module introduces standardized EVMC module configuration string + [[#267](https://github.com/ethereum/evmc/pull/267)] +- The `vm::get_capabilities()` method has been added in C++ API. + [[#301](https://github.com/ethereum/evmc/pull/301)] +- A CMake helper for running evmc-vmtester. + [[#303](https://github.com/ethereum/evmc/pull/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. -- Added: [[#327](https://github.com/ethereum/evmc/pull/327)] - Full support for 32-bit architectures has been added. -- Added: [[#333](https://github.com/ethereum/evmc/pull/333)] - The C/C++ API for creating execution results in VMs has been extended + [[#313](https://github.com/ethereum/evmc/pull/313)] +- Full support for 32-bit architectures has been added. + [[#327](https://github.com/ethereum/evmc/pull/327)] +- The C/C++ API for creating execution results in VMs has been extended to handle common usage cases. -- Added: [[#341](https://github.com/ethereum/evmc/pull/341)] - Support for moving `evmc::vm` objects in C++ API. -- Added: [[#357](https://github.com/ethereum/evmc/pull/357)] - The basic types `address` and `bytes32` have received their C++ wrappers + [[#333](https://github.com/ethereum/evmc/pull/333)] +- Support for moving `evmc::vm` objects in C++ API. + [[#341](https://github.com/ethereum/evmc/pull/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. -- Added: [[#359](https://github.com/ethereum/evmc/pull/359)] - The C++ EVMC basic types `address` and `bytes32` have user defined literals. + [[#357](https://github.com/ethereum/evmc/pull/357)] +- The C++ EVMC basic types `address` and `bytes32` have user defined literals. + [[#359](https://github.com/ethereum/evmc/pull/359)] ```cpp auto a = 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359_address; auto b = 0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3_bytes32; ``` -- Added: [[#360](https://github.com/ethereum/evmc/pull/360)] - CMake option `EVMC_INSTALL` (`ON` by default) to disable installing EVMC targets. +- 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. -- Added: [[#366](https://github.com/ethereum/evmc/pull/366)] - The `evmc-vmtester` tool received support for EVMC module configuration. + [[#360](https://github.com/ethereum/evmc/pull/360)] +- The `evmc-vmtester` tool received support for EVMC module configuration. E.g. `evmc-vmtester ./my_vm,mode=interpreter`. -- Changed: + [[#366](https://github.com/ethereum/evmc/pull/366)] + +### Changed + +- A lot of documentation fixes, improvements and cleanups. [[#271](https://github.com/ethereum/evmc/pull/271), - [#272](https://github.com/ethereum/evmc/pull/272), - [#276](https://github.com/ethereum/evmc/pull/276), - [#280](https://github.com/ethereum/evmc/pull/280), - [#345](https://github.com/ethereum/evmc/pull/345)] - A lot of documentation fixes, improvements and cleanups. -- Changed: [[#293](https://github.com/ethereum/evmc/pull/293)] - In C++ API `evmc::result::raw()` renamed to `evmc::result::release_raw()`. -- Changed: [[#311](https://github.com/ethereum/evmc/pull/311)] - In `evmc_load_and_create()` the `error_code` is optional (can be `NULL`). -- Deprecated: [[#358](https://github.com/ethereum/evmc/pull/358)] - The usage of `evmc/helpers.hpp` has been deprecated. Use `evmc/evmc.hpp` + [#272](https://github.com/ethereum/evmc/pull/272), + [#276](https://github.com/ethereum/evmc/pull/276), + [#280](https://github.com/ethereum/evmc/pull/280), + [#345](https://github.com/ethereum/evmc/pull/345)] +- In C++ API `evmc::result::raw()` renamed to `evmc::result::release_raw()`. + [[#293](https://github.com/ethereum/evmc/pull/293)] +- In `evmc_load_and_create()` the `error_code` is optional (can be `NULL`). + [[#311](https://github.com/ethereum/evmc/pull/311)] + +### Deprecated + +- The usage of `evmc/helpers.hpp` has been deprecated. Use `evmc/evmc.hpp` which provides the same features. -- Deprecated: [[#376](https://github.com/ethereum/evmc/pull/376)] - The tracing API has been deprecated as there have been some design flaws discovered. + [[#358](https://github.com/ethereum/evmc/pull/358)] +- The tracing API has been deprecated as there have been some design flaws discovered. New API is expected to be introduced in future. -- Fixed: + [[#376](https://github.com/ethereum/evmc/pull/376)] + +### Fixed + +- The `vmtester` tool now builds with MSVC with `/std:c++17`. [[#261](https://github.com/ethereum/evmc/issues/261), [#263](https://github.com/ethereum/evmc/pull/263)] - The `vmtester` tool now builds with MSVC with `/std:c++17`. -- Fixed: +- The `evmc_release_result()` helper has been fixed. [[#266](https://github.com/ethereum/evmc/issues/266), - [#279](https://github.com/ethereum/evmc/pull/279)] - The `evmc_release_result()` helper has been fixed. -- Fixed: + [#279](https://github.com/ethereum/evmc/pull/279)] +- The missing include guard in `evmc.hpp` has been fixed. [[#300](https://github.com/ethereum/evmc/pull/300)] - The missing include guard in `evmc.hpp` has been fixed. -- Fixed: +- A loaded VM with incompatible ABI version is now properly destroyed. [[#305](https://github.com/ethereum/evmc/issues/305), - [#306](https://github.com/ethereum/evmc/pull/306)] - A loaded VM with incompatible ABI version is not properly destroyed. + [#306](https://github.com/ethereum/evmc/pull/306)] + ## [6.2.2] - 2019-05-16 -- Fixed: [[#281](https://github.com/ethereum/evmc/pull/281)] - Compilation error of `evmc::result::raw()` in Visual Studio fixed. -- Fixed: [[#282](https://github.com/ethereum/evmc/pull/282)] - The `evmc::result`'s move assignment operator fixed. +### Fixed + +- Compilation error of `evmc::result::raw()` in Visual Studio fixed. + [[#281](https://github.com/ethereum/evmc/pull/281)] +- The `evmc::result`'s move assignment operator fixed. + [[#282](https://github.com/ethereum/evmc/pull/282)] ## [6.2.1] - 2019-04-29 -- Fixed: +### Fixed + +- Disallow implicit conversion from C++ `evmc::result` to `evmc_result` + causing unintendent premature releasing of resources. [[#256](https://github.com/ethereum/evmc/issues/256), - [#257](https://github.com/ethereum/evmc/issues/257)] - Disallow implicit conversion from C++ `evmc::result` to `evmc_result` - causing unintendent premature releasing of resources. + [#257](https://github.com/ethereum/evmc/issues/257)] + ## [6.2.0] - 2019-04-25 -- Added: [[#216](https://github.com/ethereum/evmc/pull/216)] - CMake option `EVMC_TEST_TOOLS` to build evmc-vmtester without bothering with internal unit tests. -- Added: - [[#217](https://github.com/ethereum/evmc/pull/217)] - [[#226](https://github.com/ethereum/evmc/pull/226)] - The full C++ EVMC API for both VM and Host implementations. -- Added: [[#201](https://github.com/ethereum/evmc/pull/201), [#202](https://github.com/ethereum/evmc/pull/202), [#233](https://github.com/ethereum/evmc/pull/233)] - Initial and rough bindings for Rust. It is possible to implement an +### Added + +- CMake option `EVMC_TEST_TOOLS` to build evmc-vmtester without bothering with internal unit tests. + [[#216](https://github.com/ethereum/evmc/pull/216)] +- The full C++ EVMC API for both VM and Host implementations. + [[#217](https://github.com/ethereum/evmc/pull/217), + [#226](https://github.com/ethereum/evmc/pull/226)] +- Initial and rough **bindings for Rust**. It is possible to implement an EVMC VM in Rust utilising some helpers. -- Added: - [[#230](https://github.com/ethereum/evmc/pull/230)] - [[#232](https://github.com/ethereum/evmc/pull/232)] - Handling of DLL loading errors greatly improved by `evmc_last_error_msg()` function. -- Changed: [[#195](https://github.com/ethereum/evmc/pull/195)] - The minimum supported GCC version is 6 (bumped from undocumented version 4.8). -- Changed: [[#197](https://github.com/ethereum/evmc/pull/197)] - Go bindings improved by introduction of the `TxContext` struct. -- Changed: - [[#221](https://github.com/ethereum/evmc/pull/221)] - [[#234](https://github.com/ethereum/evmc/pull/234)] - [[#238](https://github.com/ethereum/evmc/pull/238)] - [[#241](https://github.com/ethereum/evmc/pull/241)] - [[#242](https://github.com/ethereum/evmc/pull/242)] - A lot of evmc-vmtester improvements. -- Changed: [[#251](https://github.com/ethereum/evmc/pull/251)] - [Cable] upgraded to version 0.2.17. -- Deprecated: [[#196](https://github.com/ethereum/evmc/pull/196)] - The `EVMC_CONSTANTINOPLE2` revision name is deprecated, replaced with `EVMC_PETERSBURG`. + [[#201](https://github.com/ethereum/evmc/pull/201), + [#202](https://github.com/ethereum/evmc/pull/202), + [#233](https://github.com/ethereum/evmc/pull/233)] +- Handling of DLL loading errors greatly improved by + new `evmc_last_error_msg()` function. + [[#230](https://github.com/ethereum/evmc/pull/230), + [#232](https://github.com/ethereum/evmc/pull/232)] + +### Changed + +- The minimum supported GCC version is 6 (bumped from undocumented version 4.8). + [[#195](https://github.com/ethereum/evmc/pull/195)] +- Go bindings improved by introduction of the `TxContext` struct. + [[#197](https://github.com/ethereum/evmc/pull/197)] +- A lot improvements to the `evmc-vmtester` tool. + [[#221](https://github.com/ethereum/evmc/pull/221), + [#234](https://github.com/ethereum/evmc/pull/234), + [#238](https://github.com/ethereum/evmc/pull/238), + [#241](https://github.com/ethereum/evmc/pull/241), + [#242](https://github.com/ethereum/evmc/pull/242)] +- [Cable] upgraded to version 0.2.17. + [[#251](https://github.com/ethereum/evmc/pull/251)] + +### Deprecated + +- The `EVMC_CONSTANTINOPLE2` revision name is deprecated, replaced with `EVMC_PETERSBURG`. + [[#196](https://github.com/ethereum/evmc/pull/196)] ## [6.1.1] - 2019-02-13 -- Added: [[#192](https://github.com/ethereum/evmc/pull/192)] - Documentation of elements of evmc_revision. -- Fixed: [[#190](https://github.com/ethereum/evmc/pull/190)] - Compilation with GCC 5 because of the "deprecated" attribute applied +### Added + +- Documentation of elements of `evmc_revision`. + [[#192](https://github.com/ethereum/evmc/pull/192)] + +### Fixed + +- Fixed compilation with GCC 5 because of the "deprecated" attribute applied to an enum element. + [[#190](https://github.com/ethereum/evmc/pull/190)] + ## [6.1.0] - 2019-01-24 -- Added: [[#174](https://github.com/ethereum/evmc/pull/174)] - The **Istanbul** EVM revision. -- Added: [[#182](https://github.com/ethereum/evmc/pull/182)] - The `is_zero()` C++ helper for basic data types. -- Added: [[#186](https://github.com/ethereum/evmc/pull/186)] - Reserved the post-Constantinople EVM revision number. -- Added: [[#187](https://github.com/ethereum/evmc/pull/187)] - C++ wrappers for VM and execution result objects. -- Deprecated: [[#184](https://github.com/ethereum/evmc/pull/184)] - The `EVMC_LATEST_REVISION` is deprecated, replaced with `EVMC_MAX_REVISION`. +### Added + +- The **Istanbul** EVM revision has been added. + [[#174](https://github.com/ethereum/evmc/pull/174)] +- The `is_zero()` C++ helper for basic data types has been added. + [[#182](https://github.com/ethereum/evmc/pull/182)] +- Reserved the post-Constantinople EVM revision number. + [[#186](https://github.com/ethereum/evmc/pull/186)] +- The C++ wrappers for VM and execution result objects have been added. + [[#187](https://github.com/ethereum/evmc/pull/187)] + +### Deprecated + +- The `EVMC_LATEST_REVISION` name has been deprecated, replaced with `EVMC_MAX_REVISION`. + [[#184](https://github.com/ethereum/evmc/pull/184)] + ## [6.0.2] - 2019-01-16 -- Fixed: [[#179](https://github.com/ethereum/evmc/pull/179)] - Add missing salt argument for CREATE2 in Host in Go bindings. +### Fixed + +- Add missing salt argument for CREATE2 in Host in Go bindings. + [[#179](https://github.com/ethereum/evmc/pull/179)] + ## [6.0.1] - 2018-11-10 -- Fixed: [[#169](https://github.com/ethereum/evmc/pull/169)] - Integration of EVMC as a CMake subproject is easier because +### Fixed + +- Integration of EVMC as a CMake subproject is easier because Hunter is not loaded unless building tests (`EVMC_TESTING=ON`) is requested. + [[#169](https://github.com/ethereum/evmc/pull/169)] + ## [6.0.0] - 2018-10-24 -- Added: [[#116](https://github.com/ethereum/evmc/pull/116)] - [EVMC Host implementation example](https://github.com/ethereum/evmc/blob/master/examples/example_host.cpp). -- Added: [[#127](https://github.com/ethereum/evmc/pull/127)] - Support for Constantinople SSTORE net gas metering. -- Added: [[#133](https://github.com/ethereum/evmc/pull/133)] - Support for Constantinople CREATE2 salt in Go bindings. -- Added: [[#144](https://github.com/ethereum/evmc/pull/144)] - A VM can now report its **capabilities** (i.e. EVM and/or ewasm). -- Added: [[#159](https://github.com/ethereum/evmc/pull/159)] - [EVMC Host implementation guide](https://ethereum.github.io/evmc/hostguide.html). -- Added: [[#160](https://github.com/ethereum/evmc/pull/160)] - [EVMC VM implementation guide](https://ethereum.github.io/evmc/vmguide.html). -- Changed: [[#119](https://github.com/ethereum/evmc/pull/119)] - EVMC loader symbol searching has been generalized. -- Changed: [[#125](https://github.com/ethereum/evmc/pull/125)] - The `evmc_context_fn_table` renamed to `evmc_host_interface`. -- Changed: [[#128](https://github.com/ethereum/evmc/pull/128)] - The `evmc_message` fields reordered. -- Changed: [[#136](https://github.com/ethereum/evmc/pull/136)] - The `evmc_set_option()` now returns more information about the failure cause. -- Changed: [[#138](https://github.com/ethereum/evmc/pull/138)], [[#140](https://github.com/ethereum/evmc/pull/140)] - In C the `bool` type is used instead of `int` for true/false flags. -- Changed: [[#152](https://github.com/ethereum/evmc/pull/152)] - Introduction of the `evmc_bytes32` type. -- Changed: [[#154](https://github.com/ethereum/evmc/pull/154)] - Simplification of signatures of Host methods. +### Added + +- [EVMC Host implementation example](https://github.com/ethereum/evmc/blob/master/examples/example_host.cpp). + [[#116](https://github.com/ethereum/evmc/pull/116)] +- Support for Constantinople SSTORE net gas metering. + [[#127](https://github.com/ethereum/evmc/pull/127)] +- Support for Constantinople CREATE2 salt in Go bindings. + [[#133](https://github.com/ethereum/evmc/pull/133)] +- A VM can now report its **capabilities** (i.e. EVM and/or ewasm). + [[#144](https://github.com/ethereum/evmc/pull/144)] +- Introduction of the `evmc_bytes32` type. + [[#152](https://github.com/ethereum/evmc/pull/152)] +- [EVMC Host implementation guide](https://ethereum.github.io/evmc/hostguide.html). + [[#159](https://github.com/ethereum/evmc/pull/159)] +- [EVMC VM implementation guide](https://ethereum.github.io/evmc/vmguide.html). + [[#160](https://github.com/ethereum/evmc/pull/160)] + +### Changed + +- EVMC loader symbol searching has been generalized. + [[#119](https://github.com/ethereum/evmc/pull/119)] +- The `evmc_context_fn_table` renamed to `evmc_host_interface`. + [[#125](https://github.com/ethereum/evmc/pull/125)] +- The `evmc_message` fields reordered. + [[#128](https://github.com/ethereum/evmc/pull/128)] +- The `evmc_set_option()` now returns more information about the failure cause. + [[#136](https://github.com/ethereum/evmc/pull/136)] +- In C the `bool` type is used instead of `int` for true/false flags. + [[#138](https://github.com/ethereum/evmc/pull/138), + [#140](https://github.com/ethereum/evmc/pull/140)] +- Simplification of signatures of Host methods. + [[#154](https://github.com/ethereum/evmc/pull/154)] + ## [5.2.0] - 2018-08-28 -- Feature: [[#81](https://github.com/ethereum/evmc/pull/81)] - Use also "evmc_create" function name for loading EVMC DLLs. -- Fix: [[#92](https://github.com/ethereum/evmc/pull/92)] - The evmc.h header compatibility with C++98 fixed. -- Fix: [[#93](https://github.com/ethereum/evmc/pull/93)], [[#103](https://github.com/ethereum/evmc/pull/103)] - Compilation and build configuration fixes. -- Improved: [[#97](https://github.com/ethereum/evmc/pull/97)], [[#107](https://github.com/ethereum/evmc/pull/107)] - Documentation improvements, including documentation for the VM Tester. +### Added + +- Use also "evmc_create" function name for loading EVMC DLLs. + [[#81](https://github.com/ethereum/evmc/pull/81)] + +### Changed + +- Documentation improvements, including documentation for the VM Tester. + [[#97](https://github.com/ethereum/evmc/pull/97), + [#107](https://github.com/ethereum/evmc/pull/107)] + +### Fixed + +- The `evmc.h` header compatibility with C++98 fixed. + [[#92](https://github.com/ethereum/evmc/pull/92)] +- Compilation and build configuration fixes. + [[#93](https://github.com/ethereum/evmc/pull/93), + [#103](https://github.com/ethereum/evmc/pull/103)] + ## [5.1.0] - 2018-08-23 -- Feature: [[#41](https://github.com/ethereum/evmc/pull/41)] - Go language bindings for EVMC. -- Feature: [[#56](https://github.com/ethereum/evmc/pull/56), [#62](https://github.com/ethereum/evmc/pull/62)] - New error codes. -- Feature: [[#67](https://github.com/ethereum/evmc/pull/67), [#68](https://github.com/ethereum/evmc/pull/68), [#70](https://github.com/ethereum/evmc/pull/70)] - More helper functions. -- Fix: [[#72](https://github.com/ethereum/evmc/pull/72)] - Go bindings: Properly handle unknown error codes. -- Improved: [[#58](https://github.com/ethereum/evmc/pull/58)] - Documentation has been extended. -- Improved: [[#59](https://github.com/ethereum/evmc/pull/59)] - Optional Result Storage helper module has been separated. -- Improved: [[#75](https://github.com/ethereum/evmc/pull/75)] - Cable upgraded to 0.2.11. -- Improved: [[#77](https://github.com/ethereum/evmc/pull/77)] - The license changed from MIT to Apache 2.0. +### Added + +- **Go language bindings** for EVMC. + [[#41](https://github.com/ethereum/evmc/pull/41)] +- New error codes. + [[#56](https://github.com/ethereum/evmc/pull/56), + [#62](https://github.com/ethereum/evmc/pull/62)] +- More helper functions. + [[#67](https://github.com/ethereum/evmc/pull/67), + [#68](https://github.com/ethereum/evmc/pull/68), + [#70](https://github.com/ethereum/evmc/pull/70)] + +### Changed + +- Documentation has been extended. + [[#58](https://github.com/ethereum/evmc/pull/58)] +- Optional Result Storage helper module has been separated. + [[#59](https://github.com/ethereum/evmc/pull/59)] +- [Cable] upgraded to 0.2.11. + [[#75](https://github.com/ethereum/evmc/pull/75)] +- The license changed from MIT to **Apache 2.0**. + [[#77](https://github.com/ethereum/evmc/pull/77)] + +### Fixed + +- Go bindings: Properly handle unknown error codes. + [[#72](https://github.com/ethereum/evmc/pull/72)] + ## [5.0.0] - 2018-08-10 -- Feature: [[#23](https://github.com/ethereum/evmc/pull/23), [#24](https://github.com/ethereum/evmc/pull/24)] - List of status codes extended and reordered. -- Feature: [[#32](https://github.com/ethereum/evmc/pull/32)] - VM Tracing API. -- Feature: [[#33](https://github.com/ethereum/evmc/pull/33), [#34](https://github.com/ethereum/evmc/pull/34)] - The support library with metrics tables for EVM1 instructions. -- Feature: [[#35](https://github.com/ethereum/evmc/pull/35)] - Ability to create EVMC CMake package. -- Feature: [[#40](https://github.com/ethereum/evmc/pull/40)] - The loader support library for VM dynamic loading. -- Feature: [[#45](https://github.com/ethereum/evmc/pull/45)] - Constantinople: Support for `CREATE2` instruction. -- Feature: [[#49](https://github.com/ethereum/evmc/pull/49)] - Constantinople: Support for `EXTCODEHASH` instruction. -- Feature: [[#52](https://github.com/ethereum/evmc/pull/52)] - Constantinople: Storage status is reported back from `evmc_set_storage()`. +### Added + +- List of status codes extended and reordered. + [[#23](https://github.com/ethereum/evmc/pull/23), + [#24](https://github.com/ethereum/evmc/pull/24)] +- VM Tracing API. + [[#32](https://github.com/ethereum/evmc/pull/32)] +- The support library with **metrics tables for EVM1 instructions**. + [[#33](https://github.com/ethereum/evmc/pull/33), + [#34](https://github.com/ethereum/evmc/pull/34)] +- Ability to create EVMC CMake package. + [[#35](https://github.com/ethereum/evmc/pull/35)] +- The loader support library for VM dynamic loading. + [[#40](https://github.com/ethereum/evmc/pull/40)] +- Constantinople: Support for `CREATE2` instruction. + [[#45](https://github.com/ethereum/evmc/pull/45)] +- Constantinople: Support for `EXTCODEHASH` instruction. + [[#49](https://github.com/ethereum/evmc/pull/49)] +- Constantinople: Storage status is reported back from `evmc_set_storage()`. + [[#52](https://github.com/ethereum/evmc/pull/52)] [6.3.0]: https://github.com/ethereum/evmc/compare/v6.2.1...master @@ -245,4 +321,6 @@ [5.1.0]: https://github.com/ethereum/evmc/releases/tag/v5.1.0 [5.0.0]: https://github.com/ethereum/evmc/releases/tag/v5.0.0 -[Cable]: https://github.com/ethereum/cable \ No newline at end of file +[Cable]: https://github.com/ethereum/cable +[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/ +[Semantic Versioning]: https://semver.org \ No newline at end of file