Skip to content

Releases

30.1.1

Choose a tag to compare

@cpovirk cpovirk released this 19 Mar 16:23

Maven

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

Jar files

Guava requires one runtime dependency, which you can download here:

Javadoc

JDiff

Changelog

  • Increased the aggressiveness of Guava 30.1's warning log message for running guava-android under a Java 7 VM. (Android VMs are unaffected.) If the warning itself causes you trouble, you can eliminate it by silencing the logger for com.google.common.base.Preconditions (which is used only for this warning). This warning prepares for removing support for Java 7 in 2021. Please report any problems. We have tried to make the warning as safe as possible, but anytime a common library logs, especially as aggressively as we do in this new release, there is the potential for NullPointerException or even deadlock. (To be clear, Guava will not log under Java 8 or Android, but it will under Java 7.) (00c25e9)
  • cache: Fixed compatibility between asMap().compute(...) and a load. (42bf4f4)
  • cache: Added @CheckReturnValue to some APIs. (a5ef129)
  • collect: Added @DoNotCall to the mutator methods on immutable types (6ae9532)
  • hash: Removed @Beta from HashCode. (2c9f161)
  • io: Removed @Beta from CountingOutputStream. (d394bac)

30.1

Choose a tag to compare

@cpovirk cpovirk released this 14 Dec 17:01

Maven

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

Javadoc

JDiff

Changelog

  • If you use guava-android in an Android project (as opposed to from a Java VM), you will need to enable desugaring of Java 8 language features if you have not already done so. (And if you are releasing an Android library, then anyone who uses that library will also have to enable desugaring.) We expect for nearly all Android projects to have already enabled desugaring. But if this causes problems for you, please let us know on issue #5358. The purpose of this change is to detect potential problems for users now so that we can plan to use Java 8 language features in our implementation later this year.
  • Introduced a warning log message when running guava-android under a Java 7 VM. (Android VMs are unaffected, aside from the need to use desugaring, described in the previous bullet.) This warning is not guaranteed to be logged when running under Java 7, so please don't rely on it as your only warning about future problems. If the warning itself causes you trouble, you can eliminate it by silencing the logger for com.google.common.base.MoreObjects$ToStringHelper (which is used only for this warning). This warning prepares for removing support for Java 7 in 2021. Please report any problems. We have tried to make the warning as safe as possible, but anytime a common library logs, there is the potential for NullPointerException or even deadlock. (To be clear, Guava will not log under Java 8 or Android, but it may log under Java 7.) (dc52e6e)
    • Note that we subsequently made this warning more aggressive in Guava 30.1.1, including changing the logger it uses to com.google.common.base.Preconditions.
  • base: Deprecated StandardSystemProperty.JAVA_EXT_DIRS. We do not plan to remove the API, but note that, under recent versions of Java, that property always has a value of null. (38abf07)
  • net: Added HttpHeaders constants for Origin-Isolation and X-Request-ID. (a48fb4f, 8319d20)
  • reflect: Added ClassInfo.isTopLevel(). (4106272)
  • util.concurrent: Added ClosingFuture.submitAsync(AsyncClosingCallable). (c5e2d8d)

30.0

Choose a tag to compare

@cpovirk cpovirk released this 16 Oct 21:49

Maven

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

Javadoc

JDiff

Changelog

  • Guava types can no longer be sent over GWT-RPC. Even the earlier, temporary way to reenable support (guava.gwt.emergency_reenable_rpc) no longer has an effect. (0cb89dd)
  • cache: Fixed memory leak in LocalCache under j2objc. (5e519d9)
  • collect: Added two-element min and max methods to Comparators. (958186c)
  • collect: Removed @Beta from Multimaps.toMultimap. (b6b4dc4)
  • collect: Made the set returned by ImmutableMap<K, V>.keySet() serializable as long as K is serializable, even if V is not (and similarly for values()). (f5a69c3)
  • collect: Fixed bug in powerSet.equals(otherPowerSet) would erroneously return false if the two power sets' underlying sets were equal but had a different iteration order. (215b1f0)
  • collect: Eliminated j2objc retain-cycle in SingletonImmutableBiMap. (0ad38b8)
  • eventbus: Prevented @Subscribe from being applied to a method that takes a primitive, as that will never be called. (554546c)
  • graph: Made Traverser.breadthFirst() lazier, and optimized Traverser more generally. (32f2d77, b5210ca)
  • graph: Added @DoNotMock to Traverser. (6410f18)
  • io: Deprecated Files.createTempDir(). (fec0dbc) (CVE-2020-8908; continuing discussion in #4011)
  • io: Upgraded ByteStreams.copy(InputStream, OutputStream) to use the faster FileChannel if possible. (a1e9a0b) [update: My mistake: This was rolled back, so it did not make 30.0.]
  • math: Added roundToDouble to BigDecimalMath, BigIntegerMath, and LongMath. (bee4f3c, 2b5c096, 633abf2)
  • net: Added MediaType constants for several font/ types. (571cf66)
  • net: Added HttpHeaders constants for Cross-Origin-Embedder-Policy(-Report-Only)?. (c3bf731)
  • testing: Made EqualsTester test that non-String objects are not equal to their String representations. (c9570ea)
  • util.concurrent: Added ClosingFuture. (52e048e)
  • util.concurrent: Removed the deprecated 1-arg ServiceManager.addListener(Listener). Use the 2-arg addListener(Listener, Executor) overload, setting the executor to directExecutor() for equivalent behavior. (dfb0001)
  • util.concurrent: Changed AbstractFuture.toString() to no longer include the toString() of the result. (2ebf27f)
  • util.concurrent: Added awaitTerminationUninterruptibly. (f07b954)

29.0

Choose a tag to compare

@cpovirk cpovirk released this 13 Apr 22:03

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)

