# vim:ts=4:sts=4:sw=4:et:tw=60

0.3.2
 - Synchronized Q dependency for bug fix to thenable
   assimilation.

0.3.1
 - Added support for RequireJS.
 - Stopped depending on Q to provide a shim for
   Array.prototype.reduce since that shim added an
   enumerable property in older engines.

0.1.3
 - Added Array.isArray shim.
 - Fixed deep and shallow such as to only consolidate owned
   properties.

0.1.2
 - Altered deep and shallow to modify deep promises in-place
   instead of creating new objects.  This should reduce some
   churn and make certain use-cases shorter.  Now operates
   on all enumerable keys instead of merely those that are
   owned.  The consolidate function shrank considerably by
   conflating the cases for Arrays and Objects.

0.1.1
 - Added Lazy constructor for wrapping promises for objects
   that eventually resolve to known types.  The wrapped
   promise object is both a promise and a proxy for all of
   the known methods for the eventual object, where each
   of these methods always returns a promise.

============================================================
Broken off of the Q Library
============================================================

0.4.0 - BACKWARD INCOMPATIBLE*
 - *Removed the utility modules. NPM and Node no longer
   expose any module except the main module.  These have
   been moved and merged into the "qq" package.
 - *In a non-CommonJS browser, q.js can be used as a script.
   It now creates a Q global variable.
 - Fixed thenable assimilation.
 - Fixed some issues with asap, when it resolves to
   undefined, or throws an exception.

0.3.0 - BACKWARD-INCOMPATIBLE
 - The `post` method has been reverted to its original
   signature, as provided in Tyler Close's `ref_send` API.
   That is, `post` accepts two arguments, the second of
   which is an arbitrary object, but usually invocation
   arguments as an `Array`.  To provide variadic arguments
   to `post`, there is a new `invoke` function that posts
   the variadic arguments to the value given in the first
   argument.
 - The `defined` method has been moved from `q` to `q/util`
   since it gets no use in practice but is still
   theoretically useful.
 - The `Promise` constructor has been renamed to
   `makePromise` to be consistent with the convention that
   functions that do not require the `new` keyword to be
   used as constructors have camelCase names.
 - The `isResolved` function has been renamed to
   `isFulfilled`.  There is a new `isResolved` function that
   indicates whether a value is not a promise or, if it is a
   promise, whether it has been either fulfilled or
   rejected.  The code has been revised to reflect this
   nuance in terminology.

0.2.10
 - Added `join` to `"q/util"` for variadically joining
   multiple promises.

0.2.9
 - The future-compatible `invoke` method has been added,
   to replace `post`, since `post` will become backward-
   incompatible in the next major release.
 - Exceptions thrown in the callbacks of a `when` call are
   now emitted to Node's `"uncaughtException"` `process`
   event in addition to being returned as a rejection reason.

0.2.8
 - Exceptions thrown in the callbacks of a `when` call
   are now consumed, warned, and transformed into
   rejections of the promise returned by `when`.

0.2.7
 - Fixed a minor bug in thenable assimilation, regressed
   because of the change in the forwarding protocol.
 - Fixed behavior of "q/util" `deep` method on dates and
   other primitives. Github issue #11.

0.2.6
 - Thenables (objects with a "then" method) are accepted
   and provided, bringing this implementation of Q
   into conformance with Promises/A, B, and D.
 - Added `makePromise`, to replace the `Promise` function
   eventually.
 - Rejections are now also duck-typed. A rejection is a
   promise with a valueOf method that returns a rejection
   descriptor. A rejection descriptor has a
   "promiseRejected" property equal to "true" and a
   "reason" property corresponding to the rejection reason.
 - Altered the `makePromise` API such that the `fallback`
   method no longer receives a superfluous `resolved` method
   after the `operator`.  The fallback method is responsible
   only for returning a resolution.  This breaks an
   undocumented API, so third-party API's depending on the
   previous undocumented behavior may break.

0.2.5
 - Changed promises into a duck-type such that multiple
   instances of the Q module can exchange promise objects.
   A promise is now defined as "an object that implements the
   `promiseSend(op, resolved, ...)` method and `valueOf`".
 - Exceptions in promises are now captured and returned
   as rejections.

0.2.4
 - Fixed bug in `ref` that prevented `del` messages from
   being received (gozala)
 - Fixed a conflict with FireFox 4; constructor property
   is now read-only.

0.2.3
 - Added `keys` message to promises and to the promise API.

0.2.2
 - Added boilerplate to `q/queue` and `q/util`.
 - Fixed missing dependency to `q/queue`.

0.2.1
 - The `resolve` and `reject` methods of `defer` objects now
   return the resolution promise for convenience.
 - Added `q/util`, which provides `step`, `delay`, `shallow`,
   `deep`, and three reduction orders.
 - Added `q/queue` module for a promise `Queue`.
 - Added `q-comm` to the list of compatible libraries.
 - Deprecated `defined` from `q`, with intent to move it to
   `q/util`.

0.2.0 - BACKWARD INCOMPATIBLE
 - Changed post(ref, name, args) to variadic
   post(ref, name, ...args). BACKWARD INCOMPATIBLE
 - Added a def(value) method to annotate an object as being
   necessarily a local value that cannot be serialized, such
   that inter-process/worker/vat promise communication
   libraries will send messages to it, but never send it
   back.
 - Added a send(value, op, ...args) method to the public API, for
   forwarding messages to a value or promise in a future turn.

0.1.9
 - Added isRejected() for testing whether a value is a rejected
   promise.  isResolved() retains the behavior of stating
   that rejected promises are not resolved.

0.1.8
 - Fixed isResolved(null) and isResolved(undefined) [issue #9]
 - Fixed a problem with the Object.create shim

0.1.7
 - shimmed ES5 Object.create in addition to Object.freeze
   for compatibility on non-ES5 engines (gozala)

0.1.6
 - Q.isResolved added
 - promise.valueOf() now returns the value of resolved
   and near values
 - asap retried
 - promises are frozen when possible

0.1.5
 - fixed dependency list for Teleport (gozala)
 - all unit tests now pass (gozala)

0.1.4
 - added support for Teleport as an engine (gozala)
 - simplified and updated methods for getting internal
   print and enqueue functions universally (gozala)

0.1.3
 - fixed erroneous link to the q module in package.json

0.1.2
 - restructured for overlay style package compatibility

0.1.0
 - removed asap because it was broken, probably down to the
   philosophy.

0.0.3
 - removed q-util
 - fixed asap so it returns a value if completed

0.0.2
 - added q-util

0.0.1
 - initial version

