Twitter Util v21.3.0 Release Notes
-
โ Runtime Behavior Changes
* โช util: Revert to scala version 2.12.12 due to https://github.com/scoverage/sbt-scoverage/issues/319 ``PHAB_ID=D635917`` * util: Bump scala version to 2.12.13 ``PHAB_ID=D632567`` ๐ฅ Breaking API Changes ~~~~~~~~~~~~~~~~~~~~ * util: Rename `c.t.util.reflect.Annotations#annotationEquals` to `c.t.util.reflect.Annotations#equals` and `c.t.util.reflect.Types.eq` to `c.t.util.reflect.Types.equals`. ``PHAB_ID=D640386`` * ๐ util: Builds are now only supported for Scala 2.12+ ``PHAB_ID=D631091`` * ๐ util-reflect: Remove deprecated `c.t.util.reflect.Proxy`. There is no library replacement. ``PHAB_ID=D630143`` * ๐ util-security: Renamed `com.twitter.util.security.PemFile` to `c.t.u.security.PemBytes`, and changed its constructor to accept a string and a name. The main change here is that we assume the PEM-encoded text has been fully buffered. To migrate, please use the helper method on the companion object, `PemBytes#fromFile`. Note that unlike before with construction, we read from the file, so it's possible for it to throw. ``PHAB_ID=D641088`` * ๐ util-security: Make KeyManager, TrustManager Factory helper methods public. The main change here is that we expose util methods that are used to generate TrustManagerFactory, KeyManagerFactory inside `c.t.u.security` for public usage. ``PHAB_ID=D644502`` ๐ New Features ~~~~~~~~~~~~ * util-reflect: Add `c.t.util.reflect.Annotations` a utility for finding annotations on a class and `c.t.util.reflect.Classes` which has a utility for obtaining the `simpleName` of a given class across JDK versions and while handling mangled names (those with non-supported Java identifier characters). Also add utilities to determine if a given class is a case class in `c.t.util.reflect.Types`. ``PHAB_ID=D638655`` * util-reflect: Add `c.t.util.reflect.Types`, a utility for some limited reflection based operations. ``PHAB_ID=D631819`` * ๐ util-core: `c.t.io` now supports creating and deconstructing unsigned 128-bit buffers in Buf. ``PHAB_ID=D606905`` * util-core: `c.t.io.ProxyByteReader` and `c.t.io.ProxyByteWriter` are now public. They are useful for wrapping an existing `ByteReader` or `ByteWriter` and extending its functionality without modifying the underlying instance. ``PHAB_ID=D622705`` * ๐ util-core: Provided `c.t.u.security.X509CertificateDeserializer` to make it possible to directly deserialize an `X509Certificate` even if you don't have a file on disk. Also provided `c.t.u.security.X509TrustManagerFactory#buildTrustManager` to make it possible to directly construct an `X509TrustManager` with an `X509Certificate` instead of passing in a `File`. ``PHAB_ID=D641088``