All Versions
Latest Version
Avg Release Cycle
25 days
Latest Release
6 days ago

Changelog History
Page 1

  • v19.9.0

    September 10, 2019

    ⚙ Runtime Behavior Changes

    • 👍 util-app: Better handling of exceptions when awaiting on the to close at
      the end of the main function. We Await.ready on this as the last step of
      App#nonExitingMain which can potentially throw a TimeoutException which was previously
      ⚡️ unhandled. We have updated the logic to ensure that TimeoutExceptions are handled accordingly.
    • ⬆️ util: Upgrade to Scala Collections Compat 2.1.2. d4117162

    💥 Breaking API Changes

    • util-core: BoundedStack is unused and really old code. Delete it. eeb0e947
    • 🌲 util-logging: com.twitter.logging.ScribeHandler and com.twitter.logging.ScribeHandlers have
      🚚 been removed. Users are encouraged to use slf4j for logging. However, if a util-logging integrated
      🏗 ScribeHandler is still required, users can either build their own Finagle-based scribe client as
      in ScribeRawZipkinTracer in finagle-zipkin-scribe, or copy the old ScribeHandler
      implementation directly into their code. f4e56599
  • v19.8.1

    August 15, 2019

    🆕 New Features

    • 🏗 util: Enables cross-build for 2.13.0. d5d20cc3

    Java Compatibility

    util-stats: In c.t.finagle.stats.AbstractStatsReceiver, the counter, stat and
    addGauge become final, override counterImpl, statImpl and addGaugeImpl instead.

    c.t.util.Closable.sequence become available to java for passing varargs. d5d20cc3

    c.t.finagle.stats.StatsReceiver.provideGauge and addGauge become available to java for
    passing varags. d5d20cc3

    💥 Breaking API Changes

    util-core: (not breaking) c.t.util.Future.join and c.t.util.Future.collect now take
    Iterable[Future[A]] other than Seq.d5d20cc3

    ⏪ util-core: Revert the change above, in c.t.util.Future, collect, collectToTry and join
    take scala.collection.Seq[Future[A]]. e451e3b2

    🏗 util-core: com.twitter.util.Event#build now builds a Seq of events. Event#buildAny builds
    against any collection of events. d5d20cc3

  • v19.8.0

    August 06, 2019

    💥 Breaking API Changes

    • 🌲 util-logging: The namespace forwarders for Level and Policy in com.twitter.logging.config
      ⚡️ have been removed. Code should be updated to use com.twitter.logging.Level and
      🌲 com.twitter.logging.Policy where necessary. Users are encouraged to use 'util-slf4j-api' though
      where possible. 6ab4aeac
    • 🗄 util-logging: The deprecated com.twitter.logging.config.LoggerConfig and associated
      ⚡️ classes have been removed. These have been deprecated since 2012. Code should be updated
      🌲 to use com.twitter.logging.LoggerFactory where necessary. Users are encouraged to use
      'util-slf4j-api' though where possible. 5d43773e

    ⚙ Runtime Behavior Changes

    • ⬆️ util: Upgrade to Jackson 2.9.9. 0f0bcd44
  • v19.7.0

    July 18, 2019

    💥 Breaking API Changes

    * ⏱ util-core: Removed deprecated `c.t.concurrent.Scheduler` methods `usrTime`,
      `cpuTime`, and `wallTime`. These were deprecated in 2015 and have no
      replacement. ``PHAB_ID=D330386``
    * 🚚 util-core: Removed deprecated `com.twitter.logging.config` classes `SyslogFormatterConfig`,
      `ThrottledHandlerConfig`, `SyslogHandlerConfig`. These were deprecated in 2012 and have
      no replacement. Users are encouraged to use 'util-slf4j-api' where possible. ``PHAB_ID=D339563``
    ⚙ Runtime Behavior Changes
    • ⏱ util-core: Remove experimental toggle com.twitter.util.BypassScheduler used for speeding up (transformTry). Now, we always run map operations immediately instead of via the Scheduler, where they may be queued and potentially reordered. PHAB_ID=D338487
  • v19.6.0

    June 19, 2019

    🐛 Bug Fixes

    * 🛠 util-core: Fixed the behavior in `` where reading from `Reader#empty` fails to return
      a `ReaderDiscardedException` after it's discarded. ``PHAB_ID=D325465``
    ⚙ Runtime Behavior Changes
    • util-core: Use Local at callback creation for Future's interrupt handler rather than raiser's locals so that it is consistent with other callbacks. This functionality is currently disabled and can be enabled by a toggle (com.twitter.util.UseLocalInInterruptible) by setting it to 1.0 if you would like to try it out. PHAB_ID=D324315

    • ⏱ util-core: Remove experimental toggle com.twitter.util.BypassScheduler used for speeding up (transformTry). Now, we always run map operations immediately instead of via the Scheduler, where they may be queued and potentially reordered. PHAB_ID=D338487

  • v19.5.1

    May 21, 2019

    No Changes

  • v19.5.0

    May 17, 2019

    🆕 New Features

    • ⚠ util-app: Track the registration of duplicated Flag names. Currently, we print a warning to
      stderr but do not track the duplicated Flag names. Tracking them allows us to inspect and
      warn over the entire set. 4875552e
  • v19.4.0

    April 18, 2019


    🆕 New Features

    • 📜 util-app: Improve usage of Flag.let by providing a Flag.letParse method
  • v19.3.0

    March 13, 2019

    🆕 New Features

    • util-core: Discard parent reader from Reader.flatten
      👻 when child reader encounters an exception. 0cc640ac
    • util-core: Added c.t.conversions.StringOps\#toSnakeCase,toCamelCase,toPascalCase
      implementations. b0a5d062
  • v19.2.0

    February 21, 2019

    🆕 New Features

    • ⚡️ util-core: updated Reader#fromFuture to resolve its onClose when reading of end-of-stream.
    • util-core: Added Reader.flatten to flatten a Reader[Reader[_]] to Reader[_],
      and Reader.fromSeq to create a new Reader from a Seq. a49bab4d
    • util-core: Added Duration.fromMinutes to return a Duration from a given number of minutes.
    • util-core: If given a Timer upon construction, will respect the close
      deadline and wait the given amount of time for any pending writes to be read. 0a142872
    • 🐎 util-core: Optimized ConstFuture.proxyTo which brings the performance of
      flatMap and transform of a ConstFuture in line with map. de4cebda
    • ⏱ util-core: Experimental toggle (com.twitter.util.BypassScheduler) for speeding up (transformTry). The mechanism, when turned on, runs map operations
      ⏱ immediately (why not when we have a concrete value), instead of via the Scheduler, where it may
      be queued and potentially reordered, e.g.:
      🖨 f.flatMap { _ => println(1); { _ => println(2) }; println(3) } will print 1 2 3,
      🖨 where it would have printed 1 3 2. aeafba1a
    • 🔒 util-security: Pkcs8KeyManagerFactory now supports a certificates file which contains multiple
      certificates that are part of the same certificate chain. 337e270f

    🐛 Bug Fixes

    • 🛠 util-core: Fixed the behavior in where Reader#flatMap fails to propagate
      parent reader's onClose. f2a05474

    ⚙ Runtime Behavior Changes

    • util-core: Closing a will notify onClose when the deadline has passed whereas
      before the pipe would wait indefinitely for a read before transitioning to the Closed state.
    • 🚀 util-core: Don't allow AsyncSemaphore Permits to be released multiple times. Before it was
      🚀 possible to release a permit more than once and incorrectly remove waiters from the queue.
      🚀 With this change, the release permit operation is idempotent. ea24c951

    💥 Breaking API Changes

    • 🚚 util-core: Remove c.t.u.CountDownLatch which is an extremely thin shim around
      j.u.c.CountDownLatch that provides pretty limited value. To migrate to j.u.c.CountDownLatch,
      instead of c.t.u.CountDownLatch#await(Duration), please use
      j.u.c.CountDownLatch#await(int, TimeUnit), and instead of
      👻 c.t.u.CountDownLatch#within(Duration), please throw an exception yourself after awaiting.
    • 🗄 util-core: Deprecated conversions in c.t.conversions have new implementations
      that follow a naming scheme of SomethingOps. df397f53
      • percent is now PercentOps
      • storage is now StorageUnitOps
      • string is now StringOps
      • thread is now ThreadOps
      • time is now DurationOps
      • u64 is now U64Ops
    • util-collection: Delete util-collection. We deleted GenerationalQueue, MapToSetAdapter, and
      ImmutableLRU, because we found that they were of little utility. We deleted LruMap because it
      🚚 was a very thin shim around a j.u.LinkedHashMap, where you override removeEldestEntry. If you
      🔀 need SynchronizedLruMap, you can wrap your LinkedHashMap with
      🔀 j.u.Collection.synchronizedMap. We moved RecordSchema into finagle-base-http because it was
      📦 basically only used for HTTP messages, so its new package name is c.t.f.http.collection.
    • util-core: Rename BlacklistStatsReceiver to DenylistStatsReceiver. ed3f7069
    • util-core: Buf.Composite is now private. Program against more generic, Buf interface instead.