Skip to content

Wip 1.0.2 √ #30

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 4 commits into from
Dec 18, 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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
141 changes: 141 additions & 0 deletions _includes/announce-1.0.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
Reactive Streams 1.0.2 is here!
===============================

We—the Reactive Streams Special Interest Group—are happy to announce the immediate availability of `Reactive Streams version 1.0.2`.

When we released 1.0.1, we promised that after JDK9 had shipped, we'd release a compatibility/conversion library to seamlessly convert between the `java.util.concurrent.Flow` and the `org.reactivestreams` namespaces.

Not only have we done that in this release—we have also shipped a TCK for implementations of the `java.util.concurrent.Flow` interfaces, so that they now can be verified without having to manually adapt/convert to the `org.reactivestreams` interfaces.

As usual, `1.0.2` is binary, and semantically, compatible with the previous 1.0.x releases of Reactive Streams.
Copy link

Choose a reason for hiding this comment

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

semantically it's specifically back-wards compatible -- I guess?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ktoso FWIW I think it is both backwards-and-forwards compatible?


The artifacts, documentation and specifications are released under [Creative Commons Zero](http://creativecommons.org/publicdomain/zero/1.0) into the Public Domain.

Documentation
-------------

* [Specification](https://github.com/reactive-streams/reactive-streams-jvm/tree/v1.0.2#specification)
* [Java API Documentation](http://www.reactive-streams.org/reactive-streams-1.0.2-javadoc)
[Flow Adapters Java API Documentation](http://www.reactive-streams.org/reactive-streams-flow-adapters-1.0.2-javadoc)
* [TCK README](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2/tck/README.md)
* [Flow TCK README](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2/tck-flow/README.md)

Artifacts
---------

* *the Reactive Streams interfaces*
* `org.reactivestreams:reactive-streams:1.0.2`

* *the Reactive Streams interfaces*
* `org.reactivestreams:reactive-streams-flow-adapters:1.0.2`

* *the Reactive Streams TCK*
* `org.reactivestreams:reactive-streams-tck:1.0.2`

* *the Reactive Streams Flow TCK*
* `org.reactivestreams:reactive-streams-tck-flow:1.0.2`

* *Example implementations—documented & verified—to draw inspiration from*
* `org.reactivestreams:reactive-streams-examples:1.0.2`

Credits
-------

We'd like to thank everyone involved, all contributors and everyone who has given feedback during the development of this project.

## 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-javadoc/org/reactivestreams/tck/PublisherVerification.html#doesCoordinatedEmission--).
+ Improved JavaDoc
- Examples
+ New example [RangePublisher](http://www.reactive-streams.org/reactive-streams-examples-1.0.2-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

## 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:** 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** 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-javadoc)

~~~xml
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-flow-adapters</artifactId>
<version>1.0.2</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/tck-flow/README.md)

~~~xml
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-tck-flow</artifactId>
<version>1.0.2</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

- 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))
- The `SubscriberWhiteboxVerification` has been given more user friendly error messages in the case where the user forgets to call `registerOnSubscribe`. (#416)[https://github.com/reactive-streams/reactive-streams-jvm/pull/416]

## 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)

*Warm regards,
the Reactive Streams Special Interest Group*
35 changes: 27 additions & 8 deletions _includes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ Reactive Streams is an initiative to provide a standard for asynchronous stream

## NEWS: JDK9 `java.util.concurrent.Flow`

The interfaces available in JDK9's [java.util.concurrent.Flow](https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/Flow.html), are 1:1 semantically equivalent to their respective Reactive Streams counterparts. Which means that there will be a migratory period, while libraries move to adopt the new types in the JDK, however this period is expected to be short - due to the full semantic equivalence of the libraries, as well as the upcoming Reactive Streams release of a converter library as well as TCK compatible directly with the JDK types.
The interfaces available in JDK9's [java.util.concurrent.Flow](https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/Flow.html), are 1:1 semantically equivalent to their respective Reactive Streams counterparts. This means that there will be a migratory period, while libraries move to adopt the new types in the JDK, however this period is expected to be short - due to the full semantic equivalence of the libraries, as well as the Reactive Streams <-> Flow adapter library as well as a TCK compatible directly with the JDK Flow types.

Read [this](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/README.md) if you are interested in learning more about `Reactive Streams` for the JVM.
Read [this](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2/README.md) if you are interested in learning more about `Reactive Streams` for the JVM.

## The Problem

Expand Down Expand Up @@ -34,28 +34,47 @@ The basic semantics define how the transmission of stream elements is regulated

This working group applies the basic semantics to a set of programming interfaces whose main purpose is to allow the interoperation of different conforming implementations and language bindings for passing streams between objects and threads within the JVM, using the shared memory heap.

As of *August 9, 2017* we have released version 1.0.1 of Reactive Streams for the JVM, including Java [API](/reactive-streams-1.0.1-javadoc), a textual [Specification](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/README.md#specification), a [TCK](/reactive-streams-tck-1.0.1-javadoc) and [implementation examples](/reactive-streams-examples-1.0.1-javadoc). Corresponding code artifacts are available on Maven Central:
As of *December 19th, 2017* we have released version 1.0.2 of Reactive Streams for the JVM, including Java [API](/reactive-streams-1.0.2-javadoc), a textual [Specification](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2/README.md#specification), a [TCK](/reactive-streams-tck-1.0.2-javadoc) and [implementation examples](/reactive-streams-examples-1.0.2-javadoc).

New in 1.0.2 is the JDK9 [adapter library](reactive-streams-flow-adapters-1.0.2-javadoc) and the JDK9 [TCK for Flow](reactive-streams-tck-flow-1.0.2-javadoc).

Corresponding code artifacts are available on Maven Central:

<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams</artifactId>
<version>1.0.1</version>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-tck</artifactId>
<version>1.0.1</version>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-flow-adapters</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-tck-flow</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams-examples</artifactId>
<version>1.0.2</version>
</dependency>

The source code for these is available on [github](https://github.com/reactive-streams/reactive-streams-jvm/tree/v1.0.1). Please use github issues for providing feedback.
The source code for these is available on [github](https://github.com/reactive-streams/reactive-streams-jvm/tree/v1.0.2). Please use github issues for providing feedback.

All artifacts and specifications are released under [Creative Commons Zero](http://creativecommons.org/publicdomain/zero/1.0) into the Public Domain.

Read more about `Reactive Streams 1.0.1` for the JVM [here](announce-1.0.1).
Read more about `Reactive Streams 1.0.2` for the JVM [here](announce-1.0.2).

##### A Note for Implementors

To get started implementing the final specification, it is recommended to start by reading the [README](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/README.md) and the [Java API documentation](/reactive-streams-1.0.1-javadoc), then taking a look at the [Specification](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.1/README.md#specification) then taking a look at the [TCK](https://github.com/reactive-streams/reactive-streams-jvm/tree/v1.0.1/tck) and the [example implementations](https://github.com/reactive-streams/reactive-streams-jvm/tree/v1.0.1/examples/src/main/java/org/reactivestreams/example/unicast). If you have an issue with any of the above, please take a look at [closed issues](https://github.com/reactive-streams/reactive-streams-jvm/issues?page=1&state=closed) and then open a [new issue](https://github.com/reactive-streams/reactive-streams-jvm/issues/new) if it has not already been answered.
To get started implementing the final specification, it is recommended to start by reading the [README](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2/README.md) and the [Java API documentation](/reactive-streams-1.0.2-javadoc), then taking a look at the [Specification](https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.2/README.md#specification) then taking a look at the [TCK](https://github.com/reactive-streams/reactive-streams-jvm/tree/v1.0.2/tck) and the [example implementations](https://github.com/reactive-streams/reactive-streams-jvm/tree/v1.0.2/examples/src/main/java/org/reactivestreams/example/unicast). If you have an issue with any of the above, please take a look at [closed issues](https://github.com/reactive-streams/reactive-streams-jvm/issues?page=1&state=closed) and then open a [new issue](https://github.com/reactive-streams/reactive-streams-jvm/issues/new) if it has not already been answered.

This work was performed in the [reactive-streams-jvm](https://github.com/reactive-streams/reactive-streams-jvm/) repository.

Expand Down
5 changes: 5 additions & 0 deletions announce-1.0.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
layout: index
---

{% include announce-1.0.2.md %}
2 changes: 2 additions & 0 deletions reactive-streams-1.0.2-RC2-javadoc/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Manifest-Version: 1.0

30 changes: 30 additions & 0 deletions reactive-streams-1.0.2-RC2-javadoc/allclasses-frame.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>All Classes (reactive-streams 1.0.2-RC2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-1.10.2.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
</head>
<body>
<h1 class="bar">All&nbsp;Classes</h1>
<div class="indexContainer">
<ul>
<li><a href="org/reactivestreams/Processor.html" title="interface in org.reactivestreams" target="classFrame"><span class="interfaceName">Processor</span></a></li>
<li><a href="org/reactivestreams/Publisher.html" title="interface in org.reactivestreams" target="classFrame"><span class="interfaceName">Publisher</span></a></li>
<li><a href="org/reactivestreams/Subscriber.html" title="interface in org.reactivestreams" target="classFrame"><span class="interfaceName">Subscriber</span></a></li>
<li><a href="org/reactivestreams/Subscription.html" title="interface in org.reactivestreams" target="classFrame"><span class="interfaceName">Subscription</span></a></li>
</ul>
</div>
</body>
</html>
30 changes: 30 additions & 0 deletions reactive-streams-1.0.2-RC2-javadoc/allclasses-noframe.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>All Classes (reactive-streams 1.0.2-RC2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-1.10.2.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
</head>
<body>
<h1 class="bar">All&nbsp;Classes</h1>
<div class="indexContainer">
<ul>
<li><a href="org/reactivestreams/Processor.html" title="interface in org.reactivestreams"><span class="interfaceName">Processor</span></a></li>
<li><a href="org/reactivestreams/Publisher.html" title="interface in org.reactivestreams"><span class="interfaceName">Publisher</span></a></li>
<li><a href="org/reactivestreams/Subscriber.html" title="interface in org.reactivestreams"><span class="interfaceName">Subscriber</span></a></li>
<li><a href="org/reactivestreams/Subscription.html" title="interface in org.reactivestreams"><span class="interfaceName">Subscription</span></a></li>
</ul>
</div>
</body>
</html>
Loading