This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
EOSIO.CDT Version 1.7.0
blockone-devops
released this
10 Jan 21:13
·
1104 commits
to master
since this release
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 andeosio::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 typeeosio::ecc_public_key
are aliases to anstd::array<char, 33>
(equivalent to the oldcapi_public_key
type), these are used to represent the original K1 and R1 keys. A new typeeosio::webauthn_public_key
is provided to represent a WebAuthN public key.eosio::public_key
has changed to being an alias tostd::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 tostd::array<char, 65>
(equivalent tocapi_signature
type). In addition theeosio::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 tostd::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 theset_proposed_producers_ex
intrinsic,C++
smart contracts now have a new data structureeosio::producer_authority
to represent a WTMSig block signing authority and a new method overloadeosio::set_proposed_producers
which takes a vector of the aforementionedeosio::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
, andget_sender
. These also have new C++ methodseosio::preactivate_feature
,eosio::is_feature_activated
andeosio::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 thatstd::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
andcapi_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
<
foreosio::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.