This repository was archived by the owner on Aug 2, 2022. It is now read-only.
EOSIO.CDT Version 1.5.0
repo
- Using new model for eosio.cdt cmake subsystem for building libraries.
- Added new libraries for native support for native compilation for testing and "scratch pad" compilation for contract developers.
- Updated license year #339
eosiolib
- Added new set of functions (
eosio::check
) to supersede eosio_assert functions #318- overloads to support eosio_assert, eosio_assert_message and eosio_assert_code are supported.
- these new functions should increase performance of smart contracts by not calling the intrinsic unless the test condition fails.
- Removed memory.h #318
- Removed
activate_feature
intrinsic fromprivileged.h
#318 - Resolved issues with
eosio::print
and std::string #318 - Replaced all occurrences of eosio_assert with
eosio::check
#318 - Allow for ""_n to be used to create a zero name (
eosio::name{0}
) #311 - Added c++ guards on system.h #312
- Removed references to nonexistent uint256_t type #333
- Simplified comments for
eosio::multi_index
#328 - Resolved issues with
eosio::print
and integral types #347
nativelib
- Fixed support for checking prints with native testing framework #341
- Added a minimal crt for native contract compilation #317
- Build libc, libcxx, and eosiolib for native linkage #317
- Added framework for setting and getting intrinsics core functions. #317
- In the future libraries can be built to fill in a default implementation of the complex intrinsics. Currently only the eosio_assert*, memcpy/cmp/move, soft float, and print* intrinsics have usable defaults, all others will assert with the message "unsupported intrinsic". Also, only the print* intrinsics can be reset in terms of their default functionality.
- A testing framework for supporting eosio_assert/eosio::check as catchable and the ability to assert in the test or contract code and continue the test forward. #317
- REQUIRE_ASSERT and CHECK_ASSERT function much like BOOST's CHECK_THROW and REQUIRE_THROW, but use the assert message as the predicate instead of an exception type. This checking the assertion message can either be a simple string, which will do a 1 to 1 match of this and the assert message, or you can pass it a lambda that takes a std::string and return a bool so more complex checking can be done.
- CHECK_EQUAL and REQUIRE_EQUAL work almost identically to BOOST's.
- For examples of how to use these see ./tests/unit/system_tests.cpp or ./tests/unit/name_tests.cpp.
- Test registration to support CTest and pretty print which tests pass or fail. #317
- Fixed linkage issues for mac OS X #326
cmake
- A new pattern for cmake use in smart contract development. #291
- This new pattern utilizes the EosioWasmToolchain.cmake as a cmake toolchain file and uses an external cmake project to build the contract code, see the new
eosio-init
tool.
- This new pattern utilizes the EosioWasmToolchain.cmake as a cmake toolchain file and uses an external cmake project to build the contract code, see the new
- To support native builds with
eosio-cpp
two new macrosadd_native_executable
andadd_native_library
, these work identically to cmake'sadd_executable
andadd_library
.
tools
- New tool
eosio-init
is introduced #317- This tool will generate a project for smart contract development, either as a bare eosio-cpp project or cmake project. This tool takes a required project name, an optional path and an optional bare flag.
- The "bare" version will generate a <project name>.hpp, a <project name>.cpp, a <project name>.contracts.md and a readme with how to build the contract.
- The default/non-bare version will create a source tree with the proper cmake files, the above mentioned files in their respective folders, and a readme with instructions of how to build the contract.
- This tool will generate a project for smart contract development, either as a bare eosio-cpp project or cmake project. This tool takes a required project name, an optional path and an optional bare flag.
- Support for native builds with
eosio-cpp/cc
andeosio-ld
#317- this is functionality is exposed with the
fnative
flag for each of the above tools.
- this is functionality is exposed with the
- Fixes for
eosio-abidiff
#298 - Fixes for
eosio-abigen
for yet more nested types #291