All Versions
153
Latest Version
Avg Release Cycle
24 days
Latest Release
-

Changelog History
Page 1

  • v21.8.0 Changes

    ๐Ÿ†• New Features

    
    * util-stats: add getAllExpressionsWithLabel utility to InMemoryStatsReceiver.
    ``PHAB_ID=D722942``
    
    * util-app: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D714780``
    
    * util-app-lifecycle: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D716444``
    
    * util-codec: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D715114``
    
    * util-hashing: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D718914``
    
    * ๐Ÿ‘• util-lint: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D698954``
    
    * util-registry: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D716019``
    
    * util-thrift: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D715129``
    
    * util-app: Introduce a new `Command` class which provides a `Reader` interface to the output
      of a shell command. ``PHAB_ID=D686134``
    
    * util-core: Experimentally crossbuilds with Scala 3. ``PHAB_ID=D694775``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • util-app: Flags and GlobalFlag now use ClassTag instead of Manifest. PHAB_ID=D714780

    • util-thrift: ThriftCodec now uses ClassTag instead of Manifest. In scala3 Manifest is intended for use by the compiler and should not be used in client code. PHAB_ID=D715129

    • ๐Ÿšš util-core (BREAKING): Remove AbstractSpool. Java users should use Spools static class or the Spool companion object to create instances of Spool. PHAB_ID=D694775

    โš™ Runtime Behavior Changes

    
    * โšก๏ธ util: Update ScalaCheck to version 1.15.4 ``PHAB_ID=D691691``
    
    * util-jackson: `JsonDiff#toSortedString` now includes null-type nodes, so that
      `JsonDiff.Result#toString` shows differences in objects due to such nodes. ``PHAB_ID=D707033``
    
  • v21.6.0 Changes

    ๐Ÿ†• New Features

    
    * util-core: Add `ClasspathResource`, a utility for loading classpath resources as an
      optional `InputStream`. ``PHAB_ID=D687324``
    
    * util-jackson: Add `com.twitter.util.jackson.YAML` for YAML serde operations with a
      default configured `ScalaObjectMapper.` Add more methods to `com.twitter.util.jackson.JSON`
      ``PHAB_ID=D687327``
    
    * util-jackson: Introduce a new library for JSON serialization and deserialization based on the
      Jackson integration in `Finatra <https://twitter.github.io/finatra/user-guide/json/index.html>`__.
    
      This includes a custom case class deserializer which "fails slow" to collect all mapping failures
      for error reporting. This deserializer is also natively integrated with the util-validator library
      to provide for performing case class validations during deserialization. ``PHAB_ID=D664962``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿšš util-stats: Removed MetricSchema trait (CounterSchema, GaugeSchema and HistogramSchema). StatReceiver derived classes use MetricBuilder directly to create counters, gauges and stats. PHAB_ID=D668739

    โš™ Runtime Behavior Changes

    
    * โšก๏ธ util-cache: Update Caffeine cache library to version 2.9.1 ``PHAB_ID=D660908``
    
  • v21.5.0 Changes

    ๐Ÿ†• New Features

    
    * util-validator: Introduce new library for case class validations (akin to Java bean validation)
      which follows the Jakarta Bean Validation specification (https://beanvalidation.org/) by wrapping
      the Hibernate Validator library and thus supports `jakarta.validation.Constraint` annotations and
      validators for annotating and validating fields of Scala case classes. ``PHAB_ID=D638603``
    
    * util-app: Introduce a Java-friendly API `c.t.app.App#runOnExit(Runnable)` and
      `c.t.app.App#runOnExitLast(Runnable)` to allow Java 8 users to call `c.t.app.App#runOnExit`
      and `c.t.app.App#runOnExitLast` with lambda expressions. ``PHAB_ID=D511536``
    
  • v21.4.0 Changes

    โš™ Runtime Behavior Changes

    
    * util-reflect: Memoize `c.t.util.reflect.Types#isCaseClass` computation. ``PHAB_ID=D657748``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿ“‡ util-stats: Added a methods c.t.f.stats.Counter#metadata: Metadata, c.t.f.stats.Stat#metadata: Metadata, and c.t.f.stats.Gauge#metadata: Metadata to make it easier to introspect the constructed metric. In particular, this will enable constructing Expressions based on the full name of the metric. If you don't have access to a concrete Metadata instance (like MetricBuilder) for constructing a Counter, Stat, or Gauge, you can instead supply NoMetadata. PHAB_ID=D653751

    ๐Ÿ†• New Features

    
    * ๐Ÿ“‡ util-stats: Added a `com.twitter.finagle.stats.Metadata` abstraction, that can
      be either many `com.twitter.finagle.stats.Metadata`, a `MetricBuilder`, or a
      `NoMetadata`, which is the null `Metadata`.  This enabled constructing
      metadata for counters that represent multiple counters under the hood.
      ``PHAB_ID=D653751``
    
  • v21.3.0 Changes

    โš™ 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``
    
  • v21.2.0 Changes

    No Changes

  • v21.1.0 Changes

    No Changes

  • v20.12.0 Changes

    ๐Ÿ’ฅ Breaking API Changes

    * ๐Ÿšš util-core: removed `com.twitter.util.Config.` ``PHAB_ID=D580444``
    
    * ๐Ÿšš util-core: removed `com.twitter.util.Future.isDone` method. The semantics of this method
      are surprising in that `Future.exception(throwable).isDone == false`. Replace usages with
      `Future.isDefined` or `Future.poll` ``PHAB_ID=D585700``
    
    * util-stats: Changed `com.twitter.finagle.stats.MethodBuilder#withName`,
      `com.twitter.finagle.stats.MethodBuilder#withRelativeName`,
      `com.twitter.finagle.stats.MethodBuilder#withPercentiles`,
      `com.twitter.finagle.stats.MethodBuilder#counter`, and
      `com.twitter.finagle.stats.MethodBuilder#histogram`, to accept varargs as parameters,
      rather than a `Seq`.  Added a Java-friendly `com.twitter.finagle.stats.MethodBuilder#gauge`.
      ``PHAB_ID=D620425``
    
    ๐Ÿ†• New Features
    
    • util-core: c.t.conversions now includes conversion methods for maps (under MapOps) that were moved from Finatra. PHAB_ID=D578819

    • util-core: c.t.conversions now includes conversion methods for tuples (under TupleOps) that were moved from Finatra. PHAB_ID=D578804

    • util-core: c.t.conversions now includes conversion methods for seqs (under SeqOps) that were moved from Finatra. PHAB_ID=D578605

    • util-core: c.t.conversions now includes conversion methods toOption, and getOrElse under StringOps. PHAB_ID=D578549

    • util-core: c.t.util.Duration now includes fromJava and asJava conversions to java.time.Duration types. PHAB_ID=D571885

    โš™ Runtime Behavior Changes

    
    * util-core: `Activity.apply(Event)` will now propagate registry events to the underlying
      `Event` instead of registering once and deregistering on garbage collection.  This means
      that if the underlying `Event` is "notified" while the derived `Activity` is not actively
      being observed, it will not pick up the notification.  Furthermore, the derived `Activity`
      will revert to the `Activity.Pending` state while it is not under observation. ``PHAB_ID=D574843``
    
    * util-core: `Activity#stabilize` will now propagate registry events to the underlying
      `Activity` instead of registering once and deregistering on garbage collection.  This means
      that if the underlying `Activity` is changed to a new state while the derived `Activity` is not actively
      being observed, it will not update its own state.  The derived `Activity` will maintain its last
      "stable" state when it's next observed, unless the underlying `Activity` was updated to a new "stable"
      state, in which case it will pick that up instead. ``PHAB_ID=D574843``
    
    * util-stats: `c.t.finagle.stats.DenylistStatsReceiver` now includes methods for creating
      `DenyListStatsReceiver` from partial functions. ``PHAB_ID=D576833``
    
    * ๐Ÿ‘ util-core: `c.t.util.FuturePool` now supports exporting the number of its pending tasks via
      `numPendingTasks`. ``PHAB_ID=D583030``
    
  • v20.10.0 Changes

    October 27, 2020

    ๐Ÿ› Bug Fixes

    • ๐Ÿ“‡ util-stat: MetricBuilder now uses a configurable metadataScopeSeparator to align
      more closely with the metrics.json api. Services with an overridden scopeSeparator will
      ๐Ÿ“‡ now see that reflected in metric_metadata.json where previously it was erroneously using
      / in all cases. 7665b9eb
    • ๐Ÿ—„ util-slf4j-api: Better Java interop. Deprecate c.t.util.logging.Loggers as Java users should be
      ๐ŸŒฒ able to use the c.t.util.logging.Logger companion object with less verbosity required.
      26e7874b
  • v20.9.0 Changes

    September 22, 2020

    ๐Ÿ†• New Features

    
    * util-app: `Seq`/`Tuple2`/`Map` flags can now operate on booleans. For example,
      `Flag[Seq[Boolean]]` now works as expected instead of throwing an assert exception (previous
      behaviour). ``PHAB_ID=D549196``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • util-app: Flaggable.mandatory now takes implicit ClassTag[T] as an argument. This is change is source-compatible in Scala but requires Java users to pass argument explicitly via ClassTag$.MODULE$.apply(clazz). PHAB_ID=D542135

    โš™ Runtime Behavior Changes

    
    * util: Bump version of Jackson to 2.11.2. ``PHAB_ID=D538440``