Skip to content

CDT v4.0.0-rc1 Release Notes

Pre-release
Pre-release
Compare
Choose a tag to compare
@stephenpdeos stephenpdeos released this 04 May 12:55
· 357 commits to main since this release

Contract Development Toolkit (CDT) is a C/C++ toolchain targeting WebAssembly (WASM) and a set of tools to facilitate development of smart contracts written in C/C++ that are meant to be deployed to an Antelope blockchain.

This release includes a new project manager utility "antler-proj", additional crypto extensions for crypto primitives host functions, and several bug fixes.

Read on for details.

New Features

antler-proj Project Manager

PRs

  • (4)Draft of general description of work of the CLI commands by @jolly-fellow
  • (6)Add grammar and typos fixes to user guide by @mikelik
  • (5)Draft of the user`s guide for antler-proj by @jolly-fellow
  • (11)Fix clang-tidy warnings by @mikelik
  • (9)Antler project changes by @larryk85
  • (15)change CMakeLists so project can be included as submodule by @dimas1185
  • (1)Initial dev by @ScottBailey
  • (26)man pages - minor corrections by @mikelik
  • (12)Added a man page by @jolly-fellow
  • (22)Massive Set of Changes by @larryk85
  • (30)Ubuntu 18 build fix by @dimas1185
  • (34)Convert "version" option to flag "-V,--version". by @ScottBailey
  • (33)Allow for escaped compiler and link optional parameters by @ScottBailey
  • (37)Corrected some help, added examples, and allow '-p' in final subcommands. by @ScottBailey
  • (40)yml -> yaml rename by @dimas1185
  • (42)Add detailed error when fetching github URL failed by @mikelik
  • (41)Allow multiple cpp files in apps and libs directories. by @ScottBailey
  • (47)Add support for locations starting with https://github.com/
  • (49)exception handler added to main function
  • (53)Fix description of antler-proj remove
  • (48)fix for parsing error handling of an empty command argument
  • (52)When running antler-proj without arguments help will be displayed
  • (45)default --jobs parameter to zero
  • (54)Add --help-all flag and make top level help consistent with periods.
  • (62)Some last minute fixes
  • (63)Docs changes and a couple of small fixes.


ANTLER Project Tools (antler-proj) is a set of tools to help in the generation of smart contracts intended for deployment to an Antelope blockchain.

This set of tools will help the developer create, maintain, build, and test smart contracts.

Usage

For now, please see the User Guide for usage.

Additional crypto primitive host functions

PRs

  • (109)Resolve #88
  • (117)Add extended_asset operators and unit tests.


Additional crypto extensions support is now available. To see the scope of all primitives supported, view our documentation here.

In order to bring parity between asset and extended_asset for operators, the following were added:

  • extended_asset& operator*=(int64_t)
  • extended_asset operator*(const extended_asset&, int64_t)
  • extended_asset operator*(int64_t, const extended_asset&)
  • int64_t operator/(const extended_asset&, const extended_asset&)
  • extended_asset& operator/=( int64_t )
  • extended_asset operator/( const extended_asset&, int64_t )

CDT was also missing support for the get_code_hash host function introduced with Antelope's GET_CODE_HASH protocol feature. The API wrapper for this has been added along with some additional testing.

Bug Fixes

Missing inline declaration on blake2_f intrinsics helper

PRs

  • (108)Remove boost from eosiolib and native libraries


blake2_f() in crypto_ext.hpp were not inline, so if multiple .cpp files included this header file duplicate symbol errors were being thrown.

Wrong table name for ABI when eosio::singleton used

PRs

  • (125) Fix getting wrong name of the table for singleton


Crash in cdt-cpp when using a std::basic_string<> in action wrapper

PRs

  • (118)Handle basic_string in datastream serializing/deserializing


Other Changes

Tables with name typed primary key now supported

PRs

  • (98)Resolve #97: Allow name typed primary keys


Using a name as a primary key in a table is a common use case. Support for this use case to the multi_index template has now been added.

Feature Lifecycle Updates

Removals in v4.0.0

boost removed from eosiolib and native libraries

PRs

  • (108)Remove boost from eosiolib and native libraries


boost library usage removed from eosiolib and native libraries. It still remains in cdt but deprecated as for now as part of cdt package. Usage of external to cdt boost for contracts development is not restricted.

Further details on changes since last release

Contributors

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

Full list of changes since last release

PRs

  • (58)[3.1->main] Merge 3.1.0 rc1 version bump to main
  • (54)Replaced char array in output_stream to std::string to avoid buffer overflow
  • (59)Add possibility to build CDT in debug mode
  • (72)Enable integration tests
  • (87)add shared object option to CDTMacros
  • (94)Empty antler-run with eos-vm and eosiolib linked
  • (91)add a new document explaining crypto extensions
  • (108)Remove boost from eosiolib and native libraries
  • (104)Fix error message in division operator
  • (113)Resolve #110: Add missing inline declaration on blake2_f intrinsics helper
  • (109)Resolve #88
  • (98)Resolve #97: Allow name typed primary keys
  • (100)Resolve #99: Fix abigen with int expression template arguments
  • (119)[3.1] Fix wrong 3.0 version reference, use latest instead
  • (120)[3.1 -> main] altering version rc1 -> no suffix; Fix wrong 3.0 version, use latest instead
  • (118)Handle basic_string in datastream serializing/deserializing
  • (117)Add extended_asset operators and unit tests.
  • (115)Fix some issues when building EOSIO contracts
  • (125)Fix getting wrong name of the table for singleton
  • (126)[3.0] Fix broken links in cdt repo
  • (127)[3.0 -> 3.1] Fix broken links in cdt repo
  • (128)[3.1 -> main] Fix broken links in cdt repo
  • (114)add antler-proj to cdt
  • (136)fix cdt-init and CDTMacros.cmake.in
  • (136)fix cdt-init and CDTMacros.cmake.in
  • (139)cdt-cpp man page added
  • (145)cdt-cc man page created
  • (144)cdt-ld man page created
  • (152)Added additional build and editor files.
  • (146)multi_index bugfix after migration from boost + tests
  • (149)Add new troubleshooting section for generating abi for maps
  • (151)Abidiff objdump manpages
  • (147)Added an implementation of a new cdt-abidiff
  • (129)Fix readme typos for deb installation
  • (160)remove unused Runtime.h include now removed in libtester's main

antler-proj PRs

  • (4)Draft of general description of work of the CLI commands by @jolly-fellow
  • (6)Add grammar and typos fixes to user guide by @mikelik
  • (5)Draft of the user`s guide for antler-proj by @jolly-fellow
  • (11)Fix clang-tidy warnings by @mikelik
  • (9)Antler project changes by @larryk85
  • (15)change CMakeLists so project can be included as submodule by @dimas1185
  • (1)Initial dev by @ScottBailey
  • (26)man pages - minor corrections by @mikelik
  • (12)Added a man page by @jolly-fellow
  • (22)Massive Set of Changes by @larryk85
  • (30)Ubuntu 18 build fix by @dimas1185
  • (34)Convert "version" option to flag "-V,--version". by @ScottBailey
  • (33)Allow for escaped compiler and link optional parameters by @ScottBailey
  • (37)Corrected some help, added examples, and allow '-p' in final subcommands. by @ScottBailey
  • (40)yml -> yaml rename by @dimas1185
  • (42)Add detailed error when fetching github URL failed by @mikelik
  • (41)Allow multiple cpp files in apps and libs directories. by @ScottBailey
  • (47)Add support for locations starting with https://github.com/
  • (49)exception handler added to main function
  • (53)Fix description of antler-proj remove
  • (48)fix for parsing error handling of an empty command argument
  • (52)When running antler-proj without arguments help will be displayed
  • (45)default --jobs parameter to zero
  • (54)Add --help-all flag and make top level help consistent with periods.
  • (62)Some last minute fixes
  • (63)Docs changes and a couple of small fixes.


Full Changelog: v3.1.0...v4.0.0-rc1