Releases: danvratil/qcoro
v0.10.0
What's Changed
- Rethrow exceptions from QCoro::waitFor() (fixes #172) by @danvratil in #173
- qcorowebsocket replace QWebSocket::error with QWebSocket::errorOccurred by @nmariusp in #174
- Add Qt 6.5 to the CI matrix by @danvratil in #176
- QCoro::connect: Fix bug in concept requirements by @jbbgameich in #179
- Avoid deprecated QVERIFY_EXCEPTION_THROWN by @danvratil in #180
- Make QCoroTask header contain only declarations by @danvratil in #183
- QCoroAsyncGenerator test: workaround compiler optimizations that breaks tests by @danvratil in #189
- Update pygments requirement from ~=2.15 to ~=2.16 by @dependabot in #184
- Update pymdown-extensions requirement from ~=9.11 to ~=10.3 by @dependabot in #190
- Append postfix for qmake compatibility by @shaan7 in #192
- Add support for connecting signals with QPrivateSignal by @danvratil in #193
- QCoroSignalListener: support connecting to private signals by @danvratil in #194
- fix error: std::coroutine_traits isn't a class template by @sizeofvoid in #196
- Update pymdown-extensions requirement from ~=10.3 to ~=10.4 by @dependabot in #195
- Update pygments requirement from ~=2.16 to ~=2.17 by @dependabot in #197
- Update pymdown-extensions requirement from ~=10.4 to ~=10.5 by @dependabot in #198
New Contributors
- @nmariusp made their first contribution in #174
- @shaan7 made their first contribution in #192
- @sizeofvoid made their first contribution in #196
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
- Make QCoro::Generator properly move-constructible by @vicr123 in #151
- iOS support: handle QProcess being not available by @rgriebl in #153
- Fix QCoro::connect with QFutures by @jbbgameich in #154
- Fix debug build against MSVC2022 by @rgriebl in #156
- Fix CheckAtomic failing on Windows with Clang by @danvratil in #159
- Update pymdown-extensions requirement from ~=9.9 to ~=9.10 by @dependabot in #155
- Make how Qt packages are found more convinient by @DeveloperPaul123 in #162
- Fix clang 16 builds by @DeveloperPaul123 in #161
- Add clang 16 to the CI matrix by @danvratil in #163
- Fix clang Docker container not settings CXX env correctly by @danvratil in #164
- Fix crash in QCoroSignal when signal is received after destruction by @danvratil in #168
- Update pygments requirement from ~=2.14 to ~=2.15 by @dependabot in #166
- Update pymdown-extensions requirement from ~=9.10 to ~=9.11 by @dependabot in #165
- Fix connecting to member function pointers by @jbbgameich in #169
- QML: Add declarative API for awaiting a task by @jbbgameich in #170
- Implement QCoroTest by @danvratil in #171
New Contributors
- @vicr123 made their first contribution in #151
- @DeveloperPaul123 made their first contribution in #162
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
- test: use offscreen QPA for QCoroQuick tests by @danvratil in #140
- Update pymdown-extensions requirement from ~=9.8 to ~=9.9 by @dependabot in #141
- cmake: make sure we explicitly find_package Qt private modules by @danvratil in #142
- Update pygments requirement from ~=2.13 to ~=2.14 by @dependabot in #144
- Implement moveToThread() awaitable by @danvratil in #130
- Implement sleepFor() and sleepUntil() coroutines (#145) by @danvratil in #147
- Make QCoro::waitFor() usable with any awaitable (#132) by @danvratil in #148
- Fix QCoro::waitFor() for Awaitable with operator co_await by @danvratil in #149
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
- Only enable -Werror (and related flags) in debug mode (fixes #94) by @danvratil in #95
- Docs: Add News section release announcements by @danvratil in #92
- Attempt to stabilize WS tests by @danvratil in #96
- Add Docker images with various gcc/clang and Qt versions by @danvratil in #99
- Add Docker images with gcc/clang compilers and related Qt by @danvratil in #98
- Fix and clarify exception handling in generators by @danvratil in #105
- Simplify implementation of .then() by @danvratil in #109
- Add QCoroImageProvider by @jbbgameich in #111
- Update pymdown-extensions requirement from ~=9.4 to ~=9.5 by @dependabot in #114
- Fix QCoroFuture::waitForFinished triggerring twice on cancelation by @danvratil in #119
- Allow exceptions from QFuture to propagate by @danvratil in #120
- Update pymdown-extensions requirement from ~=9.5 to ~=9.6 by @dependabot in #121
- Fix WS tests failing in Windows by @danvratil in #122
- Add QML interface to Task by @jbbgameich in #110
- Handle when a task is co_awaited by multiple awaiters by @danvratil in #127
- Add QCoro::connect helper function by @jbbgameich in #125
- Tests: implement tests for QCoroImageProvider by @danvratil in #124
- Fix examples in docs by @danvratil in #128
- Update pymdown-extensions requirement from ~=9.6 to ~=9.7 by @dependabot in #129
- QmlTask: Allow constructing from other awaitable types by @jbbgameich in #134
- Update pymdown-extensions requirement from ~=9.7 to ~=9.8 by @dependabot in #133
- Make QCoro::connect more generic by @jbbgameich in #138
New Contributors
- @jbbgameich made their first contribution in #111
- @dependabot made their first contribution in #114
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
- Fix build with gcc 11.3.0 (resolves #57) by @danvratil in #58
- Fix ODR violation when LTO is enabled by @danvratil in #59
- Rework Github CI - add compilers and platforms by @danvratil in #60
- CI: consolidate the CI builds into a single matrix by @danvratil in #61
- Export QCoro wrapper classes by @danvratil in #65
- CI: disable shared libs on Windows by @danvratil in #67
- Enable "modern Qt" compiler definitions by @danvratil in #66
- Introduce Generator and AsyncGenerator coroutine return types by @danvratil in #69
- Fix installing export header by @danvratil in #77
- Deprecate task.h in favor of qcorotask.h (#70) by @danvratil in #76
- QtWebSockets support by @danvratil in #75
- Document -DQCORO_WITH_QTWEBSOCKETS by @dangelog in #81
- Fix the build by #include'ing by @dangelog in #82
- QCoroTask: fixup a template type parameter name by @dangelog in #83
- Add support for clang-cl (fixes #84) by @danvratil in #86
- Fix possible race in TestWsServer by @danvratil in #88
- WebSocket bugfixes & documentation by @danvratil in #89
- Explicitly enable exception support for clang-cl (fixes #90) by @danvratil in #91
New Contributors
Full Changelog: v0.5.1...v0.6.0
QCoro 0.5.1
QCoro 0.5.0
.then()
continuation forTask<T>
(#39)- Fixed namespace scoping (#45)
- Fixed
QCoro::waitFor()
getting stuck when coroutine returns synchronously (#46) - Fixed -pthread usage in CMake (#47)
- Produce QMake config files (.pri) for each module (commit e215616)
- Fix build on platforms where -latomic must be linked explicitly (#52)
- Return
Task<T>
from all operations (#54) - Add QCoro wrapper for
QThread
(commit 832d931) - Many documentation updates
QCoro 0.4.0
- QCoro can now be built with Clang against libstdc++ (#38, #22)
- Qt5 and Qt6 builds of QCoro are now co-installable (#36, #37)
- Fixed early co_return not resuming the caller (#24, #35)
- Fixed QProcess example (#34)
- Test suite has been improved and extended (#29, #31)
- Task move assignment operator checks for self-assignment (#27)
- QCoro can now be built as a subdirectory inside another CMake project (#25)
- Fixed QCoroCore/qcorocore.h header (#23)
- DBus is disabled by default on Windows, Mac and Android (#21)
QCoro 0.3.0
QCoro 0.2.0
QCoro 0.2.0 contains brings major reorganization of the code. While there are no API-incompatible changes, users updating
from 0.1.0 will have to adjust #include
statements for QCoro headers in their projects.
Library modularity
The code has been reorganized into three modules (and thus three standalone libraries): QCoroCore, QCoroDBus and
QCoroNetwork. QCoroCore contains the elementary QCoro tools (QCoro::Task
, qCoro()
wrapper etc.) and coroutine
support for some QtCore types. The QCoroDBus module contains coroutine support for types from the QtDBus module
and equally the QCoroNetwork module contains coroutine support for types from the QtNetwork module. The latter two
modules are also optional, the library can be built without them. It also means that an application that only uses
let's say QtNetwork and has no DBus dependency will no longer get QtDBus pulled in through QCoro, as long as it
only links against libQCoroCore
and libQCoroNetwork
. The reorganization will also allow for future
support of additional Qt modules.
Headers clean up
The include headers in QCoro we a bit of a mess and in 0.2.0 they all got a unified form. All public header files
now start with qcoro
(e.g. qcorotimer.h
, qcoronetworkreply.h
etc.), and QCoro also provides CamelCase headers
now. Thus users should simply do #include <QCoroTimer>
if they want coroutine support for QTimer
.
The reorganization of headers makes QCoro 0.2.0 incompatible with previous versions and any users of QCoro will
have to update their #include
statements. I'm sorry about this extra hassle, but with this brings much needed
sanity into the header organization and naming scheme.
Docs update
The documentation has been updated to reflect the reorganization as well as some internal changes. It should be
easier to understand now and hopefully will make it easier for users to start with QCoro now.
Internal API cleanup and code de-duplication
Historically, certain types types which can be directly co_await
ed with QCoro, for instance QTimer
has their
coroutine support implemented differently than types that have multiple asynchronous operations and thus have
a coroutine-friendly wrapper classes (like QIODevice
and it's QCoroIODevice
wrapper). In 0.2.0 I have unified
the code so that even the coroutine support for simple types like QTimer
are implemented through wrapper classes
(so there's QCoroTimer
now)