Reactive Extensions for C++
This release is going to seed a branch to track this state for those that do not wish to adopt the breaking changes in #562
Full Changelog: https://github.com/ReactiveX/RxCpp/compare/v4.1.0...v4.1.1
The major change this release is that the RxCpp repo moved to the ReactiveX org on Github
Thank you to the generous contributors who reported issues and submitted PR's
Replace commented out noexcept with macro Replace shared_ptr with move ctor Fix exit_recursed_scope_type dtor cleaning requestor early Remove unused variable and captures in doxygen/buffer.cpp @lebdron
Update README.md @kirkshoop
Fix '-Wignored-qualifiers' @besser82
Add: Skip_while operator (#418) … Add rx-merge-delay-error operator (#417) … @nitrram
Fix rxcpp::observable<>::range<T>() when T is unsigned type Fix rxcpp::observable<>::from<T>() when T is non-default constructable @lebdron
remove unused local @kirkshoop
Fix clang-trunk -Wunused-lambda-capture warnings Correct prefix for test executables (#398) @ericniebler
shutdown event loop threads (#394) … @kirkshoop
Add 'include' to the install path of the headers @petoknm
Typo in rx-never documentation … Daniel Rees
std::unexpected has been deprecated @kirkshoop
fix timeout when no items are emitted (#387) @gchudnov
disambiguate onerror from onnext (#383) @kirkshoop
Add get_subscription() for subject (#381) @wutiantong
Update DeveloperManual.md (#380) … @thepont
subscribe in reverse order to observables (#375) @maiermic
fix async lifetime in window_toggle (#372) filterimprovement (#371) … @kirkshoop
reversed subscription order @anatoly-spb
appveyor vs2017 image update (#365) … @gchudnov
This release of rxcpp is ready to use in production. please try it out and report issues!
All the decoupling of existing operators has been completed, thanks almost entirely to @gchudnov. This has also improved the doxygen output by sharing the docs across the observable methods and free function options for each operator.
repeat(0) and retry(0) erroneously resulted in infinite subscriptions. @elelel contributed fixes and a refactor that makes repeat(0) and retry(0) result in no subscription and repeat() and retry() result in infinite subscriptions.
A bug fix in
group_by
changed the way that groups end. see #249 for the explanation. code usinggroup_by
might have to add atake
ortake_until
to get the same behavior that it had before.A bug fix in
zip
changed the way that it ends. see #236 for the explanation.
@gchudnov and @kirkshoop embarked on a journey to change how operators are structured.
The new structure supports Rx Lite. Rx Lite does not include all operators by default. Each cpp file will include just the operators that it needs. There are static asserts to report missing includes.
To opt into Rx Lite
#include <rxcpp/rx-lite.hpp>
#include <rxcpp/operators/rx-filter.hpp>
#include <rxcpp/operators/rx-group_by.hpp>
In clang missing includes look like this
[ 44%] Building CXX object build/test/CMakeFiles/rxcpp_test_window.dir/operators/window.cpp.o
In file included from /Users/kirk/source/rxcpp/Rx/v2/test/operators/window.cpp:1:
In file included from /Users/kirk/source/rxcpp/Rx/v2/test/operators/../test.h:10:
In file included from /Users/kirk/source/rxcpp/Rx/v2/src/rxcpp/rx-lite.hpp:9:
In file included from /Users/kirk/source/rxcpp/Rx/v2/src/rxcpp/operators/../rx-includes.hpp:179:
/Users/kirk/source/rxcpp/Rx/v2/src/rxcpp/rx-operators.hpp:234:9: error: static_assert failed "missing include: please
#include <rxcpp/operators/rx-reduce.hpp>"
static_assert(Included::value, "missing include: please #include <rxcpp/operators/rx-reduce.hpp>");
^ ~~~~~~~~~~~~~~~
The new structure improves documentation by keeping all the code and documentation for the operator in the file for that operator and referring to the docs from observable<>
The new structure ensures that the observable<>.
and operator|
overloads for each operator are identical.
Not all operators have been moved to Rx Lite. This means that using Rx Lite in this release might cause build breaks (static asserts for missing includes) when moving to subsequent releases of Rx that have moved more operators to Rx Lite. This can be manually averted by including the needed headers now, but without the static asserts it will be hard to prove that the used operators are included.
@gchudnov @alexandrebourlon @marcobusemann @wutiantong @diorcety @xunilrj
@d-led @maiermic @thedillonb @frankinshtein @VorpalBlade @ildarsharafutdinov @helgoboss @srdjantot @sthekepat @hoffis @martinfinke
debounce
exists
contains
any
timeout
with_latest_from
all
timestamp
window_toggle
take_last
skip_last
time_interval
switch_if_empty
default_if_empty
sequence_equal
This release fixes many bugs and adds more operators.
There were many contributors to this release.
Thanks to:
Operators added:
Many new time related operators and fixes.
iOS support- uses pthread for thread-local storage when required. doxygen docs run_loop scheduler timer source amb, buffer, replay, window, zip, pairwise operators
Thanks to all these fine contributors! @ValeryKopylov, @shivashankarp, @BenPope, @cirla, @igor-mikushkin, @arBmind