.. Author notes: this file is formatted with restructured text
(http://docutils.sourceforge.net/docs/user/rst/quickstart.html).
The changelog style is adapted from Apache Lucene.

Note that ``RB_ID=#`` correspond to associated messages in commits.

Next Version

6.39.0  2016-11-22

No Changes

6.38.0  2016-10-10

New Features:

  * util-app: Java developers can now declare instances of `GlobalFlag`
    from Java. See `c.t.app.JavaGlobalFlag` for details. ``RB_ID=874073``

  * util-thrift: We now depend on a fork of libthrift hosted in the Central Repository.
    The new package lives in the 'com.twitter' organization. This removes the necessity of
    depending on maven.twttr.com. This also means that eviction will not be automatic and
    using a newer libthrift library requires manual eviction if artifacts are being pulled
    in transitively. ``RB_ID=885879``

  * util-logging: Allow users to override `c.t.util.logging.Logger` installation,
    making it easier to work with SLF4J bridges. ``RB_ID=870684``

  * util: No longer need to add an additional resolver that points to maven.twttr.com.
    ``RB_ID=878967``

Bug Fixes:

  * util-core: `c.t.io.InputStreamReader` and `Readers` created by
    `c.t.io.Reader.fromFile` and `fromStream` now close the underlying
    `InputStream` on reading of EOF and on calls to `Reader.discard`.
    ``RB_ID=873319``

API Changes:

  * util-core: `c.t.app.GlobalFlag` is now `abstract` to reflect how the class
    is intended to be used. ``RB_ID=875409``


6.37.0  2016-09-07

New Features:

  * util-app: Introduce `c.t.app.Flag.letClear` allowing flags to be unset.
    ``RB_ID=868177``

6.36.0  2016-08-25

New Features:

  * util-core: `c.t.util.FuturePool` now optionally exposes metrics on
    their internal state such as active tasks, and completed tasks.
    ``RB_ID=850652``

  * util-core: Add a system property
    `com.twitter.concurrent.schedulerSampleBlockingFraction` that can be
    set to a value between 0.0 and 1.0 (inclusive). When the Scheduler
    runs blocking code, it will log the stacktrace for that fraction of
    the calls. ``RB_ID=861892``

  * util-core: Add Java-friendly API for `StorageUnit`. See `StorageUnit.fromX`
    and `StorageUnit.{times, plus, minus, divide}` methods. ``RB_ID=864546``

Changes in Runtime Behavior:

  * util-eval: The compiler reporter is now reset between code check invocations.
    This means that when there is a failure that it is no longer required to reset
    the entire state to recover and that already compiled and loaded classes can still
    be used. ``RB_ID=859878``

6.35.0  2016-07-07

Changes in Runtime Behavior:

  * util-codec: StringEncoder no longer depends on apache commons-codec, and
    decode will now throw an exception when it fails to decode a byte, instead
    of failing silently. ``RB_ID=833478``

  * util-collection: LruMap is now backed by jdk LinkedHashMap instead of apache
    collections LRUMap. ``RB_ID=833515``

  * util-core: `com.twitter.util.NonFatal` is now implemented by Scala's
    `scala.util.control.NonFatal`. This changes behavior such that
    `java.lang.StackOverflowError` is considered fatal and
    `java.lang.NoSuchMethodException` is considered non-fatal.
    ``RB_ID=835671``

New Features:

  * util-app: `com.twitter.finagle.util.LoadService` has been moved to
    `c.t.app.LoadService` and can now be used without needing a finagle-core
    dependency. ``RB_ID=829897``

  * util-cache: Adds support for Caffeine-style caches. ``RB_ID=833848``

  * util-core: Add `c.t.concurrent.Scheduler.blockingTimeNanos` which tracks time spent doing
    blocking operations. ``RB_ID=828289``

  * util-core: Reduced allocations by 40% and latency by 18% of satisfying `Promises`.
    ``RB_ID=832816``

  * util-core: `c.t.util.NoStacktrace` is removed. Use `scala.util.control.NoStackTrace` instead.
    ``RB_ID=833188``

  * util-core: Add `Future.joinWith` that also accepts a function `(A, B) => C` for mapping
    a joined result. ``RB_ID=838169``

  * util-core: Add `Future.by(Time)`, complementary to the existing `Future.within(Duration)`
    ``RB_ID=838169``

  * util-core: Add `c.t.util.ProxyTimer` which allows for creating proxy based
    `Timers` outside of the `com.twitter.util` package. ``RB_ID=846194``

  * util-core: Add `AsyncStream.merge` merge potentially inifite streams
    ``RB_ID=846681``

  * util-security: Added new project. ``RB_ID=843070``

API Changes:

  * Builds are now only for Java 8 and Scala 2.11. See the
    `blog post <https://finagle.github.io/blog/2016/04/20/scala-210-and-java7/>`_
    for details. ``RB_ID=828898``

  * util-core: `c.t.u.Bijection` is removed. use `c.t.bijection.Bijection`
    (https://github.com/twitter/bijection) instead. ``RB_ID=834383``

  * util-core: Deprecated method `Future.get()` has been removed because it made it
    too easy to hide blocking code. Replaced usage with the more explicit
    `com.twitter.util.Await.result(Future)`. ``RB_ID=833579``

  * util-core: Deprecated method `Future.get(Duration): Try` has been removed because it
    made it too easy to hide blocking code. Replaced usage with the more explicit
    `com.twitter.util.Await.result(Future.liftToTry)`. ``RB_ID=836066``

  * util-core: Deprecated methods `Future.isReturn` and `Future.isThrow` have been
    removed because they made it too easy to hide blocking code. Replaced usage with
    the more explicit `Await.result(Future.liftToTry).isReturn` and
    `Await.result(Future.liftToTry).isThrow`. ``RB_ID=837329``

  * util-lint: Added methods `com.twitter.util.lint.Rules.removeById(String)` and
    `com.twitter.util.lint.RulesImpl.removeById(String)` so that it is now possible
    to remove a `com.twitter.util.lint.Rule` from the `com.twitter.util.lint.GlobalRules`
    set. ``RB_ID=840753``

Bug Fixes:

  * util-core: AsyncMeter had a bug where if the burst size was smaller than
    the number of disbursed tokens, it would discard all of the tokens over
    the disbursal limit.  Changed to instead process tokens in the wait queue
    with leftover tokens.  This improves behavior where the actual period is
    smaller than can actually be simulated with the given timer.  ``RB_ID=836742``

  * util-core: Once didn't actually provide the guarantee it tried to, because
    of an issue with the scala compiler,
    https://issues.scala-lang.org/browse/SI-9814.  It should now actually be
    synchronized. ``RB_ID=842245``

  * util-zk: Fixed race when an existing permit is released between the time
    the list was gotten and the data was checked. ``RB_ID=835856``

  * util-core: Memoize apply now throws IllegalStateException if a thread
    re-enters with identical input parameters instead of deadlocking.

6.34.0  2016-04-26

New Features:

  * util-core: Add `Throwables.unchecked` to help Java users deal with checked
    exceptions. ``RB_ID=811441``

  * util-stats: Can now get from a `com.twitter.finagle.stats.StatsReceiver`` to all "leaf"
    StatsReceivers that don't delegate to another StatsReceiver with
    `com.twitter.finagle.stats.DelegatingStatsReceiver.all`.  ``RB_ID=819519``

API Changes:

  * util-core: Removed deprecated methods from Buf.scala ``RB_ID=809948``
    - Removed `c.t.io.Buf.ByteArray.apply`, replace usage with `Buf.ByteArray.Owned.apply`.
    - Removed `c.t.io.Buf.ByteArray.unapply`, replace usage with `Buf.ByteArray.Owned.unapply`.
    - Removed `c.t.io.Buf.ByteBuffer.apply`, replace usage with `Buf.ByteBuffer.Owned.apply`.
    - Removed `c.t.io.Buf.toByteBuffer`, replace usage with `Buf.ByteBuffer.Owned.extract`.

  * util-core: Removed deprecated `Future.apply` methods ``RB_ID=811617``

  * util-stats: Removed `com.twitter.finagle.stats.BroadcastStatsReceiver` marker trait in favor of
    `com.twiter.finagle.stats.DelegatingStatsReceiver` marker trait, which lets us specify that we
    only delegate to a single `com.twitter.finagle.stats.StatsReceiver`.  ``RB_ID=819519``

  * util-zk-common: Removed `com.twitter.zk.ServerSet`. Use implementations of ServerSets in the
    finagle-serversets project. ``RB_ID=821355``

Bug Fixes:

  * util-core: Fix memory leak in `Var.apply(T, Event[T])` and `Var.patch`.
    ``RB_ID=809100``

6.33.0  2016-03-10

New Features:

  * util-core: AsyncSemaphore supports closing and draining of waiters via `fail`. ``RB_ID=807590``

  * util-core: Add convenience methods `force`, `size`, `sum`, and `withEffect` to `AsyncStream`.
    ``RB_ID=808411``

Bug Fixes:

  * util-core: Fix nested functions `AsyncStream.++` to avoid stack overflow. ``RB_ID=804408``

Deprecations:

  * util-core: `Future.rawException` is deprecated in favor of `Future.exception`.
    ``RB_ID=798223``

6.32.0  2016-02-03

New Features:

  * util-core: Add `Future.traverseSequentially`. Take a sequence and sequentially apply a function
    A => Future[B] to each item. ``RB_ID=785091``

6.31.0  2016-02-02

NOT RELEASED

6.30.0  2015-12-03

New Features:

  * util-core: Introduce an `AsyncMeter` for asynchronously rate limiting to a fixed rate over time.
    It can be used for smoothing out bursty traffic, or for slowing down access to a
    resource. ``RB_ID=756333``

  * util-core: Introduce a `TokenBucket` for helping to control the relative rates of two processes,
    or for smoothing out the rate of a single process. ``RB_ID=756333``

API Changes:

  * util-core: `Timer` now has final implementations for `schedule` which delegate
    to new protected `scheduleOnce` and `schedulePeriodically` methods. This is
    done to ensure that `Locals` are captured when the task is scheduled and
    then used when the task is run. Existing `Timer` implementations should rename
    their existing `schedule` methods to work with the new interface. ``RB_ID=755387``

  * util-core: Remove deprecated `FuturePool.defaultPool`, callers should
    use `FuturePool.unboundedPool` instead. ``RB_ID=757499``

  * util-stats: Remove deprecated methods on `com.twitter.finagle.stats.StatsReceiver`.
    ``RB_ID=757414``

  * util-core: `AsyncStream` graduates out of `com.twitter.concurrent.exp` into
    `com.twitter.concurrent`. Backwards compatibility aliases remain for Scala
    users, but Java users will need to update their imports. ``RB_ID=758061``

  * util-codec: Add a new encoder `com.twitter.util.Base64UrlSafeStringEncoder`
    which extends from `com.twitter.util.Base64StringEncoder`. Both the url-safe
    and non-url-safe encoders can decode all strings generated by either. ``RB_ID=765189``

  * util-core: Remove unnecessary `invalidate` method from util-cache's
    `com.twitter.cache.guava.LoadingFutureCache`, and change the `remove` semantic
    to match the `com.twitter.cache.FutureCache` contract. ``RB_ID=766988``

  * util-core: Remove protected `Timer.monitor` (overrides a monitor to use by a
    timer implementation) because any possible implementation rather than `Monitor.get`
    promotes memory leaks when timer is used to schedule recursive tasks (tasks that
    reschedules themselves). ``RB_ID=771736``

6.29.0  2015-10-15

New Features:

  * util-core: Introduce an optional max capacity to `AsyncQueue`.
    Modified `AsyncQueue.offer` to return a boolean indicating whether or not the
    item was accepted. Added `AsyncQueue.drain(): Try[Queue]`. ``RB_ID=745567`

API Changes:

  * util-core: Remove deprecated methods from `com.twitter.util.Time` and
    `com.twitter.util.Duration`. ``RB_ID=751771``

  * util-core: Provide methods on `Stopwatch` so that users can take advantage of
    `Time` manipulation tools in latency-sensitive code when measuring elapsed
    time. ``RB_ID=75268``

Changes in Runtime Behavior:

  * util-core: The Scheduler clock stats were decommissioned as they only make sense
    relative to `wallTime` and the tracking error we have experienced `wallTime` and
    `*Time` make it impossible to use them reliably. It is not worth the performance
    and code complexity to support them. ``RB_ID=750239``

  * util-core: `JavaTimer` and `ScheduledThreadPoolTimer` now capture the `Local`
    state when scheduled and is used along with that `Monitor` when the `TimerTask`
    is run. ``RB_ID=755387``

  * util-logging: `QueueingHandler` does not create a separate thread per instance.
    ``RB_ID=745567`

6.28.0  2015-09-25

API Changes:

  * util-core: Remove deprecated methods from `com.twitter.util.Var`.

    To migrate `observe` and `foreach`, given `aVar.observe { t => somethingWith(t) }`
    you would write `aVar.changes.register(Witness({ t => somethingWith(t) }))`.

    To migrate `observeUntil`, given `aVar.observeUntil(_ == something)`,
    you would write `aVar.changes.filter(_ == something).toFuture()`.

    To migrate `observeTo`, given `aVar.observeTo(anAtomicReference)`,
    you would write `aVar.changes.register(Witness(anAtomicReference))`.

    ``RB_ID=744282``

6.27.0  2015-08-28

API Changes:

  * util-core: `TimeFormat` optionally takes a `TimeZone` in the constructor.
    If not provided, it uses UTC.

6.26.0  2015-07-27

API Changes:
  * util-core: `Activity`, `BoundedStack`, `RingBuffer` and `Var` migrated
    off of deprecated `ClassManifest` to `ClassTag`. ``RB_ID=720455``

  * util-core: Added Spool#zip

  * util-core: Removed deprecated methods `Future.void` and `Future$.void()`.
    Use `Future.voided` and `Future$.Void` instead. ``RB_ID=720427``

Changes in Runtime Behavior:
  * util-core: `Promise.forwardInterruptsTo(other)` is a no-op if the
                other future is fulfilled. ``RB_ID=714420``

  * util-events: Recording of events is disabled by default and can be updated
                 at runtime via TwitterServer's `/admin/events` page or
                 `/admin/events/{recordOn,recordOff}`. ``RB_ID=715712``

6.25.0  2015-06-22

Changes in Runtime Behavior:
  * util-events: Enable event sink by default.

6.24.0  2015-04-12

New Features:
  * util-core: Introduce AsyncStream, an experimental replacement for Spool.

API Changes:
  * util-core: `Future.willEqual()` now returns `Future[Boolean]` instead of
               `Promise[Boolean]`.

  * util-core: rename VarSource to ActivitySource. remove
               com.twitter.io.exp.VarSource.Result, return Activity[T]
               instead of Var[VarSource.Result[T]]. Remove FailoverVarSource in
               favor of ActivitySource.orElse.

  * util-core: `TimeFormat` now throws IllegalArgumentException if the pattern
               uses the week year ('Y') without the week number ('w')
  * util-core: `Spool.++` used to force its argument, but now it is evaluated
               only if `this` Spool is empty. To revert to existing behavior,
               simply force the argument before passing it to ++.

  * util-core: `Reader.writable()` returns a new type, `Reader.Writable`, which
               combines `Reader`, `Writer` and `Closable`.
  * util-core: `Reader.concat` and `Reader.copyMany` now take an AsyncStream
               argument instead of Spool.

Changes in Runtime Behavior:
  * util-core: Futures still rethrow on fatals, but now also Monitor.handle on
               them.

  * util-core: `Future.onFailure` now only applies a `PartialFunction` if
               `PartialFunction.isDefinedAt` returns true.

  * util-core: `AsyncSemaphore` now requires that `initialPermits` be positive.

  * util-core: The `Reader` and `Writer` from `Reader.Writable.close()` are now
               synchronized on `close`.

6.23.0 2014-12-12

New Features:
  * util-core: Add method .flushBatch() to batched future returned by Future.batched()
               that immediately initiates processing of all remaining queued requests
  * util-core: Add Future.collect() method that collects over Map's values
  * util-stats: Create a new module, `util-stats` to move `finagle-core`
                StatsReceivers to.  They retain the `com.twitter.finagle`
                namespace to ease the transition.

Deprecation:
  * util-stats: Deprecate `com.twitter.finagle.stats.StatsReceiver#time{,TimeFuture}`.
                Instead, please use the `com.twitter.finagle.stats.Stat` helpers
                from scala, and the `com.twitter.finagle.stats.JStats` helpers
                from java.

API Changes:
  * util-cache: Remove unused com.twitter.cache.Mod trait and object
  * util-core: Rename Buf._.Unsafe to Buf._.Owned and Buf._.Copied to Buf._.Shared
  * util-core: Remove the com.twitter.util.repository package
  * util-core: Change return type of Future.batched() to com.twitter.util.Batcher

Java Compatibility:
  * util-app: Flaggable is now an abstract class for Java compatibility
  * util-core: Make Futures an API entry point for Java users
               (even for methods that take Scala collections)
  * util-core: Add compilation tests to track Java compatibility of new API


6.22.2  2014-10-29

API Changes:
  * util-core: Removed `Sieve` example.
  * util-core: Introduce new constructors and extractors for Buf types to
               support more efficient, correct uses.  Buf types now come with
               Copied and Direct management interfaces -- Direct tries to
               provide direct access to the Buf's backing byte array, while
               Copied ensures that the caller cannot accidentally mutate a Buf's
               data. Additionally, helpers to support Buf-type coersion have
               been added.

New Features:
  * util-app: add an option so that we can let apps fail fast if reading
              argument before args are parsed.

Bug Fixes:
  * util: add missing @RunWith annotation
  * util-core: Java tests for Duration, Time and Timer
  * util-core: Reader.writable.fail: make reentrant

Optimizations:
  * util-core: Slurry of PartialFunction micro-optimizations

6.22.1  2014-10-23

Bug Fixes:
  * util and finagle: fix compiler warnings

Deprecation:
  * util-core: Add deprecation of RingBuffer to changelog
  * util-core: Removed IVar and IVarField

Documentation:
  * util-core: Clarify Scaladoc of `Promise.attached`
  * util-core: Add self-type to `Promise.Detachable` and augment Promise Scaladocs
  * util-io: Better names for Buf.slice() paramters.

New Features:
  * util-app: Add App registration
  * util-cache Add asynchronous cache with TTL
  * util-core: Add `Activity.future`

Package factoring:
  * util-logging: factor out testing code into new package util-test

6.22.0  2014-10-13

System Requirements:
  * util-core: prefer Await.result(future.liftToTry) to deprecated methods
  * c.t.util.Time: Scope Locals with `Local.let` instead of `save`+`restore`

Changes in Runtime Behavior:
  * util-logging:
    - Logging's default handler is now async by default via `com.twitter.logging.QueueingHandler`.
    - Two Flags allowing for customization:
      + `com.twitter.logging.log.async`: Default true, turns this functionality on/off.
      + `com.twitter.logging.log.async.maxsize`: Default 4096, max size of the async buffer.
  * util.RingBuffer: fix buffer size on drops
  * util-io: Fix Buf.ByteBuffer.slice
  * util-core: Future.sleep: short-circuit when duration <= 0
  * util-core: IVar and IVarField were removed. Use com.twitter.util.Promise instead because it provides a superset of IVar behavior.

New Features:
  * util-core: introduce Memoize.snappable
  * util-app: add Flaggable.ofSet
  * util-app: introduce Flag.let

Optimizations:
  * util-core: Perf improvement to ConcatBuf#slice
  * util-core: Avoid accumulation of listeners in Future.select
  * util-core: Event.filter only 1 call to filter predicate

Bug Fixes:
  * util-jvm: Fix logging in Jvm.foreachGc
  * util-core: document StorageUnit can overflow
  * util-core: check Future.proxyTo and Promise.become preconditions

API Changes:
  * util-core: remove Leaky and FutureBenchmark

Documentation:
  * util, ostrich, finagle, twitter-server: Remove all trailing spaces

  Package factoring:
  * Test classes from util-logging were factored into its own package, util-test.

  API Changes:
  * util-core: Deprecate `RingBuffer` in favor of Guava's `com.google.common.collect.EvictingQueue`.

6.21.2  2014-09-08
  * util-cache: Adds a Guava-backed asynchronous cache
  * util-core: Fixed FuturePool for NLRC
  * util-core: Improve java friendliness of futures
  * util-core: Make register/close on Event() work atomically
  * util-core: Reimplement Buf.Utf8 encoder/extractor using io.Charsets
  * util-core: storage parse() should be able to handle Long
  * util-logging: make Logger immutable & break cyclic dependency on Level
  * util: Upgrade to scala_2.10

6.20.0  2014-08-22

  * util: Enables cross-publishing for 2.11
  * util-app: Log severely if a flag is read at the wrong time
  * util-core: Changes transform to fail Futures if you return inside the passed closure
  * util-core: Copy bytes from Reader to Writer and OutputStream
  * util-core: Fix RichU64String to throw for negative input Problem
  * util-core: Optimizations in Buf
  * util-core: Remove some unnecessary implicit conversions
  * util-doc: Fix updatedocs.bash to update new util docs

6.19.0  2014-08-05

  * util: smattering of minor cleanups in util and finagle
  * util-core: Reader and getContent symmetry

6.18.4  2014-07-31

  * util-core: Remove confusing NOOP 0.until(5) in Future.collect().
  * util-app: Fix a bug in global flag parsing

6.18.2  2014-07-23

  * util-core: Fixes a broken sbt test
  * util-core: Log exceptions caught by ChannelStatsHandler
  * util-core: Satisfy promise on fatal exception in FuturePool task
  * util-core: small perf improvements to Future.collect, Throw, Flag
  * util-logging: java-friendly LoggerFactory API

6.18.1  2014-07-08

  * util: Update README to reflect correct storage units.
  * util-*: Convert all tests in util to scalatest
  * util-app: Simplifies the logic to get the appname
  * util-io: Buf, Reader: remove Buf.Eof; end-of-stream is None
  * util-io: Create Buf.ByteBuffer to wrap java.nio.ByteBuffer

6.18.0  2014-06-23

  * util-app: Don't kill the JVM on flag-parsing failure
  * util-app: Improve the Scaladocs for com.twitter.app.Flag and friends
  * util-core: Add U(32|64)(BE|LE) to Buf
  * util-core: Add com.twitter.util.NilStopwatch
  * util-core: Add src/main/java dependency on src/main/scala
  * util-core: Catch InterruptedException in Closable collector thread
  * util-core: Fix MockTimer#schedule(Duration)(=> Unit)'s cancel
  * util-core: Fix update-after-interrupt race condition in AsyncSemaphore
  * util-core: Signal the deprecation of com.twitter.util.Bijection.
  * util-logging: Add additional handlers to Logging trait

6.17.0  2014-06-04

  * util: Upgrade dependency versions
  * util-core: Scheduler productivity = cpuTime/wallTime
  * util-core: Add a `take` method to `Spool`
  * util-core: Introduce `ConcatBuf`
  * util-core: add `Spool.collectFuture`

6.16.0  2014-05-13

  * util-app: Add flag for configuring acceptance of undefined flags
  * util-app: Minor c.t.app.ClassPath/c.t.f.util.LoadService cleanup
  * util-core: Adds Time.sleep for testing sleeping code

6.15.0  2014-04-29

  * util-app: enforce close grace period
  * util-core: special case buf.slice(0, buf.length)
  * util-core: add LIFO option to LocalScheduler
  * util-core: improves usability of Var and VarSource from java
  * util-core: Make spool lazier
  * util-core: Fixes detachable semantics with ConstFuture
  * util-core: make LocalScheduler non-private for custom schedulers

6.14.0  2014-04-09

  * util-benchmark: Fix caliper failures due to new guava
  * util-core: Add Local.let
  * util-core: Add com.twitter.io.Charsets and replace the use of org.jboss.netty.util.CharsetUtil
  * util-core: Bump objectsize dependency to 0.0.10
  * util-core: Comprehensive Scaladocs for Scheduler-related classes and traits
  * util-core: Create a static Exception for use in `Future.raiseWithin`
  * util-core: Future.select: fix inaccurate comments
  * util-core: Make Function classes covariant
  * util-core: Parse names into trees; introduce separate evaluation.
  * util-core: Short-circuit `within` and `raiseWithin` if Future is already satisfied

6.13.2  2014-03-24

  * util-core: Add `StorageUnit.hashCode`
  * util-core: Event.mergeMap: fix Closable
  * util: Update 3rdparty library versions
  * util: Upgrade to guava 16

6.13.1  2014-03-20

  * util: Update zk libraries

6.13.0  2014-03-14

  * util-app: add usage string, printed before flags
  * util-app: Handle comma-separated values in `Flaggable.ofMap`
  * util-app: Implement application-level shutdown handling in App.
  * util-app: Remove hardcoded ports in FlagTest
  * util-app: sort global flags in usage
  * util-core/Offer: Don't do indexed lookups in prepare()
  * util-core: Add support for interrupting Future.sleep
  * util-core: Check whether JVM supports thread measurement before measuring
  * util-core: Create daemon threads in all stock `com.twitter.util.FuturePool`s
  * util-core: Event: mergeMap, not flatMap
  * util-core: Performance optimizations for Future.collect
  * util-core: TimeLike inSeconds should not truncate
  * util-core: Var.collect, Fix deadlock caused by oversynchronizing
  * util-core: Var: prevent stale updates
  * util: ForkJoin scheduler: first draft

6.12.1  2014-02-18

  * Upgrade everyone to the new c.t.common.server-set

6.12.0  2014-02-14

  * LocalScheduler: improve concurrency by sampling less
  * Option to enable thread pool scheduler in finagle, and fix the shutting down RejectedExecutionException's.
  * re-write Future.unit in terms of Future.Unit
  * Revert "Option to enable thread pool scheduler in finagle, and fix the shutting down RejectedExecutionException's." (It's breaking the build on JDK6 machines)
  * twitter-server: Report on deadlock conditions in admin/contentions
  * Update 3rdpaty zookeeper client
  * Update version of com.twitter.common*
  * util-core: Add a Scaladoc for com.twitter.util.RandomSocket
  * util-core: State[+A] => State[A]
  * util-logging: Increase richness of file-logging flags
  * util-zk: scalatest as test dep
  * util-{app,jvm}: various small improvements from gcflow
  * util: Drop util-eval dep from util-zk-common, which pulls in scala-compiler unnecessarily
  * Var: fix an iatrogenic concurrency bug

6.11.1  2014-01-16

  * util-collection: Depend on jsr305.
  * util-core: Add `Promise.attached` and Detachable.
  * util-core: Add `Future.batched`.
  * util-common: Fix a race condition in ExecutorServiceFuturePool.

6.11.0  2014-01-14

  * util-core: Add BridgedThreadPoolScheduler.
  * util-core: Add Events, discrete-time values.
  * util-core: Add Future.delayed, Timer.Nil.
  * util-core: Add Var.join.
  * util-core: Add utilities for composing Future side effects.
  * util-core: Allocation improvements to Future.isDefined, Promise.isDefined, Promise.interrupts.
  * util-core: Fix forcing issues with Spool.*::.
  * util-core: Future.followedBy->Future.before
  * util-core: s/setValue(())/setDone()/g
  * util-logging: Allocation improvements to Formatter.formatMessageLines.
  * util-logging: Get correct method and class name in c.t.u.LogRecord
  * util-zk-common: Fix finagle-serversets dependencies discrepancy.

6.10.0  2013-12-12

  * `util-core`: Add functionality to AsyncSemaphore for executing functions as permits become available.
  * `util-core`: Fine-grained locking to prevent deadlocks in Var.
  * `util-core`: Introduce com.twitter.io.BufInputStream - wraps a Buf and exposes a java.io.InputStream interface.
  * `util-core`: Introduce com.twitter.util.Memoize - thread-safe memoization of a function.

6.9.0  2013-12-02

  * util-core: 2.10 pattern matching strictness
  * util-core: Gives Var single-owner semantics
  * util-core: Seq[Future[A]] => Future[Seq[Try[A]]]
  * util-core: Adds a comment explicitly describing synchronous callback on observe for Var
  * util-core: async semaphore cancellation
  * util: sbt version in `build.properties'

6.8.1  2013-11-15

  * util-core: Break apart interruptible FuturePool for java backcompat

6.8.0  2013-11-12

  * util-app: Fix null error for Flaggable[InetSocketAddress].
  * util-app: Flag, easier usage of default.
  * util-core: adds closable.close(Duration)
  * util-core: Adds com.twitter.io.exp.VarSource
  * util-core: adds comment re using FuturePool from java.
  * util-core: buffers requests until Var[Addr] is in a ready state
  * util-core: Fix Promise update race when interrupting FuturePool threads.
  * util-core: improve allocation/perf in Offer.choose and Future.select
  * util-core: Var: remove Var.apply; introduce Var.sample
  * util-zk-common: update pom com.twitter.common.zookeeper dependencies
  * util: scaladoc warning cleanup.

6.7.0  2013-10-18

  * util-core: Introduce Try.collect(), analagous to Future.collect
  * util-core: Add some empirically useful add-ons to Var
  * util-logging: Use ConsoleHandler when outputFlag is /dev/null
  * util-core: Fix broken string-deserialization in Buf.Utf8.unapply
  * util-core: Improve gc profile around Var

6.6.0  2013-10-09

  * util-app: Properly propagate underlying exceptions.
  * util-core: Add a `Var.value` function. (835a043)
  * util-core: Augment Var and Local in support of Finagle's request context feature. (b2d689a)
  * util-core: Avoid instantiating TimeoutException until it is needed (CSL-592)
  * util-core: Make Future.never a val instead of a def
  * util-core: Move Var to core util, add Var.unapply
  * util-core: Testing function Time.withTimeAt now uses Locals.
  * util-core: Throw AlreadyNackd on nack-ack.
  * util-core: raiseWithin, alternative to within, that raise interrupt.
  * util-jvm: Add a GlobalFlag for a machine's number of logical cores. (dc20fbf1)
  * util-logging: Add a NullLogger object.
  * util-logging: makes Logging more flexible for easy extension of twitter-server
  * util-zk: Add ShardCoordinator and ZkAsyncSemaphore classes. (c57b2a9)

6.5.0  2013-09-10

  * util-hashing: removed dependency on util-core
  * util-core: Introduce swappable schedulers, ThreadPool scheduler.
  * util-core: Scheduler - "productivity" stats, dispatches.
  * util-core: Add Future.when
  * util-core: introduced Var - composable variables
  * util-core: adding short note on Future 'within'

6.4.0  2013-08-28

  * util-core: Add Return constants
  * util-core: Make ConstFuture.transform consistent with Promise.transform
  * util-core: Make it possible to explicitly set a locale on TimeFormat
  * util-logging: Refactored formatter to decrease coupling
  * util-core: Add NoSuchMethodException as fatal exception in NonFatal
  * util-app: Add some logging helpers to Flags
  * util-core: Introduce Buf, Reader, and Writer: Zerocopy, buffered I/O

6.3.8  2013-07-22

  * util-core: Add Future.True and Future.False constants
  * util-app: Treat '--' as end of flags indicator
  * util-app: Add support for long flags

6.3.7  2013-06-24

  * util-app: flags use by-name default values
  * util-app: Make the global flag test idempotent
  * util-collection: guard against missing element exception in BGQ
  * util: Deal with UnknownHostException thrown by InetAddress.getLocalHost
  * util: update version in README

6.3.6  2013-06-11

  * util: Update owners files
  * util-jvm: CpuProfile: sleep the right amount of time for the recording thread
  * util-jvm: always try to construct hotspot instance Detection by VM name is unreliable.
  * util: util/* compiling, testing and benchmarking with pants.
  * util-eval: Gizzard: Some followup deps alignment to fix deployment classpath issues

6.3.5  2013-05-31

  * util-core: add Time.fromMicroseconds to util.Time
  * util-core: NullMonitor takes itself out when composed
  * util-core: deprecate Config
  * util-hashing: add entryForHash api to Distributor
  * util-app: Flag: clarify usage and hide all Flag constructors.
  * util-core: Added reduceLeft and foldLeft to the Spool class
  * util: Update sbt project for (util, ostrich, finagle)

6.3.4  2013-05-16

  * util-core: Convenience method to await all
  * util-core: RootMonitor never propagates non fatal exception

6.3.3  2013-05-13

  * util-collection: When growing chain only grow the chain. This addresses a NoSuchElementException.
  * util-eval: fix for when class files are on the classpath directly
  * util: Generate build.properties from sbt
  * util-core:Time, Duration: implement Java serialization
  * util-thrift: Bump Jackson to 1.9.11
  * util-core: Add withFilter to Future and Try
  * util: Remove zookeeper dependency ivyXML and replace with ExclusionRules

6.3.2  2013-04-18

  * util-core: create less garbage in AsyncSemaphore.acquire()
  * util-core: deprecate com.twitter.util.concurrent.Concurrent{Pool, MultiMap}
  * util-core: restore prior Future.get behavior
  * util-core: Spool error propagation
  * util-core: Use futures for schema detection to avoid blocking finagle threads
  * util-refect: test: use sys.error
  * util-zk: ZNode("/path").parentPath should be "/", not an empty string

6.3.0  2013-04-05

  * util-core: flag a bug with U64 truncation
  * util-core: Future.get: include fatal exceptions
  * util-core: deprecate Future#apply, get.
  * util-core: special-case Duration.Zero to avoid allocation

6.2.5  2013-03-27

  * util-zk: Improvements to util-zk NativeConnector
  * util: Update sbt project definition
  * util: launching test in all scala version of the project

6.2.4  2013-03-21

  * util-core: Add Future.Nil, it can be used anytime you need a Future[Seq[_]] with an empty sequence.
  * util-core: fix VM test error by ensuring reset
  * util-core: Move Disposable/Managed to util
  * util-logging: scribe binary thrift for tbird add/remove/scrub ops:
  * util: upgrade com.twitter.common.objectsize to 0.0.7

6.2.3  2013-03-08

  * util-core: Remove StreamHelper
  * Flag: create Map flag type

6.2.2  2013-02-25

  * Flag: introduce global flags

6.2.1  2013-02-20

  * HttpMux: provide visibility into available handlers
  * Flag: add Time type
  * Spool: encode exceptions
  * Closable: use Time.Bottom for close()
  * Future.within: bypass timer entirely if we're passed Duration.Top
  * Awaitable: introduce Await
  * util-jvm: GC predictor
  * io.Files: don't overallocate buffers
  * Future: use .nonEmpty instead of != Nil

6.1.0  2013-01-30

  * preliminary 2.10 port/build
  * Add Closable trait
  * Add contention snapshot

6.0.6  2013-01-22

  * util-core: concurrent.SpoolSource utility for creating Spools
  * util-core: Spool.flatMap, Spool.++
  * util-app: add shutdown hooks
  * util-logging: Make the logging work properly for Scala and
  mixed Scala/Java

6.0.4  2012-12-18

  * Broker: more efficient dequeueing of offers
  * Duration: parse all output of Duration.toString
  * ScheduledThreadPoolTimer: aggressively remove runnables
  to avoid space leak
  * util-core documentation: fix some parentheses, backticks
  * util-hashing: add Hashable type class

6.0.3  2012-12-11

  * Promise: remove future tracing, add explicit transforming state to
  avoid extraneous allocation
  * update zk client
  * com.twitter.app: composable apps & flags

6.0.1  2012-11-26

  * Use java.util.ArrayDeque in place of mutable.Queue due to
  https://issues.scala-lang.org/browse/SI-6690

6.0.0  2012-11-26

  * Removed future cancellation, which is now replaced with one-shot
  interrupts. These also carry a ``cause'' which will be used
  profitably in finagle.
  * A new, leaner Promise implemetnation
  * New implementations for Time and Duration with true sentinels
  * Promise, Try combinators no longer attempt to catch fatal
  exceptions

5.3.14  2012-11-20

  * fix compiler warnings
  * Future.join: support up to 22-tupled futures
  * com.twitter.concurrent.Serialized: explicit docs
  * util-logging: concurrent enqueue support for ScribeHandler, add stats

5.3.13  2012-10-16
  * AsyncSemaphore: Use volatile vars for the active number and the waiters
  * util-logging: fix ThrottledHandler to not leak memory
  * util-logging: for file handlers, default to append=true since that was the default with FileHandlerConfig and is safer behavior
  * upgrading slf4j dependent projects (1.6.1).
  * sbt: robust MD5 checking.
  * Fix Spool.foreachElem crashing on resoved spool with error
  * FuturePool.defaultPool: use cached threadpool by default.
  * util-logging: Correctly handle files with a shared prefix.

5.3.10  2012-09-06
  * Improve ZNode.name and ZNode.parentPath to not use Regexes
  * Fix ScheduledThreadPoolTimer.schedule(...).cancel()
  * Upgrade guava dependency to v13
  * Add a ZkClient Connector that dispatches requests across several zookeeper connections
  * Support prefix-less sequential nodes in util-zk
  * util-logging: Add Logger.withLoggers.
  * Clean up equals and hashCode for Time and Duration

5.3.7  2012-08-21
  * Disable log handler purging
  * Added ThriftCodec
  * Add a Time.hashCode method
  * GC monitor: be more quiet about missed GCs
  * patch public release of OSS libraries; catch up sbt

5.3.6  2012-07-26
  * Fix temporary file name generation

5.3.0  2012-06-25
  * util-jvm: start timer thread in 'daemon' mode

5.2.0  2012-06-14

  * JVM CPU profiler
  * util-jvm: fix for JDK 7

5.1.2  2012-06-07

  * fix documentation
  * util-jvm: gc monitoring
  * Kill com.twitter.concurrent.Channel

5.0.4  2012-06-01

  * Upgrade scala to 2.9.2
  * Java compatibility: void -> voided

4.0.1

  * added AsyncQueue
  * config:validate optional subconfigs
  * util-zk: allow multiple session event listeners, fix AsyncCallbackPromise
  exception handling, misc fixes
  * offer: deprecate apply()
  * propagate cancellation exception when Timer.doAt future is cancelled
  * KetamaDistributor optionally preserves a floating point truncation
  * Timer uses daemon thread by default
  * Future.monitor: release reference to promise when it's satisfied
  * Future: misc Java compatibility fixes
  * Eval.scala: Allow @deprecated
  * util-logging: Add LoggerFactory
  * Util: Add util-class-preloader (classfile preloading), util-jvm
  (access to performance counters)
  * Future: divorce from TryLike hierarchy
  * LogRecord: use MessageFormat
  * Time: Treat MaxValue specially in TimeMod.{add,sub}

3.0.0  2012-03-14

  * AsyncSemaphore: allow parameterizing maximum queue size
  * Logging: scribe handlers may now be named "scribe"
  * Logging: Always make sure Level is initialized before being
  able to refer to Logger.
  * Offer/Broker: simpler, more flexible implementation
  * Config: Config.optional results in lazy evaluation

2.0.0  2012-02-27

  * NetUtil: optimize ipv4 address parsing
  * upgrade to Guava r11

1.12.13  2012-02-13

  * NetUtil: Add inetAddressToInt, isInetAddressInBlock, isInetAddressInBlocks
  * Future tracer: fix bug where double proxied exceptions fail
  * add "ExceptionalFunction0" for easier use from Java
  * Locals: many optimizations to reduce allocations caused by saving
  and restoring contexts

1.12.12  2012-01-24

  * util-zk-common: Asynchronous wrappers for common ServerSets.
  * IVar.unget: only remove closures by object equality
  * Offer.choose: use nanoseconds for random seed
  * Future.const - builds a constant Future from an existing Try

1.12.9  2012-01-05

  * ThreadPoolFactories are named by default
  * Offer: ensure ObjectOrder is independent of Object#hashCode
  * new package: util-zk: asynchronous bindings to ZooKeeper

1.12.7  2011-12-02

  * Future: temporarily disabling default usage of the AsmTracer

1.12.6  2011-12-01

  * Future: all helper methods now have Java-friendly equivalents
  that take Lists.

1.12.5  2011-11-29

  * Config: recompile configs based on hash instead of timestamp, add
  memoization
  * Timer: make JavaTimer more resilient, log errors
  * FuturePool: Fixed race condition in FuturePool where work that was
  cancelled would not clean up after itself
  * Function: Add ExceptionalFunction type to allow Java to throw
  checked exceptions.
  * Futures: trace dispatch "stack", supplying it as a stack trace for
  exceptions, implement "transform", "transformedBy" to allow for a
  more imperative control flow when used from Java.
  * Monitors: composable widgets for handling exceptions

1.12.4  2011-11-09

 * Files.delete has to follow symlinks because jdk6 support
 for symlinks is weaksauce
 * properly handle cancellation in FuturePool
 * Locals: ensure ``Local'' is fully initialized before registering

1.12.3  2011-11-08

  * add some docs to Offer, Time
  * util.io.Files: file utilities, documentation for TempFile
  * Offer/Broker: explicit return types for Java compat.

1.12.2  2011-10-28

  * Json thrift deserializer
  * Finagle: count pending timeouts
  * Fix eval precompile bug

1.12.0  2011-10-21

  * util.Config.Specified now delays evaluation of specified value, to
  ensure evaluation happens in correct dependency order, rather than
  in class-hierarchy order.  This change is mostly source compatible,
  unless you have directly used the Specified class.

1.11.9  2011-10-14

  * ivar/future: provide "TCE", per-thread scheduling, and
  promise squashing
  * logger: restore original logging level after modifying them
  * u64: fix
  * filehandler: thread-visibility
  * eval: fix mtime invalidation
  * base64 encoder: make it threadsafe

1.11.8  2011-10-04

  * Back out TCE for ivar/futures. This introduced a space
  leak and will be fixed momentarily.
  * FuturePool: Catch any exception thrown by executor.submit()
  and return as a Future.exception

1.11.7  2011-09-28

  * ivar/future: provide "TCE", per-thread scheduling, and
  promise squashing
  * util-core: add bijection
  * util: Time.now is now measured at nanosecond granularity
    instead of millisecond.
  * futurepool: don't attempt to perform work for Futures
  that are cancelled

1.11.2  2011-08-12

  * offer: use Int.compare instead of subtraction to avoid
  integer overflow in ObjectOrder
  * offer: accept an empty offer list.  this is just Offer.never
  * Eval: persistent compilation targets

1.11.1  2011-08-05

  * offer/broker: fixes, simplifications - gets rid of thunked
  values on sends.  removing the infrastructure required to
  support this led to significant simplification.  lock the
  correct objects for broker events.  don't try to resolve
  identical objects in lock order.
  * offer: java support
  * hashing: actually return 64bit values from the 64bit hash
  functions; tests

1.11.0  2011-08-02

  * Introduce new util-codec module to contain various codecs.
  Primarily so that it can depend on apache commons-codec 1.5
  for base64 improvements over the sun one.

1.10.4  2011-07-29

  * Added TestLogging specs helper to util-logging.
  * Spools: like scala streams, but with deferred tails.

1.10.3  2011-07-27

  * add GZip string encoder

1.10.2  2011-07-18

  * Maintain a map of already visited objects incase someone
  creates a circular of config objects.
  * Make Duration hashable.
  * Promise.on{Success, Failure}: returned chained future.
