Releases: google/guava
32.0.1
Maven
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.1-jre</version>
<!-- or, for Android: -->
<version>32.0.1-android</version>
</dependency>Jar files
Guava requires one runtime dependency, which you can download here:
Javadoc
JDiff
Changelog
io: FixedFiles.createTempDirandFileBackedOutputStreamunder Windows, which broke as part of the security fix in release 32.0.0. Sorry for the trouble. (fdbf77d)
32.0.0
Maven
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.0-jre</version>
<!-- or, for Android: -->
<version>32.0.0-android</version>
</dependency>Jar files
Guava requires one runtime dependency, which you can download here:
Javadoc
JDiff
Changelog
Security fixes
- Reimplemented
Files.createTempDirandFileBackedOutputStreamto further address CVE-2020-8908 (#4011) and CVE-2023-2976 (#2575). (feb83a1)
While CVE-2020-8908 was officially closed when we deprecated Files.createTempDir in Guava 30.0, we've heard from users that even recent versions of Guava have been listed as vulnerable in other databases of security vulnerabilities. In response, we've reimplemented the method (and the very rarely used FileBackedOutputStream class, which had a similar issue) to eliminate the insecure behavior entirely. This change could technically affect users in a number of different ways (discussed under "Incompatible changes" below), but in practice, the only problem users are likely to encounter is with Windows. If you are using those APIs under Windows, you should skip 32.0.0 and go straight to 32.0.1 which fixes the problem. (Unfortunately, we didn't think of the Windows problem until after the release. And while we warn that common.io in particular may not work under Windows, we didn't intend to regress support.) Sorry for the trouble.
Incompatible changes
Although this release bumps Guava's major version number, it makes no binary-incompatible changes to the guava artifact.
One change could cause issues for Widows users, and a few other changes could cause issues for users in more usual situations:
- The new implementations of
Files.createTempDirandFileBackedOutputStreamthrow an exception under Windows. This is fixed in 32.0.1. Sorry for the trouble. guava-gwtnow requires GWT 2.10.0.- This release makes a binary-incompatible change to a
@BetaAPI in the separate artifactguava-testlib. Specifically, we changed the return type ofTestingExecutors.sameThreadScheduledExecutortoListeningScheduledExecutorService. The old return type was a package-private class, which caused the Kotlin compiler to produce warnings. (dafaa3e) - This release adds two methods to the Android flavor of Guava:
Invokable.getAnnotatedReturnType()andParameter.getAnnotatedType(). Those methods do not work under an Android VM; we added them only to help our tests of the Android flavor (since we also run those tests under a JRE). Android VMs tolerate such methods as long as the app does not call them or perform reflection on them, and builds tolerate them because of our new Proguard configurations (discussed below). Thus, we expect no impact to most users. However, we could imagine build problems for users who have set up their own build system for the Android flavor of Guava. Please report any problems so that we can judge how safely we might be able to add other methods to the Android flavor in the future, such as APIs that use Java 8 classes likeStream. (b30e73c) - This release removes various APIs from the
guava-gwt. This affects only users of GWT. The APIs we removed areEnums,Sets.complementOf, and theEnum*BiMapclasses'keyType()andvalueType()methods. These changes prepare for the removal of reflective enum-related APIs from J2CL. If one of these changes causes you problems as a GWT user, let us know. (c3a155d, 09db2c2, 3de12be) - The new implementations of
Files.createTempDirandFileBackedOutputStreamare annotated as@J2ObjCIncompatible. If you need to use them under J2ObjC, contact us. (56dc928) - Because the new version of
Files.createTempDirrestricts permissions to the current user, it could break any caller that relies on letting other users access the directory. - The new versions of
Files.createTempDirandFileBackedOutputStreamthrow an exception if they can't create the directory or file securely. Aside from the accidental Windows bug discussed above, this is possible only under Android Ice Cream Sandwich, a very old version of Android that is the oldest one we test Guava with.
Other changes
- Removed
@Betafrom almost all APIs. For details, see the bottom of the release notes. At this point, it's probably simpler to look at a list of APIs that still are@Beta, such as this list forguava-jre. Most of the remaining@BetaAPIs are ingraphandhash. - Enhanced the Guava jar to include Proguard configurations that are picked up automatically by the Android Gradle Plugin. This should help with warnings that were promoted to errors in Android Gradle Plugin 8.x. (aeba1e1)
- Enhanced the Guava jar to include information about method parameters in its class files. If you use static analyzers that look at method-parameter names, you may see new warnings or errors if they are now able to detect mismatches. But mostly, you may see better tooltips and autocompletion in IDEs. (59d174c)
- Improved nullness annotations on a few classes.
- Modified classes with "serial proxies" to declare exception-throwing
readObjectmethods, in accordance with best practice. (e62d6a0) collect: FixedMaps.newHashMapWithExpectedSizeto stop allocating maps that were larger than they needed to be. (6ad621e)collect: Made various APIs work J2CL:Maps.immutableEnumMap+toImmutableEnumMap,EnumMultiset,CollectorTester. Previously, the APIs were present but failed at runtime. (b62c88e, 23ff918, 852a7d3)collect: Optimized memory usage forInternerandMapMaker. (a2e8f3c)graph: Changed directed graphs to reject attempts to add undirected edges. (76260d9)io: AddedBaseEncoding.ignoreCase()to support case-insensitive decoding. (9c1e5de)net: AddedHttpHeadersconstants:net: Added theMediaTypeconstant for JWT. (f942fd2)primitives: Addedrotate()for arrays of all primitive types. (cd338fa, 6e9057d)util.concurrent: ChangedAbstractFutureto runinterruptTask()just beforeafterDone(). Until this change, it ran slightly earlier than that: We used to run it before unblocking any pendingget()calls, and now we run it after. (b337be6)util.concurrent: Fixed some cases in which we could catchInterruptedExceptionbut fail to restore the interrupt bit. (8f0350a)
@Beta removal list
base:Utf8(211907c)base: more APIs (b0cc461)collect:Multimaps.asMap(...)(df0081f)collect:FluentIterableAPIs (73b2f7b)collect:Forwarding[Foo]APIs (9760dbc)collect:ImmutableFoo.Builder.builderWithExpectedSize(...),orderEntriesByValue(...), andEntry-related APIs (61be35c)collect:RangeMap,RangeSet, and friends (fe12c81)collect: more APIs (98820c7, e5e0f66)io:ByteStreams(4897930)io: more APIs (a589256)math: various APIs (912815e)primitives:Longs.tryParse(...)and friends (b3d4856)primitives:UnsignedLongs(b240e8c)primitives: more APIs (fcec25f, ab4302a)reflect:Invokableand some methods inTypeToken(a195f7d)reflect:Parameter(exceptgetAnnotatedType()inguava-android) (b561eb1)testing: various APIs (b331769, 74ad9b8)util.concurrent:FluentFuture(b9a2d58)util.concurrent:Futures(15a0c9f)util.concurrent:Striped(ba8ad69)util.concurrent: variousMoreExecutorsAPIs (a3571b4)util.concurrent: more APIs (bbaf76a)
31.1
Maven
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
<!-- or, for Android: -->
<version>31.1-android</version>
</dependency>Jar files
Guava requires one runtime dependency, which you can download here:
Javadoc
JDiff
Changelog
base: Deprecated theThrowablesmethodslazyStackTraceandlazyStackTraceIsLazy. They are no longer useful on any current platform. (6ebd7d8)collect: Added a new methodImmutableMap.Builder.buildKeepingLast(), which keeps the last value for any given key rather than throwing an exception when a key appears more than once. (68500b2)collect: As a side-effect of thebuildKeepingLast()change, the idiomImmutableList.copyOf(Maps.transformValues(map, function))may produce different results iffunctionhas side-effects. (This is not recommended.) (68500b2)hash: AddedHashing.fingerprint2011(). (13f703c)io: ChangedByteStreams.nullOutputStream()to follow the contract ofOutputStream.writeby throwing an exception if the range of bytes is out of bounds. (1cd85d0)net: Added@CheckReturnValueto the package (with a few exceptions). (a0e2577)net: AddedHttpHeadersconstant forAccess-Control-Allow-Private-Network. (6dabbdf)util.concurrent: Added accumulate/update methods forAtomicDoubleandAtomicDoubleArray. (2d875d3)
APIs promoted from @Beta
base:ThrowablesmethodsgetCausalChainandgetCauseAs(dd462af)collect:StreamsmethodsmapWithIndexandfindLast(8079a29)collect: the remaining methods inComparators:min,max,lexicographical,emptiesFirst,emptiesLast,isInOrder,isInStrictOrder(a3e411c)escape: various APIs (468c68a)io: various APIs inFiles(828d9ee)net: various APIs (261ac7a)reflect: various APIs (9f6a384)testlib: various APIs (93a8f02)util.concurrent:AsyncCallable,ListenableScheduledFuture, andClosingFuture(8b4ad17)util.concurrent:ExecutionSequencer,MoreExecutors.newSequentialExecutor, andMonitor(189d668)util.concurrent:Futuresmethods:submit,submitAsync,scheduleAsync,nonCancellationPropagating,inCompletionOrder(e015172)util.concurrent:Uninterruptibles:awaitTerminationUninterruptiblyand theDurationoverloads in the class (825de9a)util.concurrent: theFluentFuturetype, its factory methods, andaddCallback(9c7e13b)
31.0.1
Maven
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
<!-- or, for Android: -->
<version>31.0.1-android</version>
</dependency>Jar files
Guava requires one runtime dependency, which you can download here:
Javadoc
JDiff
Changelog
- Fixed GWT compilation failure introduced in release 31.0. (0ad6d6d)
31.0
Maven
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0-jre</version>
<!-- or, for Android: -->
<version>31.0-android</version>
</dependency>Jar files
Guava requires one runtime dependency, which you can download here:
Javadoc
JDiff
Changelog
Known issue (fixed in patch release 31.0.1): guava-gwt breaks GWT compilation
Other Guava artifacts aren't affected, only users of GWT. (If you are using GWT, you would know it.)
Sorry for missing this during release: It was a known issue, and we had a partial workaround in place, but I forgot to include the problem in the list of release blockers.
To pick up the fix, upgrade to 31.0.1.
Main changes
- Changed
guava-androidto generate Java 8 bytecode. We still restrict ourselves to using APIs available on Ice Cream Sandwich. So, as long as you have enabled Java 8 language features for your Android build, this change should have no effect on Android projects. This change does drop support for Java 7 JREs, as announced last year. - Annotated Guava much more thoroughly for nullness. For details, see the bottom of the release notes.
base: ChangedFunctions.forSupplierandPredicates.instanceOfto accept an additional type argument to specify the input type for the returnedFunction/Predicate. The flexibility we're adding should typically not be necessary if users follow the PECS principle, but it can be useful in some cases, particularly around nullness analysis. Note that this change may require updates to callers' source code (to specify an additional type argument). Still, it maintains binary compatibility. (75110e9)collect: AddedImmutableMap.ofEntries, likeMap.ofEntriesbut forImmutableMap. (cd3b419)collect: Added overloads ofImmutableMap.of,ImmutableBiMap.of, andImmutableSortedMap.offor up to 10 entries. (d5c30e3)collect: RenamedImmutableMap.Builder.build()tobuildOrThrow(). The existingbuild()method will continue to exist but may be deprecated, and the new name should be used in new code. (4bbe12c)collect: Removed@BetafromInternerandInterners. (cf31f3a)collect: Added@InlineMetoStreams.stream(Optional)and friends. (a176cd6)graph: MadeEndpointPair.adjacentNoderequire anNinstead of accept anyObject. (b0be21d)hash: Removed@BetafromHashFunction. (e1cc195)hash: Deprecated buggymurmur3_32, and introducedmurmur3_32_fixed. (a36f08f)io: ChangedCharStreams.asWriter(appendable).write(string[, ...])to reject a nullstring. (50e7ddd)io: Fixed a bug inFileBackedOutputStreamcleanup: If writing to the temp file fails, we now delete it before propagating the exception. (6e054ce)net: ChangedHostAndPort.fromStringto reject port numbers spelled with non-ASCII digits. (53fd1d7)net: AddedHttpHeadersconstants forX-Device-Ip,X-Device-Referer,X-Device-Accept-Language,X-Device-Requested-With,Sec-CH-Prefers-Color-Scheme,Sec-CH-UA-Bitness, andKeep-Alive. (da375be, b23b277, 281edd4, 9c88f9a)primitives: Fixed a rounding bug inUnsignedLong.doubleValue(). (e61cf2e)reflect: Changed the type hierarchy ofInvokable:Invokableno longer inherits fromAccessibleObjectorGenericDeclaration, though it continues to define instance methods with the same signatures as the formerly inherited ones. This is technically a breaking API change to this@BetaAPI. We think it very unlikely that anyone is affected in practice. (12af215)testlib: EnhancedNullPointerTesterto allow a parameter of type<T extends @Nullable Object>to benull. (e856722)testlib: Fixed bug affecting derived tests of custom collection test suites: ThesetUpandtearDownmethods are now copied to derived test suites. (c7d9fef)util.concurrent: AddedServiceManager.startupDurations(). (c95ba5a)util.concurrent: Removed the GWT-only overloads ofFutures.catchingandcatchingAsyncthat let callers omit theExecutor. This matches a change made years ago to the non-GWT API. If this breaks your GWT client code compilation, you can fix it by passing an additional parameter,MoreExecutors.directExecutor()(0ff2f78)
Nullness annotations
Previously, we annotated all parameters that could be null, and we did not annotate elsewhere reliably. Now:
- We consistently annotate return types for nullness.
- We annotate "components" of types, like the element type of an array or list and the bound of a type parameter. (To take advantage, Kotlin users can set
-Xtype-enhancement-improvements-strict-mode.)- However, we don't yet annotate any such locations as non-nullable.
- In our annotations (including on parameters), we distinguish between
@Nullable T("always nullable, regardless of the type argument used forT") andT("nullable only if the type argument is"). - We have temporarily increased our usage of jsr305, which we will ultimately phase out.
- We use
@CheckForNullinstead of a type-annotation@Nullablewherever possible. This makes the nullness information available to more Kotlin users. - We've introduced a custom jsr305 annotation that informs Kotlin that unannotated return types are non-null (just like our usage of
@ParametersAreNonnullByDefaultalready did for parameter types). (To take advantage, Kotlin users can set-Xjsr305=strict.)
- We use
(Known issue: We are missing annotations on the TypeToInstanceMap classes. We'll fix this in a future release.)
By providing additional nullness information, this release may result in more errors or warnings from any nullness analyzers you might use. If so, you may need to fix or suppress them as usual. For advice, see the documentation for the analyzer you're using, such as that for the Checker Framework or for Kotlin.
If you use NullAway with the AnnotatedPackages flag set to cover com.google.common, you may see not only additional legitimate errors but also some incorrect errors because Guava no longer uses @Nullable as frequently on type-variable usages. The NullAway developers have suggested a workaround, and they are planning for NullAway 0.9.9 to treat our type-variable usages differently. However, even after 0.9.9, NullAway users are likely to see some incorrect errors if they keep com.google.common in their AnnotatedPackages. A fuller solution will require Guava and tools to adopt an annotation model that is more suited to generics. For updates on that, follow #2960.
We will be using more annotations to provide more nullness information in the future.
30.1.1
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-androidunder a Java 7 VM. (Android VMs are unaffected.) If the warning itself causes you trouble, you can eliminate it by silencing the logger forcom.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 forNullPointerExceptionor even deadlock. (To be clear, Guava will not log under Java 8 or Android, but it will under Java 7.) (00c25e9) cache: Fixed compatibility betweenasMap().compute(...)and a load. (42bf4f4)cache: Added@CheckReturnValueto some APIs. (a5ef129)collect: Added@DoNotCallto the mutator methods on immutable types (6ae9532)hash: Removed@BetafromHashCode. (2c9f161)io: Removed@BetafromCountingOutputStream. (d394bac)
30.1
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-androidunder 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 forcom.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 forNullPointerExceptionor 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.
- Note that we subsequently made this warning more aggressive in Guava 30.1.1, including changing the logger it uses to
base: DeprecatedStandardSystemProperty.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 ofnull. (38abf07)net: AddedHttpHeadersconstants forOrigin-IsolationandX-Request-ID. (a48fb4f, 8319d20)reflect: AddedClassInfo.isTopLevel(). (4106272)util.concurrent: AddedClosingFuture.submitAsync(AsyncClosingCallable). (c5e2d8d)
30.0
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 inLocalCacheunder j2objc. (5e519d9)collect: Added two-elementminandmaxmethods toComparators. (958186c)collect: Removed@BetafromMultimaps.toMultimap. (b6b4dc4)collect: Made the set returned byImmutableMap<K, V>.keySet()serializable as long asKis serializable, even ifVis not (and similarly forvalues()). (f5a69c3)collect: Fixed bug inpowerSet.equals(otherPowerSet)would erroneously returnfalseif the two power sets' underlying sets were equal but had a different iteration order. (215b1f0)collect: Eliminated j2objc retain-cycle inSingletonImmutableBiMap. (0ad38b8)eventbus: Prevented@Subscribefrom being applied to a method that takes a primitive, as that will never be called. (554546c)graph: MadeTraverser.breadthFirst()lazier, and optimizedTraversermore generally. (32f2d77, b5210ca)graph: Added@DoNotMocktoTraverser. (6410f18)io: DeprecatedFiles.createTempDir(). (fec0dbc) (CVE-2020-8908; continuing discussion in #4011)[update: My mistake: This was rolled back, so it did not make 30.0.]io: UpgradedByteStreams.copy(InputStream, OutputStream)to use the fasterFileChannelif possible. (a1e9a0b)math: AddedroundToDoubletoBigDecimalMath,BigIntegerMath, andLongMath. (bee4f3c, 2b5c096, 633abf2)net: AddedMediaTypeconstants for several font/ types. (571cf66)net: AddedHttpHeadersconstants forCross-Origin-Embedder-Policy(-Report-Only)?. (c3bf731)testing: MadeEqualsTestertest that non-Stringobjects are not equal to theirStringrepresentations. (c9570ea)util.concurrent: AddedClosingFuture. (52e048e)util.concurrent: Removed the deprecated 1-argServiceManager.addListener(Listener). Use the 2-argaddListener(Listener, Executor)overload, setting the executor todirectExecutor()for equivalent behavior. (dfb0001)util.concurrent: ChangedAbstractFuture.toString()to no longer include thetoString()of the result. (2ebf27f)util.concurrent: AddedawaitTerminationUninterruptibly. (f07b954)
29.0
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_rpcsystem property totrue. (5214a10)- This is the only breaking change in this release, and it affects only users of the
guava-gwtartifact, not people who use only theguavaartifact. This release contains no changes that break binary compatibility for any users.
- This is the only breaking change in this release, and it affects only users of the
- 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: AnnotatedFluentIterable.from(FluentIterable)with@DoNotCall. (b1c77b7)collect: Madeceiling,floor,headSet(E, boolean), andtailSet(E, boolean)methods available in the GWT-emulatedImmutableSortedSet. (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: AddedincidentEdgeOrder()to the[Value]Graphinterfaces. (cde576e)util.concurrent: AddedDuration-baseddefaultmethods toListeningScheduledExecutorService. (931e83f)util.concurrent: AddedimmediateVoidFuture. (9f3bae5)util.concurrent: Removed@BetafromServiceand related classes. (dc46627)util.concurrent: Deprecated the 1-arg overload ofServiceManager.addListener. (86e3620)util.concurrent: Changed the return type ofServiceManager.servicesByState()toImmutableSetMultimap(but also retained a method with the old signature for binary compatibility). (31999ae)util.concurrent: Made it safe to load theAbstractFutureclass from aForkJoinPoolthread under a security manager. (6e0c5b5)
28.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_rpcsystem property tofalse. (Even without the system property enabled, apps will now log warnings when sending Guava types over GWT-RPC.) (08bbf53) base: AddedSplitter.splitToStream().concurrent: AddedFutures.submit()(c7ef0cc)concurrent: MadeplatformThreadFactory()and related utilities (mainly*Service) work under Java 11 App Engine, and tweaked other App Engine threading behavior. (e3ee00d)concurrent: AddedcatchtoStackOverflowErrorinAbstractFuture.toStringto prevent long chains of futures from failingtoStringcalls. (a2e6acc)concurrent: MadeListenableFutureimplementThenablevia a default interface method in GWT/j2cl (e0bac74).graph: Fixed bug inAbstractNetwork.hasEdgeConnecting()causing it to throw if either endpoint was not in the graph. Originally reported as #3721. (2ee7f9d)graph: Fixed data race. (0e94fb5)math: AddedStreamsupport toStatsandStatsAccumulator. (e2f4eba)math: AddedQuantilescompute()methods which return aMapnow 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: AddedtoBigIntegerandfromIpv4BigInteger/fromIpv6BigIntegertoInetAddressesfor manipulatingInetAddressesasBigIntegers(d7a0b3d)net: AddedMediaTypeconstants for application/opensearchdescription+xml (f79c4fe) and MPEG-DASH (67dd062), as well as a constant for the header Cross-Origin-Opener-Policy (4ef2111).net: MadeMediaTypereject empty type, subtype, and attribute (b080067) and non-ASCII parameter values (2278123). Also, made it serialize empty parameter values to quoted strings (2278123).- Added
@DoNotMockto several types. (4eea0f7, add4309) - Removed dependency on
animal-sniffer-annotations. (5f37e53)