CHANGELOG¶
2.3.2¶
- Rewrite document.
- Support cmake 4+.
2.3.1¶
- Fixes storage types in
generator_vtable. - Fixes format rule.
2.3.0¶
- Rename all macros
COPP_*toLIBCOPP_*. - Make all macros in compile_optimize.h and explicit_declare. standalone from atframework.
- Merge boost.fcontext 1.87.
- Remove
LIBCOPP_MACRO_HAS_EXCEPTION. - Add nostd type_traits and
strong_rc_ptrfor non thread-safety smart pointer. - Remove
LIBCOPP_DISABLE_ATOMIC_LOCK,LIBCOPP_LOCK_DISABLE_THIS_MTandLIBCOPP_LOCK_DISABLE_MT. We use the only one optionLIBCOPP_ENABLE_MULTI_THREADnow. - Allow to disable multi-thread support for stack pool and C++20 coroutine to reduce cache miss.
- We allow use lightweight callback or channel mode(without callback) for C++20 coroutine generator.
- Add
copp::make_channel<T>()to create channel receiver and sender for easier usage.
2.2.0¶
- Merge boost.fcontext 1.81.0
- Add
LIBCOPP_MACRO_TLS_STACK_PROTECTORto work with-fstack-protector - Optimize
-pthreadflag detection. - Support
-fno-rttinow. - Optimize timestamp of generated file to reduce regeneration.
2.1.4¶
- Fixes timer reset when initialization.(#46 )
- Update CI environment of GCC 4.8.
- Add more strict warnings.
- Optimize spin lock, add
valid()fortask_promise(C++ 20 coroutine). - Fix consistent of variant detection.
2.1.2¶
- Update cmake-toolset
- Implement
unhandled_exceptionwhen without exception.
2.1.1¶
- 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
2.1.0¶
- Allow custom
promise_error_transformfor C++20 coroutine.
2.0.2¶
- Add benchmark for
task_future - Fix lifetime of
task_future
2.0.1¶
- Change
task_manager<task_type, container_type>totask_manager<task_type>
2.0.0¶
- Add ABI tag for all c++ codes
We will keep ABI compatitablity for all assemblly APIs and will change the suffix when ABI changed.
cotask::taskchanges- [x] Add
value_typeto task_macro (macro_coroutine) - [Previous] Redesign C++ 20 coroutine support.
- Using ctest to maintain test and samples
- Fix compatibility for C++20 attributes and macros
- [BREAK CHANGES] Rename
LIBCOPP_DISABLE_THIS_MTtoLIBCOPP_LOCK_DISABLE_THIS_MT
1.5.0¶
- [BREAK CHANGES] We need gcc 4.8+, Clang 4.0+ or MSVC 1900(Visual Studio 2017)+
- Remove
COPP_MACRO_ENABLE_VARIADIC_TEMPLATE - Remove
STD_DECLTYPE,COPP_MACRO_TYPEOF - Remove
libcopp/utils/std/decltype.h - Remove
libcopp/utils/config/compiler_features.h - Remove
libcopp/utils/std/functional.h - Remove
libcopp/utils/std/smart_ptr.h
1.4.1¶
- [OPTIMIZE] Allow to download submodule by external tool and do not depend
git.
1.4.0¶
- [OPTIMIZE] Switch build system to to cmake-toolset
- [FIX] Fix output names of
find_package(<PackageName>) - [OPTIMIZE] Support auto detection of ios/android toolchains
- [OPTIMIZE] Fix warnings when using cmake 3.20.0 or upper
- [OPTIMIZE] Optimize cmake config PATH for
<PackageName>_DIR - [BREAK] Upgrade cmake requirement to 3.16.0+
- [CI] Move to github action
- [BOOST] Merge boost.context 1.76.0.
1.3.5¶
- [FIX] Fix stack alignment.
- [OPTIMIZE] Prefer to use python3 on cmake scripts.
1.3.4¶
- [FIX] Fix version tag.
1.3.3¶
- [BOOST] Merge boost.context 1.74.0(Support The 32-bit Solaris C language data model, called ILP32).
- [FIX] Fix mixed some headers with atframe_utils .
- [OPTIMIZE] Some optimizations for benchmark codes.
- [FIX] Fix multi-thread counter of unit test.
- [OPTIMIZE] Support cpack to generate rpm or deb package.
- [FIX] Fix c++20 coroutine flags when reimport CompilerOption.cmake.
1.3.2¶
- [FIX] #16 : document of
LIBCOPP_DISABLE_ATOMIC_LOCKandLIBCOPP_DISABLE_THIS_MT. - [FIX] #18 :
'xx' is not a member of 'xxx {aka xxx}'. - [OPTIMIZE]
cotask::taskcan capture all integer type of return value now. - [FIX] Remove warning of c++20 coroutine options when project use both languages of cxx and not cxx
1.3.1 (2020-07-06)¶
- Fix compiler version checker for C++20 coroutine
- Add cmake interface option and features for targets
- Update documents
1.3.0 (2020-07-02)¶
- [OPTIMIZE] Using cmake export to generate module files
- [OPTIMIZE] Change default visibility of symbols to hidden, we support dll on windows now.
- [FIX] Rename
task::await`` intotask::await_task, Some compile don't allowawait_task` as function name. - [BOOST] Merge boost.context 1.73.0
- [FEATURE] Implement context of windows fiber and
SetUnhandledExceptionFilteris available to catchunhandled exception in coroutine action - [OPTIMIZE] Catch and rethrow unhandle exception after coroutine resumed when using C++11 or upper, most APIs are exception safe now.
- [OPTIMIZE] Remove TTASK_MACRO in cotask::task, task id now is always set
uint64_tand use the id allocator with thread cache. - [OPTIMIZE] Fix
Warning: client switching stacks?in unit test when enable valgrind support. - [FEATURE] Enable
-DLIBCOPP_FCONTEXT_USE_TSX=ONfor default.
BREAK CHANGES & UPGRADE GUIDE FROM 1.2.X¶
- Rename
cotask::task::awaitintocotask::task::await_task - Replace
cotask::task<TCO_MACRO, TTASK_MACRO>withcotask::task<TCO_MACRO>, we don't allow to custom id allocator now. - Replace
cotask::core::standard_int_id_allocator<uint64_t>withcopp::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 (2019-10-04)¶
- [OPTIMIZE] Add options to disable TLS usage for this_task and this_coroutine to reduce cache miss on single thread situation.
- [OPTIMIZE] Implement jump_to(...) as static inline to reduce code cache miss.
- [OPTIMIZE] Implement coroutine_context_callback(...) as static local symbol to reduce code cache miss.
1.2.0 (2019-08-20)¶
- [OPTIMIZE] Add more unit test.Increase coverage to 90%+.
- [OPTIMIZE] Rewrite toolchain detection scripts, support clang-cl now.
- [BOOST] merge boost.context 1.71.0.
- [FIX] Fix a coredump problem when task_ptr is reset when await_task other tasks.
- [OPTIMIZE] Optimize timer implement, task_manager support modify task timer now.
- [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.
- [OPTIMIZE] Fix some warning when compiling with gcc 9+ and clang 8+.
- [OPTIMIZE] Use pthread for TLS when both c++11 thead_local and pthread are available. It will reduce the minimal stack size.
- [OPTIMIZE] Fix and add some example codes and documents.
2018-12-07¶
- [OPTIMIZE] add adaptor for vcpkg
- [OPTIMIZE] using GNUInstallDirs for all directories
- [BOOST] merge boost.context 1.67.0
- [OPTIMIZE] add libcopp-config.cmake and libcopp-config-version.cmake for cmake module
- [OPTIMIZE] add then and await_task API for easier usage
- [OPTIMIZE] add /Zc:__cplusplus for MSVC to make __cplusplus to the standard value.
- [OPTIMIZE] fix a guess to x86_64 environment
- [OPTIMIZE] add more API for statistics
- [FIX] fix the problem that calling compare_exchange_weak failed will lead the cotask to exit
- [OPTIMIZE] merge the latest unit test framework, now we will support more readable output when test failed.
- [CI] We use xenial to build in linux now.
2018-01-01¶
- [BOOST] merge boost.context 1.66.0
- [OPTIMIZE] add support for Intel Transactional Synchronisation Extensions (TSX)
- [OPTIMIZE] fix a warning reported by clang-analyzer.
- [CI] update README.md and automatic documents.(published at https://libcopp.atframe.work)
- [FIX] make sure all the allocated stacks are always greater than the configure value after reloaded when using stack pool.
- [FIX] allow segmented stacks when using clang and llvm.
- [OPTIMIZE] using the new script to run clang-analyzer.
- [OPTIMIZE] optimize the doxygen output and fix some markdown synax not supported by doxygen.
2017-10-01¶
- [OPTIMIZE] optimize cmake files for all target
- [OPTIMIZE] update samples and readme(fix sample for stack pool in README.md)
- [CI] add gcc 7
- [OPTIMIZE] using -std=c++17 for gcc/clang and /std:c++17 for MSVC 15(2015) and upper
2017-06-11¶
- [OPTIMIZE] V2 framework and APIs completed, all reports in clang-analysis and cppcheck are fixed.
- [CI] benchmark and samples enabled in v2 branch
- [CI] add sample code in README.md into CI
2017-05-10¶
- [BOOST] merge boost.context 1.64.0
- [OPTIMIZE] add stack pool manager and unit test
- [OPTIMIZE] reduce memory fragment when allocate coroutine task and task action
- [CI] benchmark and sample will always be run in Travis CI and Appveyor CI
2016-06-16¶
- [BOOST] merge boost.context 1.61.0 and use the new jump progress(see https://owent.net/2016/1270.html for detail)
- [BOOST] enable valgrind support if valgrind/valgrind.h exists
- [CXX] use cmake to detect the function of compiler
- [OPTIMIZE] using pthread key when c++11 TLS not available
- [OPTIMIZE] remove coroutine_context_safe_base.coroutine_context_base is also thread safe now
- [OPTIMIZE] remove all global variables of cotask
- [OPTIMIZE] remove std/thread.h, add noexpect if available
- [CI] CI use build matrix to test more compiler
- [BUILD] use RelWithDebInfo for default
2016-02-27¶
- v0.2.0, this version is used in our server for about one year.
2015-12-29¶
- add support for valgrind
- add ci configure
- merge boost.context 1.60.0
- add -fPIC, fix spin lock
- some environment do not support TLS, make these environment can compile success
2014-07-25¶
v0.1.0