-
Notifications
You must be signed in to change notification settings - Fork 534
Release 1.0.RC1 #84
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
Comments
On number 4) I think it's very important that there are at least 2 implementations available, since there's nothing like actually implementing a spec for highlighting problems. Shouldn't be a problem to wait for 2 solid implementations, right? |
Reactor 2.0 already implements this version of the spec. /cc @smaldini |
@alexandru I thought "2" first but I would say that "2+" would be a requirement for the final version, I think an RC can be shipped with having "1+" passing the TCK. And it looks like it's going to be possible to ship the RC1 with "2+" since @jbrisbin & @smaldini has Reactor 2.0 going strong and the akka team should be able to migrate to 0.4.0 shortly. |
reactive-streams branch in reactor gh is on track, still suffers an issue with competing demand signaling and event flow that only reveals on online CI (I can't sleep anymore this is killing me). I've implemented the latest firehose changes to see if it would help but this still happens to me. All the samples I've seen so far from @rkuhn or @benjchristensen don't really address the buffering rules around consumer without demand (which is quite core to the spec). I think a lot of implementations will deal with this issues, alongside with Merge/Parallel operations issues :D |
@smaldini "the buffering rules around consumer without demand" - could you elaborate on what you mean by that? |
As a note, I'm also working on an implementation that's fairly strong, but still needs work. Have been waiting on the TCK for 0.4.0. |
I'm in a similar situation with future-streams: I'll update it to 0.4 and make sure it passes the TCK, once 0.4 and the TCK are more or less finalized. |
I have seen that the folks from RxJava made progress in 0.20.0-RC1 for adding back-pressure, though they aren't yet implementing the interfaces, so yeah, good times ahead :-) /cc @benjchristensen |
@alexandru Yeah, I'm super stoked, fingers crossed we've ironed out virtually all issues that were reported and we've minimized the "moving parts" to get to a minimal core/spec. |
@viktorklang specifically this: In real scenario and according to the rules (and to allow for slower rate), it needs to be overflowed somewhere until subscriber next request that will pull first and increase the capacity with the remaining. |
Folks - as an idea, a mailing list or place where we could discuss On Thu, Jul 17, 2014 at 5:53 PM, Stephane Maldini [email protected]
Alexandru Nedelcu |
@smaldini: that benchmark code was done specifically for rate-detaching high-throughput code, if the intention is to not drop elements then the code will have to look quite differently (i.e. actually propagating demand as intended). For real code you can take a look at the Akka implementation: we only run the processing for an element if we actually have both supply and demand in the same spot. |
@rkuhn yup understood, don't get me wrong I think the example is quite fantastic and actually made me think about the subscription slightly differently. But yeah this is the kind of issues implementations will have to deal with probably and its not an easy one. Thanks for the pointer onto Akka impl., its worth a read too! 👍 |
@alexandru We tried that, but my personal opinion is that it's better to keep things in the open and as close to the project as possible, so opening an issue and discussing it seems like the lowest-overhead option. |
@alexandru That's a good idea, shall we make one on Google Groups or would you prefer a different forum? |
I'm fine with those 4 requirements for releasing 1.0RC1, but I'd like to have at least 3 implementations capable of interacting with each other before we call 1.0 final. The goal is to have RxJava there this summer (next 6-10 weeks hopefully). Since RxJava 1.0 can't break all of its existing interfaces, it will require a bridge between RxJava and the Reactive Stream interfaces, but this will be a simple RxJava module that adds the bridge for interop. RxJava core is adopting the semantics of Reactive Streams so bridging the interfaces should be sufficient for interop and compatibility as the |
Hooking together 3+ implementations would definitely be a worthy
|
It would be good to include a TCK of some sort that tests this interoperability. It would have a set of circumstances that would simulate common integration points and the various permutations could be tested by having implementation authors provide a shim between the TCK I think using a |
A few notes about potential java.util.concurrent tie-ins: I'm hoping that we include reactive-streams APIs as one part of extending async/reactive support. The other parts will probably include one or more primitive "TaskEmitter" interfaces (for, among other cases, uncontrollable sources), utilities for hooking CompletableFutures to IO, timers, and JDK8 parallel streams, some standard way way to bridge the sticky-exception-fluent CompletionStage API with onSuccess / onFailure style APIs, and a few other things. I plan to post something about these one of these days on the concurrency-interest list. |
BTW on the TCK side, I hope we can also verify some asynchronous behavior at scale with heavily repeated concurrent testing and reasonable volume (1M > onNext). StreamSubscription can be subject to race condition in particular and I think that was one of the most difficult challenge in the implementation we are running on Reactor. |
@DougLea That's great to hear. I look forward to the concurrency-interest post and building future revisions of Rx against these new interfaces. |
Sounds great,
|
Consuming infinite & hot sources is a good example. More thoughts?
|
why not use jdk8' stream /lambda/function/etc,standing on Shoulders of Giants; |
@boboyada anyone is free to create a library/Reactive Streams impl that can lift j.u.s.Stream into a Publisher. Reactive Streams is not intended to be end-user API, please refer to the README |
@reactive-streams/contributors Alright everybody, I think it's time to take this to the next level. Can we get 1.0.0-RC1 out ASAP? |
👍 on releasing 1.0.0-RC1 |
@reactive-streams/contributors Everything is now in place for shipping 1.0.0.RC1, I'd like to ship 1.0.0.RC1 ASAP, so please vote within 7 days! |
Is the intention that this is a real RC? That is, there are no changes planned between RC and final release? |
Yes. No changes expected, only bugfixes reported against the RC.
|
@reactive-streams/contributors I propose to publish Reactive Streams 1.0.0.RC1 on friday the 19th of December. Then we make a push to get implementations on top of 1.0.0.RC1 as soon as possible, then we cut 1.0.0 when we see that we have enough implementations successfully on 1.0.0.RC1. Sounds good? Sounds bad? Let your voice be heard :) |
👍 |
@benjchristensen Awesome! Sadly the time table slipped a bit, but I think we can cut the RC1 this week :) |
@smaldini I think we are in RC1-shape code wise, we have examples, we have a TCK, we have the examples passing the TCK, we have multiple implementations and we've polished the spec. @reactive-streams/contributors We, the Reactive Streams SIG, has achieved something remarkable here in a quite short amount of time. I am extremely honored to have the privilege of working together with all of you. Happy Holidays everyone! |
I'm going to deploy it of course, give me a couple dozen minutes, I've been poisoned with wine and chocolate :) |
No stress. :-) Cheers,
|
It's on maven central. I'm fixing our tests now which fail on multiple subscribe case :) |
Quick Question about idempotent subscriptions, I have a simple fix which is "use the Stream#broadcast() (transform a cold stream in hot stream) operation at the end of the helper publisher". This because the publisher stream is unicast in that test suite (Iterable Stream create a unique registration cursored on the iterablee). Do I really need to enforce it on the cold stream or does the test expect an hot stream ? |
Which test is failing for you? Cheers,
|
spec212_mustNotCallOnSubscribeMoreThanOnceBasedOnObjectEquality_specViolation |
Hmm, open an issue and I'll have a look when I have a computer handy and a Could you push the RC1 tag? Thanks! Cheers,
|
Damn I thought it was pushed, I'll do it later on when I get back close to my machine. Sent from my iPhone
|
Great, thanks. I'll draft some form of annoucement so we can get people On Sun, Dec 28, 2014 at 3:21 PM, Stephane Maldini [email protected]
Cheers, |
Done |
What needs to happen in order for us to be able to ship a release candidate of Reactive Streams 1.0?
Thoughts:
@reactive-streams/contributors please add thoughts as comments
The text was updated successfully, but these errors were encountered: