Skip to content

Preparations for 1.0.2-RC1—incl. release notes. #417

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

Merged
merged 1 commit into from
Dec 1, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ The latest release is available on Maven Central as
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams</artifactId>
<version>1.0.1</version>
<version>1.0.2-RC1</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-tck</artifactId>
<version>1.0.1</version>
<version>1.0.2-RC1</version>
<scope>test</scope>
</dependency>
```
Expand Down Expand Up @@ -84,7 +84,7 @@ followed by a possibly unbounded number of `onNext` signals (as requested by `Su

### SPECIFICATION

#### 1. Publisher ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/api/src/main/java/org/reactivestreams/Publisher.java))
#### 1. Publisher ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2-RC1/api/src/main/java/org/reactivestreams/Publisher.java))

```java
public interface Publisher<T> {
Expand Down Expand Up @@ -117,7 +117,7 @@ public interface Publisher<T> {
| <a name="1.11">11</a> | A `Publisher` MAY support multiple `Subscriber`s and decides whether each `Subscription` is unicast or multicast. |
| [:bulb:](#1.11 "1.11 explained") | *The intent of this rule is to give Publisher implementations the flexibility to decide how many, if any, Subscribers they will support, and how elements are going to be distributed.* |

#### 2. Subscriber ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/api/src/main/java/org/reactivestreams/Subscriber.java))
#### 2. Subscriber ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2-RC1/api/src/main/java/org/reactivestreams/Subscriber.java))

```java
public interface Subscriber<T> {
Expand Down Expand Up @@ -157,7 +157,7 @@ public interface Subscriber<T> {
| <a name="2.13">13</a> | Calling `onSubscribe`, `onNext`, `onError` or `onComplete` MUST [return normally](#term_return_normally) except when any provided parameter is `null` in which case it MUST throw a `java.lang.NullPointerException` to the caller, for all other situations the only legal way for a `Subscriber` to signal failure is by cancelling its `Subscription`. In the case that this rule is violated, any associated `Subscription` to the `Subscriber` MUST be considered as cancelled, and the caller MUST raise this error condition in a fashion that is adequate for the runtime environment. |
| [:bulb:](#2.13 "2.13 explained") | *The intent of this rule is to establish the semantics for the methods of Subscriber and what the Publisher is allowed to do in which case this rule is violated. «Raise this error condition in a fashion that is adequate for the runtime environment» could mean logging the error—or otherwise make someone or something aware of the situation—as the error cannot be signalled to the faulty Subscriber.* |

#### 3. Subscription ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/api/src/main/java/org/reactivestreams/Subscription.java))
#### 3. Subscription ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2-RC1/api/src/main/java/org/reactivestreams/Subscription.java))

```java
public interface Subscription {
Expand Down Expand Up @@ -205,7 +205,7 @@ public interface Subscription {

A `Subscription` is shared by exactly one `Publisher` and one `Subscriber` for the purpose of mediating the data exchange between this pair. This is the reason why the `subscribe()` method does not return the created `Subscription`, but instead returns `void`; the `Subscription` is only passed to the `Subscriber` via the `onSubscribe` callback.

#### 4.Processor ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/api/src/main/java/org/reactivestreams/Processor.java))
#### 4.Processor ([Code](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2-RC1/api/src/main/java/org/reactivestreams/Processor.java))

```java
public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {
Expand Down
110 changes: 106 additions & 4 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,107 @@
# Release notes for Reactive Streams

---

# Version 1.0.2-RC1 released on 2017-12-01

## Announcement:

This update to `Reactive Streams` brings the following improvements over `1.0.1`.

## Highlights:

- Specification
+ Glossary term added for `Thread-safe`
+ No breaking/semantical changes
+ Rule [clarifications](#specification-clarifications-102-rc1)
- Interfaces
+ No changes
- Technology Compatibility Kit (TCK)
+ Improved [coverage](#tck-alterations-102-rc1)
* Supports Publishers/Processors which do [coordinated emission](http://www.reactive-streams.org/reactive-streams-tck-1.0.2-RC1-javadoc/org/reactivestreams/tck/PublisherVerification.html#doesCoordinatedEmission--).
+ Improved JavaDoc
- Examples
+ New example [RangePublisher](http://www.reactive-streams.org/reactive-streams-examples-1.0.2-RC1-javadoc/org/reactivestreams/example/unicast/RangePublisher.html)
- Artifacts
+ NEW! [Flow adapters](#flow-adapters)
+ NEW! [Flow TCK](#flow-tck)
+ Java 9 [Automatic-Module-Name](#automatic-module-name) added for all artifacts

## Specification clarifications 1.0.2-RC1

## Subscriber Rule 2

**1.0.1:** The intent of this rule is that a Subscriber should not obstruct the progress of the Publisher from an execution point-of-view. In other words, the Subscriber should not starve the Publisher from CPU cycles.

**1.0.2-RC1:** The intent of this rule is that a Subscriber should not obstruct the progress of the Publisher from an execution point-of-view. In other words, the Subscriber should not starve the Publisher from receiving CPU cycles.

## Subscriber Rule 8

**1.0.1:** The intent of this rule is to highlight that there may be a delay between calling `cancel` the Publisher seeing that.

**1.0.2-RC1** The intent of this rule is to highlight that there may be a delay between calling `cancel` and the Publisher observing that cancellation.

## Flow adapters

An adapter library has been created to convert `org.reactivestreams` to `java.util.concurrent.Flow` and vice versa. Read more about it [here](http://www.reactive-streams.org/reactive-streams-flow-adapters-1.0.2-RC1-javadoc)

~~~xml
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-flow-adapters</artifactId>
<version>1.0.2-RC1</version>
</dependency>
~~~

## Flow TCK

A TCK artifact has been created to allow for direct TCK verification of `java.util.concurrent.Flow` implementations. Read more about it [here](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2-RC1/tck-flow/README.md)

~~~xml
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-tck-flow</artifactId>
<version>1.0.2-RC1</version>
</dependency>
~~~

## Automatic Module Name

* `org.reactivestreams:reactive-streams` => `org.reactivestreams`
* `org.reactivestreams:reactive-streams-examples` => `org.reactivestreams.examples`
* `org.reactivestreams:reactive-streams-tck` => `org.reactivestreams.tck`
* `org.reactivestreams:reactive-streams-flow-adapters` => `org.reactivestreams.flowadapters`
* `org.reactivestreams:reactive-streams-tck-flow` => `org.reactivestreams.tckflow`

## TCK alterations 1.0.2-RC1

- Added support for Publisher verification of Publishers who do coordinated emission, i.e. where elements only are emitted after all current Subscribers have signalled demand. ([#284](https://github.com/reactive-streams/reactive-streams-jvm/issues/284))

## Contributors
+ Roland Kuhn [(@rkuhn)](https://github.com/rkuhn)
+ Ben Christensen [(@benjchristensen)](https://github.com/benjchristensen)
+ Viktor Klang [(@viktorklang)](https://github.com/viktorklang)
+ Stephane Maldini [(@smaldini)](https://github.com/smaldini)
+ Stanislav Savulchik [(@savulchik)](https://github.com/savulchik)
+ Konrad Malawski [(@ktoso)](https://github.com/ktoso)
+ Slim Ouertani [(@ouertani)](https://github.com/ouertani)
+ Martynas Mickevičius [(@2m)](https://github.com/2m)
+ Luke Daley [(@ldaley)](https://github.com/ldaley)
+ Colin Godsey [(@colinrgodsey)](https://github.com/colinrgodsey)
+ David Moten [(@davidmoten)](https://github.com/davidmoten)
+ Brian Topping [(@briantopping)](https://github.com/briantopping)
+ Rossen Stoyanchev [(@rstoyanchev)](https://github.com/rstoyanchev)
+ Björn Hamels [(@BjornHamels)](https://github.com/BjornHamels)
+ Jake Wharton [(@JakeWharton)](https://github.com/JakeWharton)
+ Anthony Vanelverdinghe[(@anthonyvdotbe)](https://github.com/anthonyvdotbe)
+ Kazuhiro Sera [(@seratch)](https://github.com/seratch)
+ Dávid Karnok [(@akarnokd)](https://github.com/akarnokd)
+ Evgeniy Getman [(@egetman)](https://github.com/egetman)
+ Ángel Sanz [(@angelsanz)](https://github.com/angelsanz)
+ (new) shenghaiyang [(@shenghaiyang)](https://github.com/shenghaiyang)
+ (new) Kyle Thomson [(@kiiadi)](https://github.com/kiiadi)


---

# Version 1.0.1 released on 2017-08-09
Expand All @@ -20,16 +122,16 @@ When JDK9 ships, `Reactive Streams` will publish a compatibility/conversion libr
+ A new [Glossary](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/README.md#glossary) section
+ Description of the intent behind every single rule
+ No breaking semantical changes
+ Multiple rule [clarifications](#specification-clarifications)
+ Multiple rule [clarifications](#specification-clarifications-1.0.1)
- Interfaces
+ No changes
+ Improved JavaDoc
- Technology Compatibility Kit (TCK)
+ Improved coverage
+ Improved JavaDoc
+ Multiple test [alterations](#tck-alterations)
+ Multiple test [alterations](#tck-alterations-1.0.1)

## Specification clarifications
## Specification clarifications 1.0.1

## Publisher Rule 1

Expand Down Expand Up @@ -145,7 +247,7 @@ When JDK9 ships, `Reactive Streams` will publish a compatibility/conversion libr

---

## TCK alterations
## TCK alterations 1.0.1

- Fixed potential resource leaks in partially consuming Publisher tests ([#375](https://github.com/reactive-streams/reactive-streams-jvm/issues/375))
- 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))
Expand Down
8 changes: 4 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ subprojects {
apply plugin: "osgi"

group = "org.reactivestreams"
version = "1.0.1"
version = "1.0.2-RC1"

sourceCompatibility = 1.6
targetCompatibility = 1.6
Expand Down Expand Up @@ -42,12 +42,12 @@ subprojects {
instructionReplace "Bundle-Vendor", "Reactive Streams SIG"
instructionReplace "Bundle-Description", "Reactive Streams API"
instructionReplace "Bundle-DocURL", "http://reactive-streams.org"
instructionReplace "Bundle-Version", "1.0.1"
instructionReplace "Bundle-Version", "1.0.2-RC1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps $version?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instructionReplace "Bundle-Version", $version ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think String interpolation should work here (but I can be never sure with Gradle):

instructionReplace "Bundle-Version", "$version"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For some awkward reason "$version" will generate "1.0.1.RC1" iso "1.0.1-RC1" :S

}
}

if (name in ["reactive-streams",
"reactive-streams-tck",
if (name in ["reactive-streams",
"reactive-streams-tck",
"reactive-streams-tck-flow",
"reactive-streams-examples",
"reactive-streams-flow-adapters"]) {
Expand Down
2 changes: 1 addition & 1 deletion tck-flow/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The TCK is provided as binary artifact on [Maven Central](http://search.maven.or
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-tck-flow</artifactId>
<version>1.0.1</version>
<version>1.0.2-RC1</version>
<scope>test</scope>
</dependency>
```
Expand Down
2 changes: 1 addition & 1 deletion tck/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The TCK is provided as binary artifact on [Maven Central](http://search.maven.or
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-tck</artifactId>
<version>1.0.1</version>
<version>1.0.2-RC1</version>
<scope>test</scope>
</dependency>
```
Expand Down
1 change: 0 additions & 1 deletion tck/src/test/resources/testng.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,5 @@ tests:
classes:
- org.reactivestreams.tck.IdentityProcessorVerificationDelegationTest
- org.reactivestreams.tck.PublisherVerificationTest
- org.reactivestreams.tck.BokenExampleTest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah thanks for removing

- org.reactivestreams.tck.SubscriberBlackboxVerificationTest
- org.reactivestreams.tck.SubscriberWhiteboxVerificationTest