GitPedia
owent

owent/libcopp

cross-platform coroutine library in c++

25 Releases
Latest: 4mo ago
v2.3.2Latest
owentowent·4mo ago·January 20, 2026
GitHub

📋 CHANGELOG

  • Rewrite document.
  • Support cmake 4+.
  • Remove invalid CI runners.
  • Optimize documents, add channel example, support cmake 4 by @owent in https://github.com/owent/libcopp/pull/58
  • Full Changelog: https://github.com/owent/libcopp/compare/v2.3.1...v2.3.2
v2.3.1
owentowent·1y ago·March 12, 2025
GitHub

📋 CHANGELOG

  • 1. Fixes storage types in `generator_vtable`.
  • 2. Fixes format rule.
  • Full Changelog: https://github.com/owent/libcopp/compare/v2.3.0...v2.3.1
v2.3.0
owentowent·1y ago·March 12, 2025
GitHub

📋 CHANGELOG

  • 1. Rename all macros `COPP_*` to `LIBCOPP_*` .
  • 2. Make all macros in compile_optimize.h and explicit_declare. standalone from atframework.
  • 3. Merge boost.fcontext 1.87.
  • 4. Remove `LIBCOPP_MACRO_HAS_EXCEPTION`.
  • 5. Add nostd type_traits and `strong_rc_ptr` for non thread-safety smart pointer.
  • 6. Remove `LIBCOPP_DISABLE_ATOMIC_LOCK`, `LIBCOPP_LOCK_DISABLE_THIS_MT` and `LIBCOPP_LOCK_DISABLE_MT`. We use the only one option `LIBCOPP_ENABLE_MULTI_THREAD` now.
  • 7. Allow to disable multi-thread support for stack pool and C++20 coroutine to reduce cache miss.
  • 8. We allow use lightweight callback or channel mode(without callback) for C++20 coroutine generator.
  • + 2 more
v2.2.0
owentowent·3y ago·April 13, 2023
GitHub

📋 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.
v2.1.4
owentowent·3y ago·April 3, 2023
GitHub

📋 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.
v2.1.2
owentowent·3y ago·January 31, 2023
GitHub

📋 CHANGELOG

  • + Update cmake-toolset
  • + Implement `unhandled_exception` when without exception.
v2.1.1
owentowent·3y ago·January 24, 2023
GitHub

📋 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
v2.1.0
owentowent·3y ago·September 27, 2022
GitHub

📋 CHANGELOG

  • 1. Allow custom promise_error_transform for C++20 coroutine.
v2.0.2
owentowent·3y ago·July 26, 2022
GitHub

📦 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.
  • 2. `cotask::task` changes
  • + [x] Add `value_type` to task_macro ( `macro_coroutine` )
  • 3. \[Previous\] Redesign C++ 20 coroutine support.
  • 4. Using ctest to maintain test and samples
  • 5. Fix compatibility for C++20 attributes and macros
  • 6. \[BREAK CHANGES\] Rename `LIBCOPP_DISABLE_THIS_MT` to `LIBCOPP_LOCK_DISABLE_THIS_MT`
1.4.1
owentowent·5y ago·June 13, 2021
GitHub

📋 CHANGELOG

  • 1. Allow to download submodule by external tool and do not depend `git`.
1.4.0
owentowent·5y ago·June 10, 2021
GitHub

📋 CHANGELOG

  • 1. [OPTIMIZE] Switch build system to to [cmake-toolset][1]
  • 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.
  • + 1 more
1.3.4
owentowent·5y ago·December 8, 2020
GitHub

CHANGELOG ------ 1. [FIX] Fix version tag name

1.3.3
owentowent·5y ago·December 7, 2020
GitHub

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][1] . 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. [1]: https://github.com/atframework/atframe_utils

1.3.2
owentowent·5y ago·September 4, 2020
GitHub

CHANGELOG ------------ 1. [FIX] [#16](https://github.com/owt5008137/libcopp/issues/16) : document of ```LIBCOPP_DISABLE_ATOMIC_LOCK``` and ```LIBCOPP_DISABLE_THIS_MT``` . 2. [FIX] [#18](https://github.com/owt5008137/libcopp/issues/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.

1.3.1
owentowent·5y ago·July 6, 2020
GitHub

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

1.3.0
owentowent·5y ago·July 4, 2020
GitHub

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

1.2.1
owentowent·6y ago·October 4, 2019
GitHub

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.

1.2.0
owentowent·6y ago·August 20, 2019
GitHub

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.

1.1.0
owentowent·7y ago·December 7, 2018
GitHub

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

1.0.0
owentowent·7y ago·November 23, 2018
GitHub

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

0.3.4
owentowent·9y ago·June 11, 2017
GitHub

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

0.3.3
owentowent·9y ago·May 16, 2017
GitHub

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

0.3.2
owentowent·9y ago·March 30, 2017
GitHub

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

0.3.1
owentowent·9y ago·September 2, 2016
GitHub

# UPDATE 1. 更新context到boost 1.61的新模型 2. 修订CI的编译矩阵 3. 现在支持MINGW64了 4. 调整安装内容和动态栈的判定方式 5. 重构跨平台原子操作 6. 使用cmake内置功能判定编译器功能 7. 现在的this_task和this_coroutine支持IOS和Android环境下的线程安全(Android和IOS不支持C++11原生TLS) 8. copp和cotask现在支持透传自定义参数

first releasev0.1.0
owentowent·11y ago·July 25, 2014
GitHub

release tested platform: max os windows linux