libcopp

cross-platform coroutine library in c++

MIT License

Stars
829

Bot releases are hidden (Show)

libcopp - v2.2.0 Latest Release

Published by owent over 1 year ago

CHANGELOG

  1. Merge boost.fcontext 1.81.0
  2. Add LIBCOPP_MACRO_TLS_STACK_PROTECTOR to work with -fstack-protector
  3. Optimize -pthread flag detection.
  4. Support -fno-rtti now.
  5. Optimize timestamp of generated file to reduce regeneration.
libcopp - v2.1.4

Published by owent over 1 year ago

CHANGELOG

  1. Fixes timer reset when initialization.(#46 )
  2. Update CI environment of GCC 4.8.
  3. Add more strict warnings.
  4. Optimize spin lock, add valid() for task_promise(C++ 20 coroutine).
  5. Fix consistent of variant detection.
libcopp - v2.1.2

Published by owent over 1 year ago

CHANGELOG

  • Update cmake-toolset
  • Implement unhandled_exception when without exception.
libcopp - v2.1.1

Published by owent over 1 year ago

CHANGELOG

  • Add helper function to pick task id and private data from C++20 coroutine task
  • Fix trivial test
  • Fix Valgrind_ROOT
  • Fix compatibility of GCC SFINAE
  • [CI] Add CodeQL job
  • [CI] Add auto stale job
  • [CI] Update linux image to ubuntu 22.04
libcopp - v2.1.0

Published by owent about 2 years ago

CHANGELOG

  1. Allow custom promise_error_transform for C++20 coroutine.
libcopp - v2.0.2

Published by owent about 2 years ago

CHANGELOG

2.0.2

  1. Add benchmark for task_future
  2. Fix lifetime of task_future

2.0.1

  1. Change task_manager<task_type, container_type> to task_manager<task_type>

2.0.0

  1. Add ABI tag for all c++ codes

We will keep ABI compatitablity for all assemblly APIs and will change the suffix when ABI changed.

  1. cotask::task changes
  • Add value_type to task_macro ( macro_coroutine )
  1. [Previous] Redesign C++ 20 coroutine support.
  2. Using ctest to maintain test and samples
  3. Fix compatibility for C++20 attributes and macros
  4. [BREAK CHANGES] Rename LIBCOPP_DISABLE_THIS_MT to LIBCOPP_LOCK_DISABLE_THIS_MT
libcopp - 1.4.1

Published by owent over 3 years ago

CHANGELOG

  1. Allow to download submodule by external tool and do not depend git.
libcopp - 1.4.0

Published by owent over 3 years ago

CHANGELOG

  1. [OPTIMIZE] Switch build system to to cmake-toolset
  2. [FIX] Fix output names of find_package(<PackageName>)
  3. [OPTIMIZE] Support auto detection of ios/android toolchains
  4. [OPTIMIZE] Fix warnings when using cmake 3.20.0 or upper
  5. [OPTIMIZE] Optimize cmake config PATH for <PackageName>_DIR
  6. [BREAK] Upgrade cmake requirement to 3.16.0+
  7. [CI] Move to github action
  8. [BOOST] Merge boost.context 1.76.0.
libcopp - 1.3.4

Published by owent almost 4 years ago

CHANGELOG

  1. [FIX] Fix version tag name
libcopp - 1.3.3

Published by owent almost 4 years ago

CHANGELOG

  1. [BOOST] Merge boost.context 1.74.0(Support The 32-bit Solaris C language data model, called ILP32).
  2. [FIX] Fix mixed some headers with atframe_utils .
  3. [OPTIMIZE] Some optimizations for benchmark codes.
  4. [FIX] Fix multi-thread counter of unit test.
  5. [OPTIMIZE] Support cpack to generate rpm or deb package.
  6. [FIX] Fix c++20 coroutine flags when reimport CompilerOption.cmake.
libcopp - 1.3.2

Published by owent about 4 years ago

CHANGELOG

  1. [FIX] #16 : document of LIBCOPP_DISABLE_ATOMIC_LOCK and LIBCOPP_DISABLE_THIS_MT .
  2. [FIX] #18 : 'xx' is not a member of 'xxx {aka xxx}' .
  3. [OPTIMIZE] cotask::task can capture all integer type of return value now.
  4. [FIX] Remove warning of c++20 coroutine options when project use both languages of cxx and not cxx.
libcopp - 1.3.1

Published by owent over 4 years ago

CHANGELOG

  1. Fix compiler version checker for C++20 coroutine
  2. Add cmake interface option and features for targets
  3. Update documents
libcopp - 1.3.0

Published by owent over 4 years ago

CHANGELOG

  1. [OPTIMIZE] Using cmake export to generate module files
  2. [OPTIMIZE] Change default visibility of symbols to hidden, we support dll on windows now.
  3. [FIX] Rename task::await into task::await_task, Some compile don't allow await_task as function name.
  4. [BOOST] Merge boost.context 1.73.0
  5. [FEATURE] Implement context of windows fiber and SetUnhandledExceptionFilter is available to catchunhandled exception in coroutine action
  6. [OPTIMIZE] Catch and rethrow unhandle exception after coroutine resumed when using C++11 or upper, most APIs are exception safe now.
  7. [OPTIMIZE] Remove TTASK_MACRO in cotask::task, task id now is always set uint64_t and use the id allocator with thread cache.
  8. [OPTIMIZE] Fix Warning: client switching stacks? in unit test when enable valgrind support.
  9. [FEATURE] Enable -DLIBCOPP_FCONTEXT_USE_TSX=ON for default.
  10. Using sphinx and reStructuredText to rewrite https://libcopp.atframe.work/

BREAK CHANGES & UPGRADE GUIDE FROM 1.2.X

  • Rename cotask::task::await into cotask::task::await_task
  • Replace cotask::task<TCO_MACRO, TTASK_MACRO> with cotask::task<TCO_MACRO> , we don't allow to custom id allocator now.
  • Replace cotask::core::standard_int_id_allocator<uint64_t> with copp::util::uint64_id_allocator , we don't allow to custom id allocator now.
  • Require gcc 4.7+, MSVC 14+(Visual Studio 2015)>)
  • Require cmake 3.12.0 or upper
libcopp - 1.2.1

Published by owent about 5 years ago

CHANGELOG

  1. [OPTIMIZE] Add options to disable TLS usage for this_task and this_coroutine to reduce cache miss on single thread situation.
  2. [OPTIMIZE] Implement jump_to(...) as static inline to reduce code cache miss.
  3. [OPTIMIZE] Implement coroutine_context_callback(...) as static local symbol to reduce code cache miss.
libcopp - 1.2.0

Published by owent about 5 years ago

CHANGELOG

  1. [OPTIMIZE] Add more unit test.Increase coverage to 90%+.
  2. [OPTIMIZE] Rewrite toolchain detection scripts, support clang-cl now.
  3. [BOOST] merge boost.context 1.71.0.
  4. [FIX] Fix a coredump problem when task_ptr is reset when await other tasks.
  5. [OPTIMIZE] Optimize timer implement, task_manager support modify task timer now.
  6. [OPTIMIZE] A task can only be added to one task_manager now, and when finish task with task's API, task_manager will also be cleanup.
  7. [OPTIMIZE] Fix some warning when compiling with gcc 9+ and clang 8+.
  8. [OPTIMIZE] Use pthread for TLS when both c++11 thead_local and pthread are available. It will reduce the minimal stack size.
  9. [OPTIMIZE] Fix and add some example codes and documents.
libcopp - 1.1.0

Published by owent almost 6 years ago

CHANGELOG

  1. Support vcpkg
  2. Generate libcopp-config.cmake and libcopp-config-version.cmake for cmake
libcopp - 1.0.0

Published by owent almost 6 years ago

First release with v2. This release is used in our project and works well.

libcopp - 0.3.4

Published by owent over 7 years ago

  1. guess flag when call cotask::start/resume to reduce atomic operation
  2. add reference when call cotask::start to protect cotask from destroy
  3. use functor directly if action based on task_action_impl
  4. fix missing break after alloc failed in benchmark
libcopp - 0.3.3

Published by owent over 7 years ago

  1. 优化结构,减少内存碎片
  2. merge boost 1.64.0
  3. 增加栈池
  4. 支持线程安全
libcopp - 0.3.2

Published by owent over 7 years ago

  1. 上一个内测游戏版本使用的版本
  2. merge boost 1.63.0
  3. 协程切换时允许透传用户自定义数据
  4. 修订所有scan-build的warning报告
  5. 修订单元测试里的一些小问题
  6. 修正递归循环跳转时的问题,现在协程yield之前执行resume会返回错误码