This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
EOSIO.CDT Version 1.3.0 Release Notes
eosiolib C API
- addition of
uint64_t
typedefcapi_name
#132 - removal of
uint64_t
typedefs #132account_name
permission_name
scope_name
table_name
action_name
- these have been replaced by
capi_name
, and as a practice should not be used. The new version of thename
type should be used to replace these instances. This decision was made because of bad implict casting issues withuint64_t
and the new pattern should allow for better type safety.
- these have been replaced by
symbol_name
- this has no C equivalent and is superceded by the
symbol_code
struct. As with the previously mentioned named types, this was removed and replaced withsymbol_code
to allow for better type safety in contracts. To use a symbol, i.e. symbol name and precision, use thesymbol
class.
- this has no C equivalent and is superceded by the
- removal of
time
andweight_type
typedefs #132 - removal of the typedefs
transaction_id_type
andblock_id_type
#132 - removal of the
account_permission
struct #132 - renaming of typedefs #132
checksum160
->capi_checksum160
checksum256
->capi_checksum256
checksum512
->capi_checksum512
public_key
->capi_public_key
signature
->capi_signature
- removal of non-existent intrinsics declarations
require_write_lock
andrequire_read_lock
#132
eosiolib C++ API
- removal of eosiolib/vector.hpp #132
- removed alias
eosio::vector
and typedefbytes
- removed alias
- removal of eosiolib/types.hpp #132
- removal of eosiolib/optional.hpp #136
- removal of eosiolib/core_symbol.hpp #122
- added eosiolib/name.hpp #132
eosiolib/types.hpp
- moved the typedef
eosio::extensions_types
to eosiolib/transaction.hpp #132 - removed comparison functions for
checksum
structs #132 - removal of
eosio::char_to_symbol
,eosio::string_to_name
,eosio::name_suffix
functions #132 - removal of the
N
macro. #132 - moved
eosio::name
struct definition and ""_n operator to eosiolib/name.hpp #132
eosiolib/name.hpp
- removal of implicit and explicit conversions to
uint64_t
. #132 - addition of
enum class
eosio::name::raw
#132 - added
bool
conversion operator for conditionally testing if a name is empty #132 - all constructors are now
constexpr
#132 - added
constexpr
methodseosio::name::length
,eosio::name::suffix
#132 - added equivalence, inverted equivalence and less than operators to
eosio::name
#132
eosiolib/symbol.hpp
- removed
eosio::symbol_type
struct and replaced witheosio::symbol
class #122 - added struct
eosio::symbol_code
#122- added two
constexpr
constructors that take either a rawuint64_t
or anstd::string_view
- added
constexpr
methodsis_valid
,length
andraw
- added a print method
- added
bool
conversion operator to test issymbol_code
is empty
- added two
- removal of
eosio::string_to_symbol
,eosio::is_valid_symbol
,eosio::symbol_name_length
functions #122 - removal of the
S
macro. #122 - added struct
eosio::symbol
#122- added two
constexpr
constructors that take either a rawuint64_t
or asymbol_code
and auint8_t
precision.
- added two
- modified struct
eosio::extended_symbol
#132- restricted fields to private
- added
constexpr
constructor that takes aeosio::symbol
and aneosio::name
. - added
constexpr
methodsget_symbol
andget_contract
. - made existing comparison operators
constexpr
eosiolib/asset.hpp
- The main constructor now requires a
int64_t
(quantity) andeosio::symbol
explicitly. #132
eosiolib/contract.hpp
- The constructor for
eosio::contract
now takes aneosio::name
for the receiver, aneosio::name
for the code, and aeosio::datastream<const char*>
for the datastream used for the contract. The last argument is for manually unpacking an action, see the section oneosio::ignore
for a more indepth usage. #136
eosiolib/dispatcher.hpp
- renamed the macro
EOSIO_ABI
toEOSIO_DISPATCH
, as this makes more sense as to what this macro does. #136 - modified the definition of
EOSIO_DISPATCH
to work with the new constructor foreosio::contract
eosiolib/multi_index.hpp
- the first template parameter for
indexed_by
now requires the argument be convertible toeosio::name::raw
(replacinguint64_t
. #132 - the first template parameter for
multi_index
now requires the argument be convertible toeosio::name::raw
(replacinguint64_t
. #132 - the constructor now takes an
eosio::name
type for the code (replacinguint64_t
), scope is stilluint64_t
. #132 - various other replacements of
uint64_t
toeosio::name
#132
eosiolib/singleton.hpp
- the first template parameter for
eosio::singleton
now requires the argument be convertible toeosio::name::raw
(replacinguint64_t
. #132 - the constructor now takes an
eosio::name
type for the code. #132 - in the methods
get_or_create
andset
the argumentbill_to_account
is now of typeeosio::name
(replacinguint64_t
). #132
eosiolib/action.hpp
- added C++ function
eosio::require_auth
#132 - added C++ function
eosio::has_auth
#132 - added C++ function
eosio::is_account
#132 - redefined
eosio::permission_level
to useeosio::name
in place ofuint64_t
#132 - removed the macro
ACTION
#136
eosiolib/permission.hpp
- The optional provided_keys argument of the function
eosio::check_transaction_authorization
is now of the typestd::set<eosio::public_key>
rather than the typestd::set<capi_public_key>
. #132 - the
account
andpermission
arguments ofeosio::check_transaction_authorization
are botheosio::name
now instead ofuint64_t
#132
eosiolib/ignore.hpp
- added new type
ignore
#133- this type acts as a placeholder for actions that don't want to deserialize their fields but what the types to be reflected in the abi.
ACTION action(ignore<some_type>) { some_type st; _ds >> st; }
- this type acts as a placeholder for actions that don't want to deserialize their fields but what the types to be reflected in the abi.
- added new type
ignore_wrapper
#133- this allows for calling
SEND_INLINE_ACTION
withignore_wrapper(some_value)
against an action with anignore
of matching types.
- this allows for calling
macros
- added
ACTION
macro, this is simply a wrapper for[[eosio::action]] void
#136 - added
TABLE
macro, this is simply a wrapper forstruct [[eosio::table]]
#136 - added
CONTRACT
macro, this is simply a wrapper forclass [[eosio::contract]]
#136
CMake
- added
eosio.cdt-config.cmake
to allow forfind_package(eosio.cdt)
#105 - added new macro
add_contract
#136 - new version checking mechanism is included, see eosio.contracts/CMakeLists.txt to see this in use. #111
libc
- replaced
printf
,sprintf
, andsnprintf
with new minimal variants, and allows contracts to use these functions without causing stack overflow issues. #142
libcxx
- removed
sstream
, with the intent to return this after more has been done. #142 - added
__cxa_pure_virtual
to allow for pure virtual methods in contract classes. #142 std::to_string
now works without the issues of stack overflows. #142
attributes
- added
[[eosio::ignore]]
attribute to flag a type as being ignored by the deserializer, this attribute is primarily only used for internal use within eosiolib. #133 - added
[[eosio::contract]]
attribute #133
boost
- is now part of the library (Boost will be removed in a future release), no more external dependence on Boost and all system inclusion are within it's
sysroot
. #105
eosio-cpp
- bumped the default standard to C++17 #133
eosio-abigen
- various fixes for vector, optional, stalling. Produces accurate abis for eosio.contracts.