Skip to content

Commit 40a44ad

Browse files
committed
WIP of release notes
1 parent c3b2c6d commit 40a44ad

File tree

1 file changed

+165
-1
lines changed

1 file changed

+165
-1
lines changed

RELEASE-NOTES.md

+165-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,167 @@
11
# Release notes for Reactive Streams
22

3-
Changes will be listed below after version 1.0.0 is released.
3+
---
4+
5+
# Version 1.0.1 released on YYYY-MM-DD
6+
7+
## Announcement:
8+
9+
After more than two years since 1.0.0, we are proud to announce the immediate availability of `Reactive Streams version 1.0.1-RC1`.
10+
11+
Since 1.0.0 was released `Reactive Streams` has managed to achieve most, if not all, it set out to achieve. There are now numerous implementations, and it is scheduled to be included in [JDK9](http://download.java.net/java/jdk9/docs/api/java/util/concurrent/Flow.html).
12+
13+
Also, most importantly, there are no semantical incompatibilities included in this release.
14+
15+
When JDK9 ships, `Reactive Streams` will publish a compatibility/conversion library to seamlessly convert between the `java.util.concurrent.Flow` and the `org.reactivestreams` namespaces.
16+
17+
## Highlights:
18+
19+
- Specification
20+
+ A new [Glossary](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1-RC1/README.md#glossary) section
21+
+ Description of the intent behind every single rule
22+
+ No breaking semantical changes
23+
+ Multiple rule [clarifications](#specification-clarifications)
24+
- Interfaces
25+
+ No changes
26+
+ Improved JavaDoc
27+
- Technology Compatibility Kit (TCK)
28+
+ Improved coverage
29+
+ Improved JavaDoc
30+
+ Multiple test [alterations](#tck-alterations)
31+
- Contributors at this time
32+
+ Roland Kuhn [(@rkuhn)](https://github.com/rkuhn)
33+
+ Ben Christensen [(@benjchristensen)](https://github.com/benjchristensen)
34+
+ Viktor Klang [(@viktorklang)](https://github.com/viktorklang)
35+
+ Stephane Maldini [(@smaldini)](https://github.com/smaldini)
36+
+ Stanislav Savulchik [(@savulchik)](https://github.com/savulchik)
37+
+ Konrad Malawski [(@ktoso)](https://github.com/ktoso)
38+
+ Slim Ouertani [(@ouertani)](https://github.com/ouertani)
39+
+ Martynas Mickevičius [(@2m)](https://github.com/2m)
40+
+ Luke Daley [(@ldaley)](https://github.com/ldaley)
41+
+ Colin Godsey [(@colinrgodsey)](https://github.com/colinrgodsey)
42+
+ David Moten [(@davidmoten)](https://github.com/davidmoten)
43+
+ (new) Brian Topping [(@briantopping)](https://github.com/briantopping)
44+
+ (new) Rossen Stoyanchev [(@rstoyanchev)](https://github.com/rstoyanchev)
45+
+ (new) Björn Hamels [(@BjornHamels)](https://github.com/BjornHamels)
46+
+ (new) Jake Wharton [(@JakeWharton)](https://github.com/JakeWharton)
47+
+ (new) Anthony Vanelverdinghe[(@anthonyvdotbe)](https://github.com/anthonyvdotbe)
48+
+ (new) Kazuhiro Sera [(@seratch)](https://github.com/seratch)
49+
+ (new) Dávid Karnok [(@akarnokd)](https://github.com/akarnokd)
50+
+ (new) Evgeniy Getman [(@egetman)](https://github.com/egetman)
51+
52+
## Specification clarifications
53+
54+
## Publisher Rule 1
55+
56+
**1.0.0:** The total number of onNext signals sent by a Publisher to a Subscriber MUST be less than or equal to the total number of elements requested by that Subscriber´s Subscription at all times.
57+
58+
**1.0.1:** The total number of onNext´s signalled by a Publisher to a Subscriber MUST be less than or equal to the total number of elements requested by that Subscriber´s Subscription at all times.
59+
60+
**Comment: Minor spelling update.**
61+
62+
## Publisher Rule 2
63+
64+
**1.0.0:** A Publisher MAY signal less onNext than requested and terminate the Subscription by calling onComplete or onError.
65+
66+
**1.0.1:** A Publisher MAY signal fewer onNext than requested and terminate the Subscription by calling onComplete or onError.
67+
68+
**Comment: Minor spelling update.**
69+
70+
## Publisher Rule 3
71+
72+
**1.0.0:** onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled sequentially (no concurrent notifications).
73+
74+
**1.0.1:** onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled in a thread-safe manner—and if performed by multiple threads—use external synchronization.
75+
76+
**Comment: Reworded the part about sequential signal and its implications, for clarity.**
77+
78+
## Subscriber Rule 6
79+
80+
**1.0.0:** A Subscriber MUST call Subscription.cancel() if it is no longer valid to the Publisher without the Publisher having signaled onError or onComplete.
81+
82+
**1.0.1:** A Subscriber MUST call Subscription.cancel() if the Subscription is no longer needed.
83+
84+
**Comment: Rule could be reworded since it now has an intent section describing desired effect.**
85+
86+
## Subscriber Rule 11
87+
88+
**1.0.0:** A Subscriber MUST make sure that all calls on its onXXX methods happen-before [1] the processing of the respective signals. I.e. the Subscriber must take care of properly publishing the signal to its processing logic.
89+
90+
**1.0.1:** A Subscriber MUST make sure that all calls on its signal methods happen-before the processing of the respective signals. I.e. the Subscriber must take care of properly publishing the signal to its processing logic.
91+
92+
**Comment: Rule slightly reworded to use the glossary for `signal` instead of the more *ad-hoc* name "onXXX methods". Footnote was reworked into the Intent-section of the rule.**
93+
94+
## Subscription Rule 1
95+
96+
**1.0.0:** Subscription.request and Subscription.cancel MUST only be called inside of its Subscriber context. A Subscription represents the unique relationship between a Subscriber and a Publisher [see 2.12].
97+
98+
**1.0.1:** Subscription.request and Subscription.cancel MUST only be called inside of its Subscriber context.
99+
100+
**Comment: Second part of rule moved into the Intent-section of the rule.**
101+
102+
## Subscription Rule 3
103+
104+
**1.0.0:** Subscription.request MUST place an upper bound on possible synchronous recursion between Publisher and Subscriber[1].
105+
106+
**1.0.1:** Subscription.request MUST place an upper bound on possible synchronous recursion between Publisher and Subscriber.
107+
108+
**Comment: Footnote reworked into the Intent-section of the rule.**
109+
110+
## Subscription Rule 4
111+
112+
**1.0.0:** Subscription.request SHOULD respect the responsivity of its caller by returning in a timely manner[2].
113+
114+
**1.0.1:** Subscription.request SHOULD respect the responsivity of its caller by returning in a timely manner.
115+
116+
**Comment: Footnote reworked into the Intent-section of the rule.**
117+
118+
## Subscription Rule 5
119+
120+
**1.0.0:** Subscription.cancel MUST respect the responsivity of its caller by returning in a timely manner[2], MUST be idempotent and MUST be thread-safe.
121+
122+
**1.0.1:** Subscription.cancel MUST respect the responsivity of its caller by returning in a timely manner, MUST be idempotent and MUST be thread-safe.
123+
124+
**Comment: Footnote reworked into the Intent-section of the rule.**
125+
126+
## Subscription Rule 13
127+
128+
**1.0.0:** While the Subscription is not cancelled, Subscription.cancel() MUST request the Publisher to eventually drop any references to the corresponding subscriber. Re-subscribing with the same Subscriber object is discouraged [see 2.12], but this specification does not mandate that it is disallowed since that would mean having to store previously cancelled subscriptions indefinitely.
129+
130+
**1.0.1:** While the Subscription is not cancelled, Subscription.cancel() MUST request the Publisher to eventually drop any references to the corresponding subscriber.
131+
132+
**Comment: Second part of rule reworked into the Intent-section of the rule.**
133+
134+
## Subscription Rule 15
135+
136+
**1.0.0:** Calling Subscription.cancel MUST return normally. The only legal way to signal failure to a Subscriber is via the onError method.
137+
138+
**1.0.1:** Calling Subscription.cancel MUST return normally.
139+
140+
**Comment: Replaced second part of rule with a definition for `return normally` in the glossary.**
141+
142+
## Subscription Rule 16
143+
144+
**1.0.0:** Calling Subscription.request MUST return normally. The only legal way to signal failure to a Subscriber is via the onError method.
145+
146+
**1.0.1:** Calling Subscription.request MUST return normally.
147+
148+
**Comment: Replaced second part of rule with a definition for `return normally` in the glossary.**
149+
150+
## Subscription Rule 17
151+
152+
**1.0.0:** A Subscription MUST support an unbounded number of calls to request and MUST support a demand (sum requested - sum delivered) up to 2^63-1 (java.lang.Long.MAX_VALUE). A demand equal or greater than 2^63-1 (java.lang.Long.MAX_VALUE) MAY be considered by the Publisher as “effectively unbounded”[3].
153+
154+
**1.0.1:** A Subscription MUST support an unbounded number of calls to request and MUST support a demand up to 2^63-1 (java.lang.Long.MAX_VALUE). A demand equal or greater than 2^63-1 (java.lang.Long.MAX_VALUE) MAY be considered by the Publisher as “effectively unbounded”.
155+
156+
**Comment: Rule simplified by defining `demand` in the glossary, and footnote was reworked into the Intent-section of the rule.**
157+
158+
---
159+
160+
## TCK alterations
161+
162+
- Fixed potential resource leaks in partially consuming Publisher tests ([#375](https://github.com/reactive-streams/reactive-streams-jvm/issues/375))
163+
- Fixed potential resource leaks in partially emitting Subscriber tests ([#372](https://github.com/reactive-streams/reactive-streams-jvm/issues/372), [#373](https://github.com/reactive-streams/reactive-streams-jvm/issues/373))
164+
- Renamed `untested_spec305_cancelMustNotSynchronouslyPerformHeavyCompuatation` to `untested_spec305_cancelMustNotSynchronouslyPerformHeavyComputation` ([#306](https://github.com/reactive-streams/reactive-streams-jvm/issues/306))
165+
- Allow configuring separate timeout for "no events during N time", allowing for more aggressive timeouts in the rest of the test suite if required ([#314](https://github.com/reactive-streams/reactive-streams-jvm/issues/314))
166+
- New test verifying Rule 2.10, in which subscriber must be prepared to receive onError signal without having signaled request before ([#374](https://github.com/reactive-streams/reactive-streams-jvm/issues/374))
167+
---

0 commit comments

Comments
 (0)