Skip to content

Releases: RxBroadcast/RxBroadcast

RxBroadcast 2.0

07 Nov 23:24
Compare
Choose a tag to compare

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 to rxbroadcast (ced55f2)

  • BasicOrder has been renamed to NoOrder (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

Resources

As always:

  • The rxbroadcast.webstite

  • 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

19 Aug 00:35
Compare
Choose a tag to compare

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

Development Improvements

@NotNull annotations

  • 5b9760a Annotate Timestamped#compareTo parameter as NotNull
  • 97acf8e Annotate Sender#compareTo parameter as NotNull
  • 478c24a Add NotNull annotation to Broadcast#send return type
  • 1d1aff2 Annotate DaemonThreadFactory#newThread as NotNull

Changes that don't matter to anyone

  • c554442 Replace computeIfAbsent with putIfAbsent to avoid lambda

Resources

As always:

RxBroadcast 1.2.0

07 Jun 23:21
Compare
Choose a tag to compare

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

  • Serialization is now adaptable (see #67, #69, and #72)
  • IPv6 seems to work (#75)

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

Resources

As always, see:

RxBroadcast 1.1.3

11 May 21:49
Compare
Choose a tag to compare

v1.1.3 (2017-05-11)

This version updates the RxJava dependency version

Dependency Updates

Development Improvements

Resources

As always, see:

RxBroadcast 1.1.2

11 May 22:31
Compare
Choose a tag to compare

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

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

11 May 23:10
Compare
Choose a tag to compare

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 for Timestamped
  • 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

11 May 23:25
Compare
Choose a tag to compare

v1.1.0 (2017-01-12)

This version introduces a in-memory broadcast implementation

A Wild InMemoryBroadcast Appears 🍞 (#28)

  • fa3cb1a Wrap InMemoryBroadcast subject in SerializedSubject (#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

13 Jan 23:06
Compare
Choose a tag to compare

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: