Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

EOSIO.CDT v1.8.0-rc1 Release Notes

Pre-release
Pre-release
Compare
Choose a tag to compare
@blockone-devops blockone-devops released this 15 Dec 13:00
· 520 commits to master since this release
d667013

This release contains a number of new features and bug fixes.

Changes

Features:

  • The ability to return data from an action has been provided as of this release(#810). This action result will be a part of the return trace during transaction evaluation. This enables tooling like cleos to print these values for the end user and eosjs like frameworks to be able to use those values for general computation. To utilize this new feature all the engineer has to do is specify a type for the action return and then return the value as you would with a normal function call. For an example application that is leveraging action results you can look here.
[[eosio::action]]
std::string hello() {
   return "hello, EOSIO!";
}
  • Support for a new persistent storage system has been added (#996). To leverage the new Key-Value persistent storage type that was enabled in EOSIO v2.1 we have added a new data type. This new data type is called eosio::kv::map. It works a lot like a traditional std::map or dictionary would. And by default is very close interface to std::map. For more in-depth usage and documentation please either look in the docs directory in this report or more preferably the developer portal. You can also refer to an example implementation.

Very basic usage:

   // the first parameter is the eosio name of the "table" so that it can be referenced via external tooling, 
   // the next parameter is the key type (can be any type) and then the value type (can be any type).
   using cats = eosio::kv::map<"catmap"_n, std::string, cat_data_type>; 
   
   void update_cat(std::string name, int number_of_spots) {
      cats cats_map;
      auto cat_value = cats_map[name];
      cat_value = cat{ cat_value.color, cat_value.tail_bobbed, number_of_spots };
   }

In addition to this we also have another type called eosio::kv::table that is currently in a developer preview alpha state. This is to show what can be done with the system and allow for feedback as to what persistent storage APIs are the most effective and useful.

  • Updating the underlying technology to leverage LLVM 9 (#896). This has enabled a few things for CDT. It means better support for C++2a feature set, smarter base optimizer for the rest of our toolchain and any new features/bug fixes for linkage/compilation caused by LLVM 7.

  • As part of the package release we now install the set of tools (#810):

    • eosio-abidiff
    • eosio-nm
    • eosio-objcopy
    • eosio-objdump
    • eosio-ranlib
    • eosio-readelf
    • eosio-strip.

Stability bug fixes

  • (#989) abigenerator bug fix

Other Changes

  • (#797) Add Key Value api for the new key value intrinsics.
  • (#863) Convert vector<uint8_t> to bytes in ABI
  • (#864) Fix/non type template args
  • (#880) Remove scripts that are no longer needed
  • (#884) Fix use-after-free
  • (#885) [docs] Correction for eosio-init example in develop branch.
  • (#896) Bump to llvm9
  • (#897) turn off Werror for wabt
  • (#900) [docs] fix annotation for get_code() and get_scope()
  • (#903) [develop] Anka/Catalina CICD version bumps
  • (#906) [Docs] content updates and fixes
  • (#907) Split monolith string_tests into many small tests - develop
  • (#908) [docs] Suggestion / Change Request for singleton example and docs
  • (#911) Add missing \n
  • (#913) Fix duplicate symbol error with hana
  • (#917) Don't default to merging data sections, it can blow out nodeos limits
  • (#922) docs - dev repo - update the upper_bound and lower_bound annotation
  • (#925) Fix CI for toolchain tests and cleanup toolchain tester
  • (#926) Update lld to better handle undefined symbols
  • (#927) Add support for passing reference to secondary index
  • (#930) Add ABI Generation for KV Tables
  • (#931) Fix problem with action parameters with a template type of bool
  • (#933) [docs] update hello example contract to demonstrate return values form action
  • (#938) [docs] Fix broken links in main index section
  • (#942) add payer support for kv table
  • (#946) Add naming conventions to best practices section
  • (#947) [docs] Fix Broken links in best practices section
  • (#948) Better fix for booleans as template arguments
  • (#950) Fix missing put in kv tests
  • (#952) add return values from actions how-to and update comment in example h…
  • (#953) Docs/return values from action explainer page
  • (#956) [docs] Fix ABI titles on left navigation and folder contents
  • (#957) Final CDT key value cleanup
  • (#959) Remove db specifier from all KV APIs
  • (#961) [docs] kv api example contract
  • (#963) Fix integration test issue with N() macro
  • (#964) Add support for Ubuntu 20.04 in the CI pipeline
  • (#965) Fix abi names in KV
  • (#966) Add integration tests to CI
  • (#969) Quoting correction
  • (#972) [docs] update the kv_addr_book example smart contract and the kv ABI
  • (#975) [docs] updates on the example kv smart contract
  • (#976) [docs] Add documentation for KV API (how tos and explainer).
  • (#979) add an example for kv test
  • (#980) disable copy constructor and copy assignment
  • (#982) Multi index large
  • (#984) workround of abi generator bug for key types
  • (#985) Fix KV serialization/deserialization and build times
  • (#994) [develop] Fix U18 develop build.
  • (#995) Enable support of setkvparams in CDT
  • (#996) KV fixes
  • (#997) add KV Table iterator bool operator
  • (#998) fix kv_todo
  • (#1004) updted kv examples
  • (#1007) Docs/larryk85 kv fixes
  • (#1009) Fix unresolved set_kv_parameters_packed problem

Documentation
Thanks!

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

@justefg
@conr2d

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.