Releases: ReactiveX/RxCpp
Prep for breaking change in #562
purpose
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
What's Changed
- Remove static from observe_on_run_loop by @lebdron in #449
- group_by support DurationSelector by @diorcety in #447
- adding test for nocompare observe_on by @kirkshoop in #448
- fix blocking_observable::subscribe by @kirkshoop in #453
- fix #390 by @yatli in #454
- Fix doc target missing declarations errors by @gsauthof in #464
- Update ide build to Visual Studio 2017 by @zwcloud in #466
- Add support for compiling rxcpp with -fno-exceptions by @iam in #456
- fixes for replay and moved-from container not being empty by @kirkshoop in #467
- Small fixes. by @besser82 in #476
- README: fix cmake generation snippet for clang/linux by @iam in #479
- cmake: Fix 'make' generator targets by @iam in #480
- rxcpp: Fix data race in composite_subscription by @iam in #481
- removing a pedantic compile warning by @thorstink in #488
- operators: Add ref_count(other) operator overload. by @iam in #485
- Fix data race in run loop usage by @lebdron in #486
- Fix synchronize lock and recursion data race by @lebdron in #493
- dox: fix dead rxmarbles link by @NeroBurner in #495
- Fix address sanitizer issue in new_worker (rx-newthread.hpp) by @luckychess in #497
- removed constexpr to support older VC compilers. by @joe2018Outlookcom in #504
- make find_package(rxcpp CONFIG) work through exporting TARGETS by @Exctues in #509
- Add instructions to install RxCpp using vcpkg by @vicroms in #510
- Observable forward declaration header by @lebdron in #511
- Changed values_from template parameter to not cast. by @tinkerbeast in #521
- add this to captures due to c++20 deprecation by @kirkshoop in #527
- Corrected rare deadlock condition on observable.as_blocking().subscribe() by @quetzalcoatl in #543
- Fixed build interface include directories for CMake projects by @spreagtha in #536
- Fix std::result_of removed in C++20 by @Asaaj in #551
- Include in rx-includes.hpp by @kamleshbhalui in #547
- [FixCrash][Perfomance]Remove unnecessary "this" capture for subjects to prevent crashes for stack subjects variables. by @victimsnino in #561
Full Changelog: v4.1.0...v4.1.1
A New Home
the move
The major change this release is that the RxCpp repo moved to the ReactiveX org on Github
changes
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() when T is unsigned type
Fix rxcpp::observable<>::from() 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
ready to roar!
This release of rxcpp is ready to use in production. please try it out and report issues!
rx lite complete!
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.
bug fixes
- @wutiantong fixed subject thread-safe correctness
- @kirkshoop fixed iterate() support for rangev3 - reported by @adsharma
- @polariszz fixed rxcpp::util::any_value_true
breaking changes
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.
new stuff
- @aargor, @gchudnov & @kirkshoop added VC2017 RTM support
- @kirkshoop added coroutines support
- @studoot added callback from runloop scheduler
- @Ravirael added take_while
- @gchudnov added is_empty
- @gchudnov added predicate to distinct_until_changed
Rx Lite!
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.
Rx Lite!
@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.
thanks to all the contributors!
@gchudnov
@alexandrebourlon
@marcobusemann
@wutiantong
@diorcety
@xunilrj
@d-led
@maiermic
@thedillonb
@frankinshtein
@VorpalBlade
@ildarsharafutdinov
@helgoboss
@srdjantot
@sthekepat
@hoffis
@martinfinke
new operators!
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
Refinment
This release fixes many bugs and adds more operators.
There were many contributors to this release.
Thanks to:
- @shivashankarp
- @stefanfisk
- @hoffis
- @MattPD
- @ksinica
- @gchudnov
- @BenPope
- @martinfinke
- @hasyimibhar
- @easysoft2k15
Operators added:
- delay
- distinct
- element_at
- ignore_elements
- on_error_resume_next
- sample_time
- tap
Time!
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