-
Notifications
You must be signed in to change notification settings - Fork 397
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Starting v3 #347
Comments
If I may ask because I don't see a roadmap, what is v3 trying to address that couldn't be submitted to v2? Does it want to move to be easier to use? To be more C++ idiomatic vs. Rx idiomatic? What are the current pain points? |
I built the v3 prototype to demonstrate building Rx operators using c++14 auto lambdas in slides. v2 is C++11 only and compiles all the way back to vs2013. expression structureAlong the way I re-evaluated the structure of an Rx expression. The v3 structure has some desirable properties.
This defines
async lifetimeoperators that have state, heap allocate into shared_ptr (to support async lifetime which does not fit in a C++ block) - this compounds as operators are composed together. I wanted to explore an async_ptr whose lifetime was controlled by an async scope, not a separate ref count per operator. I think the current implementation in v3 needs review and probably a rewrite. schedulingThe goal of scheduling is to allow many different concurrency abstractions to be adapted to the algorithms. the algorithms also use scheduling to opt into thread-safety. Rx .Net ended up building each algorithm with lock-free code. this is error prone and pessimizes performance. in v2 and v3 operators that need thread-safety take a scheduler that defaults to a noop that adds no overhead to the cases where operators are dealing with events from the same thread (often the case when handling gui events like clicks and presses) I wanted to get rid of the coordination (that I built in v2 to accomplish this) because I now believe that I can just use scheduler to extract thread-safety from each operator. I think the current implementation in v3 needs review and probably a rewrite. contributeI am sure that there are more issues and improvements and shift in the goals that need to happen to get v3 into shape. Please open individual issues to discuss specific topics. Thanks! |
How is this task going now? The latest change I saw in https://github.com/kirkshoop/rxcppv3 was from Sep 22, 2016. What is the plan? To have a new implementation with https://github.com/kirkshoop/rxcppv3, or have some incremental change here? |
My thoughts on starting v3.
The text was updated successfully, but these errors were encountered: