Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

EOSIO.CDT Version 1.7.0

Compare
Choose a tag to compare
@blockone-devops blockone-devops released this 10 Jan 21:13
· 1104 commits to master since this release
a6b8d3f

EOSIO.CDT v1.7.0 Release Notes

This release contains a number of new features and bug fixes.

Changes

Features:

  • Support for WebAuthN keys and signatures was added (#659), as a result eosio::public_key type and eosio::signature have become more complex than a buffer of bytes. This will require some degree of refactoring of smart contracts that use these types. The new type eosio::ecc_public_key are aliases to an std::array<char, 33> (equivalent to the old capi_public_key type), these are used to represent the original K1 and R1 keys. A new type eosio::webauthn_public_key is provided to represent a WebAuthN public key. eosio::public_key has changed to being an alias to std::variant<ecc_public_key, ecc_public_key, webauthn_public_key>, this represents either a K1, R1 or a WebAuthN key. Much like the public key, eosio::ecc_signature was added and this is an alias to std::array<char, 65> (equivalent to capi_signature type). In addition the eosio::webauthn_signature type has been added to represent a WebAuthN signature. Again like the public key case, eosio::signature has changed to be an alias to std::variant<ecc_signature, ecc_signature, webauthn_signature> (these represent K1, R1 or a WebAuthN signature).
  • Support for Weighted-Threshold Multi-Signature (WTMSig) block signing (#570) was added. This includes support for C smart contracts to access the set_proposed_producers_ex intrinsic, C++ smart contracts now have a new data structure eosio::producer_authority to represent a WTMSig block signing authority and a new method overload eosio::set_proposed_producers which takes a vector of the aforementioned eosio::producer_authority.
  • Functionality to validate an eosio::block_signing_authority was added (#688).
  • Support for EOSIO 1.8.x features have been added (#668). This includes C API "intrinsic" declarations for preactivate_feature, is_feature_activated, and get_sender. These also have new C++ methods eosio::preactivate_feature, eosio::is_feature_activated and eosio::get_sender defined.
  • A new type to act as a more efficient replacement to std::string has been added (#459). eosio::string should be more efficient in memory usage and help to reduce the bloat to smart contract WASMs that std::string imposes.
  • Added new compiler defined macros __eosio_cdt__, __eosio_cdt_native__, __eosio_cdt_major__, __eosio_cdt_minor__, and __eosio_cdt_patchlevel__ to allow developers to know when compiling source with EOSIO.CDT and what particular version it is being compiled against (#781).

Deprecations:

  • capi_public_key and capi_signature types have been deprecated (#659) as of v1.7.0 and will be removed in the next release of EOSIO.CDT.

Removals:

  • Since the old location header files were deprecated in v1.6.0, they have been removed in v1.7.0. This means that any smart contracts still including eosiolib header files from the old eosiolib prefix will now fail to compile.

Fixes:

  • Fix eosio::asset::to_string() and related functions (#661).
  • Various fixes for native tester macros (#642, #660).
  • Add missing operator < for eosio::permission_level (#656).
  • Properly handle -x compile option (#682).
  • Properly ensure that eosio-cpp won't try to build in C mode(#682).
  • Fix ABI generation failure when inheriting std types (#682).
  • Properly handle eosio::get_active_producers (#682).
  • Fix ABI generation issues with tuple types (#681).
  • Fix ABI generation issue with nested typedefs (#681).
  • Fix ABI generation stack overflow (#681).
  • Fix build and install problems (#671).
  • Fix issues with actions missing from dispatcher (#686).
  • Fix issues with ABI generation being incompatible with native definition of eosio::extended_symbol (#767).
  • Fix issues with eosio::binary_extension and explicit constructible types (#778).

Thanks!

Special thanks to the community contributors that submitted patches for this release:

Important: All material is provided subject to this important notice and you must familiarize yourself with its terms. The notice contains important information, limitations and restrictions relating to our software, publications, trademarks, third-party resources and forward-looking statements. By accessing any of our material, you accept and agree to the terms of the notice.