@larryk85 larryk85 released this Jan 16, 2019


  • 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


  • 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 from privileged.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 witheosio::print and integral types #347


  • 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


  • 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.
  • To support native builds with eosio-cpp two new macros add_native_executable and add_native_library, these work identically to cmake's add_executable and add_library.


  • 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.
  • Support for native builds with eosio-cpp/cc and eosio-ld #317
    • this is functionality is exposed with the fnative flag for each of the above tools.
  • Fixes for eosio-abidiff #298
  • Fixes for eosio-abigen for yet more nested types #291
Assets 7