Guava v29.0 Release Notes

Release Date: 2020-04-13 // about 2 months ago
  • Maven

    \<dependency\> \<groupId\>com.google.guava\</groupId\> \<artifactId\>guava\</artifactId\> \<version\>29.0-jre\</version\> \<!-- or, for Android: --\> \<version\>29.0-android\</version\> \</dependency\>
    

    Javadoc

    JDiff

    🔄 Changelog

    • Guava types can no longer be sent over GWT-RPC. To temporarily reenable support, set the guava.gwt.emergency_reenable_rpc system property to true. (5214a10)
      • This is the only breaking change in this release, and it affects only users of the guava-gwt artifact, not people who use only the guava artifact. This release contains no changes that break binary compatibility for any users.
    • 📚 API documentation for Guava classes is now easier to reach. For example, for ImmutableList, visit guava.dev/ImmutableList. Also, more easily access the index at guava.dev/api.
    • collect: Annotated FluentIterable.from(FluentIterable) with @DoNotCall. (b1c77b7)
    • collect: Made ceiling, floor, headSet(E, boolean), and tailSet(E, boolean) methods available in the GWT-emulated ImmutableSortedSet. (7e0fe90, 5f2fbf2)
    • 🏗 graph: Made it possible to set a stable incident edge order by calling the newly added method [Value]Graph.Builder.incidentEdgeOrder(ElementOrder.stable()). (7016402)
    • graph: Added incidentEdgeOrder() to the [Value]Graph interfaces. (cde576e)
    • util.concurrent: Added Duration-based default methods to ListeningScheduledExecutorService. (931e83f)
    • util.concurrent: Added immediateVoidFuture. (9f3bae5)
    • 🚚 util.concurrent: Removed @Beta from Service and related classes. (dc46627)
    • 🗄 util.concurrent: Deprecated the 1-arg overload of ServiceManager.addListener. (86e3620)
    • util.concurrent: Changed the return type of ServiceManager.servicesByState() to ImmutableSetMultimap (but also retained a method with the old signature for binary compatibility). (31999ae)
    • 🔒 util.concurrent: Made it safe to load the AbstractFuture class from a ForkJoinPool thread under a security manager. (6e0c5b5)

Previous changes from v28.2

  • Maven

    \<dependency\> \<groupId\>com.google.guava\</groupId\> \<artifactId\>guava\</artifactId\> \<version\>28.2-jre\</version\> \<!-- or, for Android: --\> \<version\>28.2-android\</version\> \</dependency\>
    

    Javadoc

    JDiff

    🔄 Changelog

    • _ Warning to users of GWT-RPC: _ The first Guava release of 2020 will remove support for GWT-serializing Guava types. To test ahead of time with GWT-RPC support for Guava types disabled, set the guava.gwt.emergency_reenable_rpc system property to false. (Even without the system property enabled, apps will now log warnings when sending Guava types over GWT-RPC.) (08bbf53)
    • base: Added Splitter.splitToStream().
    • concurrent: Added Futures.submit() (c7ef0cc)
    • concurrent: Made platformThreadFactory() and related utilities (mainly *Service) work under Java 11 App Engine, and tweaked other App Engine threading behavior. (e3ee00d)
    • concurrent: Added catch to StackOverflowError in AbstractFuture.toString to prevent long chains of futures from failing toString calls. (a2e6acc)
    • 0️⃣ concurrent: Made ListenableFuture implement Thenable via a default interface method in GWT/j2cl (e0bac74).
    • 🛠 graph: Fixed bug in AbstractNetwork.hasEdgeConnecting() causing it to throw if either endpoint was not in the graph. Originally reported as #3721. (2ee7f9d)
    • 🛠 graph: Fixed data race. (0e94fb5)
    • 👍 math: Added Stream support to Stats and StatsAccumulator. (e2f4eba)
    • math: Added Quantiles compute() methods which return a Map now return a map with entries in the same order in which the indexes were provided. (786c3d8)
    • 👍 net: Added support for scope IDs for IPv6 addresses. (8a7d36a)
    • net: Added toBigInteger and fromIpv4BigInteger/fromIpv6BigInteger to InetAddresses for manipulating InetAddresses as BigIntegers (d7a0b3d)
    • net: Added MediaType constants for application/opensearchdescription+xml (f79c4fe) and MPEG-DASH (67dd062), as well as a constant for the header Cross-Origin-Opener-Policy (4ef2111).
    • net: Made MediaType reject empty type, subtype, and attribute (b080067) and non-ASCII parameter values (2278123). Also, made it serialize empty parameter values to quoted strings (2278123).
    • ➕ Added @DoNotMock to several types. (4eea0f7, add4309)
    • ✂ Removed dependency on animal-sniffer-annotations. (5f37e53)