28.2

Choose a tag to compare

@cpovirk cpovirk released this 27 Dec 14:02

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

28.1

Choose a tag to compare

@cgdecker cgdecker released this 28 Aug 23:39

Maven

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

Javadoc

JDiff

Changelog

  • collect: Added RangeMap.merge, analogous to Map.merge. (687252d)
  • collect: Fixed a bug in ImmutableSet.Builder that could lead to infinite loops when building multiple sets from the same builder. (0007cb2)
  • io: Fixed an issue where the InputStream returned by BaseEncoding.decodingStream(Reader) could fail to throw DecodingException while decoding an invalid string. (ddd4a49)
  • net: Added MediaType for "image/heif" and "image/jp2" (508696a)
  • net: Added Upgrade-Insecure-Requests header to HttpHeaders. (6a8b716)
  • concurrent: Fixed potential memory leak in Futures.whenAllSucceed/whenAllComplete (494834b)

28.0

Choose a tag to compare

@cgdecker cgdecker released this 12 Jun 00:16

Maven

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

Javadoc

JDiff

Changelog

  • collect: Added Duration-based overloads to some Queues methods. (21d06cf)
  • net: Added MediaType for "application/geo+json". (36cd5cf)
  • net: Added a number of constants to HttpHeaders.
  • concurrent: Removed deprecated CheckedFuture and related utilities. (3dd22fe)
  • concurrent: Added Duration-based overloads to many methods.
  • concurrent: Removed @Beta from setFuture. (5ec1360)
  • concurrent: Added deprecated FluentFuture.from(FluentFuture) to point out redundant code. (f9f2807)
  • graph: Added GraphBuilder.immutable(),ValueGraphBuilder.immutable() and NetworkBuilder.immutable() for building immutable graphs in a fluent way.
  • J2ObjC: Fixed crashes from use of ImmutableMap.entrySet(). (74fc49f)

27.1

Choose a tag to compare

@cgdecker cgdecker released this 08 Mar 20:30

Maven

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

Javadoc

JDiff

Changelog

  • Removed GWT emulations that are no longer needed as of GWT 2.8.2. This means that GWT projects that use this version of Guava must use GWT 2.8.2 or higher. (5f35072)
  • Created a BOM for Guava (new guava-bom artifact). (0e59641)
  • Removed @Beta from a number of frequently used APIs. (6242bdd)
  • net: Added Sec-Fetch headers to HttpHeaders. (673b243)
  • net: Added SourceMap header to HttpHeaders (a99c15f)
  • net: Added MediaType for "application/jose" and "application/jose+json". (d416e04)
  • graph: Added overloads to methods accepting pairs of nodes to also accept EndpointPair; changed behavior of *Graph.edges().contains() to allow undirected graphs to accept ordered EndpointPairs. (af3ee1c)

27.0.1

Choose a tag to compare

@cgdecker cgdecker released this 19 Nov 19:52

Maven

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

Javadoc

JDiff

Changelog

  • Fixes an issue where classes that should only be included in failureaccess (Guava's one dependency) were also being included in the main Guava jar. (4d4a676)
  • Updates the version of failureaccess that Guava depends on to 1.0.1, which includes OSGi metadata. (7aae5f3)

27.0

Choose a tag to compare

@cgdecker cgdecker released this 18 Oct 18:51

Maven

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

Javadoc

JDiff

Changelog

Important: ListenableFuture is now available as a separate artifact (com.google.guava:listenablefuture:1.0) from the rest of Guava. As part of that change, Guava now has a real (needed at runtime) dependency on com.google.guava:failureaccess:1.0. For more details, see this announcement. (b62d529)

  • collect: Added a gap(Range) method to Range that computes the Range that lies between them. (a9dd709)
  • net: Added HttpHeaders.EARLY_DATA. (e074cf1)
  • net: Added MediaType.WASM_APPLICATION. (0b3eb0f)
  • concurrent: AbstractFuture doesn't expose FluentFuture APIs anymore. (0f8d360)
  • concurrent: Added doCancelStart protected method to AbstractService (27bfe41)
⌂ 换网址