All Versions
8
Latest Version
Avg Release Cycle
193 days
Latest Release
317 days ago

Changelog History

  • v4.1.0 Changes

    November 04, 2020

    Continuable 4.1.0

    ๐Ÿ›  Contains various follow up fixes for version 4.0.0:

  • v4.0.0 Changes

    April 06, 2020

    ๐Ÿš€ See the release notes here.

  • v3.0.0 Changes

    March 12, 2018

    ๐Ÿš€ See the release notes here.

  • v3.0.0-alpha Changes

    March 06, 2018

    ๐Ÿš€ This is an unstable release

  • v2.0.0 Changes

    January 30, 2018

    ๐Ÿ‘ Zero cost futures now with error handling and co_await support


    In version 2.0 the library was heavily improved in multiple ways:

    Error handling

    ๐Ÿ‘ Usually it is inconvenient to handle error codes and exceptions in an asynchronous context, as we all know std::future supports error handling through exceptions already. We now introduce this capability to the continuable library while allowing error codes to be used as well.

    Consider the function cti::continuable<> get_bad_continuable() which always resolves through an error, then you may handle the error code or exception as following:

    get\_bad\_continuable() .then([] { // ... never invoked }) .then([] { // ... never invoked as well }) .fail([] (std::exception\_ptr e) { try { std::rethrow\_exception(e); } catch(std::exception const& e) { // Handle the exception here } });
    

    Abstracting callbacks as promises

    Since a callback may be called through an error or result the cri::promise class was added in order ro provide a similar interface to std::promise:

    auto http\_request(std::string url) {return cti::make\_continuable\<std::string\>([url = std::move(url)](cti::promise\<std::string\> /\*or auto&&\*/ promise) { // Perform the actual request through a different library,// resolve the promise upon completion of the task. promise.set\_value("\<html\> ... \</html\>"); // ...or promise.set\_exception(...);}); }
    

    ๐Ÿ‘ co_await support

    Experimental coroutine (co_await and co_return) support was added, this is available on MSVC 2017 and Clang 5.0.

    int i = co\_await cti::make\_continuable\<int\>([](auto&& promise) { promise.set\_value(0); });
    

    Minor improvements

    The library was improved in other ways:

    • constexpr and noexcept improvements
    • Compile-time improvements
    • ๐Ÿ“š Documentation improvements

    Header split

    Since the overall library size was increased the headers were split into smaller chunks.

  • v1.0.0 Changes

    March 06, 2017

    ๐Ÿš€ Continuable - Release v1.0.0

    ๐Ÿš€ This is the first stable release of the continuable library.

    ๐Ÿ”„ Changelog

    • ๐Ÿ“š Documentation and readme changes
    • ๐Ÿ”„ Change the assertion type of some GTest macros from expected to assertion.
  • v0.8.0 Changes

    March 03, 2017

    ๐Ÿš€ Continuable - Release v0.8.0

    ๐Ÿš€ This is the second pre-release of the continuable library.

    ๐Ÿ”„ Changelog

    • ๐Ÿ›  Fixes a major issue with handling the ownership for consumed continuables which led to unintended invocations.
    • โž• Adds partial application support which makes it possible to chain callbacks which accept less arguments then the curret signature.

      http_request("github.com") .then([] { // ... });

    • โž• Adds Support for sequential invocation:

      http_request("github.com") >> http_request("atom.io") .then([] (std::string github, std::string atom) { // ... });

  • v0.7.0 Changes

    February 25, 2017

    ๐Ÿš€ Continuable - Release v0.7.0

    ๐Ÿš€ This is the first public release of the continuable library and ships with:

    • Continuation syntactic sugar
    • ๐Ÿ‘ Executor support
    • ๐Ÿ‘ Connection support