Releases: RxBroadcast/RxBroadcast
RxBroadcast 2.0
v2.0.0 (2017-11-06)
This 2.0 release represents a good few months of work and debugging. This release includes breaking changes and a lot of bug fixes. The 1.x branch may as well not exist (though it will be updated as needed).
Breaking changes
-
The package has been renamed from
rx.broadcast
torxbroadcast
(ced55f2) -
BasicOrder
has been renamed toNoOrder
(79e8fc1)This new name better (more obviously) reflects the guarantees it provides on broadcast ordering: none at all. The old name was somewhat esoteric and came from a single text on distributed systems.
-
Errors in the broadcast stream are now propagated to subscribers
Subscribers to broadcasts (i.e.
broadcast.valuesOfType(Foo.class).subscribe(s)
) will now need to retry or resubscribe if or when an error terminates the stream.
Improvements
- More
@NotNull
annotations have been added - The library is now tested and works on Java 9
- All no-argument constructors intended strictly for serialization have been deprecated
Bug fixes
Too many to list, honestly. In developing 2.0, a handful of static analyzers have been included in the build process (Infer, FindBugs, Error Prone, and PMD) and there were a lot of bugs discovered by them.
Development Improvements
- CheckStyle 8.2
- Gradle 4.3
- The old test scripts written in Bash have been scrapped and replaced with a Python script
Resources
As always:
-
The Javadoc exists online at RxBroadcast API Javadoc
There will be an update with more complete Javadoc soon. The Javadoc in this version is lacking if not useless and that needs to be fixed.
RxBroadcast 1.2.1
v1.2.1 (2017-06-13)
This release includes but a small number of changes, notably a dependency on Kryo 4 (#82).
Bug fixes
- 7defc59 Fix HTTP link in published POM file
Dependency Updates
- 8fa0e33 Depend on Kryo 4.0.0
Development Improvements
@NotNull
annotations
- 5b9760a Annotate
Timestamped#compareTo
parameter asNotNull
- 97acf8e Annotate
Sender#compareTo
parameter asNotNull
- 478c24a Add
NotNull
annotation toBroadcast#send
return type - 1d1aff2 Annotate
DaemonThreadFactory#newThread
asNotNull
Changes that don't matter to anyone
- c554442 Replace
computeIfAbsent
withputIfAbsent
to avoid lambda
Resources
As always:
RxBroadcast 1.2.0
v1.2.0 (2017-06-07)
This release includes a few changes, notably serialization has now been adapterized, allowing other serialization frameworks/libraries other than Kryo to be used (see #67, #69, and #72).
Oh, and 1.2.0 has been tested (and works) with IPv6 (#75).
New additions
Dependency Updates
- 2d5299a Google's Protocol Buffers library (3.3.0) is now a dependency (see #72)
- 10a62e8 JetBrains' Java annotations library is now used in a few places (#77)
Development Improvements
- bae5f9f Travis CI is using RC1 of Gradle 4.0 (#74)
- f924016 The Gradle build script has been ported to use Gradle Script Kotlin 🎉 (#74)
Resources
As always, see:
RxBroadcast 1.1.3
RxBroadcast 1.1.2
v1.1.2 (2017-04-15)
The RxJava dependency has been bumped to 1.2.9 🎉 but a few fixes needed to be made to make it past 1.1.9. Turns Out™ RxJava 1.1.9 fixed a bug with the I/O scheduler, where it would reuse threads a bit too eagerly.[1] That fix broke UdpBroadcast#receive
, as broadcast orders are not thread-safe, resulting in BasicOrder
working "fine", but all the stricter orderings not exhibiting incorrect behaviour. This is all fixed now—UdpBroadcast
schedules everything on a single thread explicitly (#55).
Documentation-related Updates
- a0caec6 Add Javadoc comments to
VectorTimestamp
and related classes - 4eaac09 Add Javadoc comments to
InMemoryBroadcast
class - 07f6349 Add Javadoc comments to
BasicOrder
class - 5cc9944 Add Javadoc comments to
Broadcast
- 8755402 Add Javadoc comments to
rx.broadcast.time
classes
Improvements
- 842a1f3 Replace deprecated
Observable.create
withObservable.unsafeCreate
Bug Fixes
- b28a9c7 Schedule
UdpBroadcast
receive to run on a single thread - bd0d9a7 Add
DaemonThreadFactory
for daemon threads
Dependency Updates
Development Improvements
- 3cdcfbe Add
-Xlint:all
to javac opts - 54da90a Add
-Werror
to javac opts - 3445f26 Add OpenJDK 8 to the Travis CI build matrix
Resources
As always, see the RxBroadcast API Javadoc
RxBroadcast 1.1.1
v1.1.1 (2017-03-27)
I rate this release, the coveted three-tacos-and-one-unicorn: 🌮 🌮 🌮 🦄
A Brand-new "Ping-pong" Test Suite
Via Pull Requests #44 and #45, a whole new suite of tests exist for exercising the two-way communication between sender and receiver.
- 079c3ab Add ping pong test for
CausalOrder
UdpBroadcast
- d0e4322 Add ping pong test for
SSF
UdpBroadcast
- cd5390e Add ping pong test for
BasicOrder
UdpBroadcast
Small Fixes
- 48446bf Add test case for
SingleSourceFifoOrder#prepare
(#46) - 678c979 Add no-args constructor for
VectorTimestamp
- 62ce6f6 Override
toString
forTimestamped
- af73bb4 Suppress warnings for weaker access warnings in
InMemoryBroadcast
class - 3a5292a Replace filter+cast with
ofType(Class<R>)
operator (#30)
Development Improvements
Resources
See the RxBroadcast API Javadoc
RxBroadcast 1.1.0
v1.1.0 (2017-01-12)
This version introduces a in-memory broadcast implementation
A Wild InMemoryBroadcast
Appears 🍞 (#28)
- fa3cb1a Wrap
InMemoryBroadcast
subject inSerializedSubject
(#28) - a3ac7a0 Add
InMemoryBroadcast
implementation
Development Improvements
- 8426e23 Suppress IntelliJ's duplicate code intention for SSF test cases
Resources
See the RxBroadcast API Javadoc
RxBroadcast 1.0.0
Features
- Add
UdpBroadcast
class for broadcasting events using User Datagram Protocol (UDP) - Add
BasicOrder<T>
, providing no event ordering guarantees
Example
Quick example, using the broadcast address of the local network (IPv4 only):
final InetAddress broadcastAddress = InetAddress.getByName("255.255.255.255");
final int broadcastPort = 12345;
final Broadcast broadcast = new UdpBroadcast<>(
new DatagramSocket(broadcastPort), broadcastAddress, broadcastPort, new BasicOrder<>());
// ...
broadcast.valuesOfType(Foo.class).subscribe(/* ??? */);
// ...
broadcast.send(new Foo()).subscribe();
Resources
See also: