Taken directly from core.clj from Clojure's current master.
The version of #'into introduced by this commit is basically the same as Clojure's #'into, with instance? replaced by satisfies? and protocol methods used directly rather than the user-facing wrapping functions.
This commit splits the ITransientAssociative protocol into ITransientAssociative and ITransientMap (the former containing -assoc!, the latter -dissoc!) and introduces ITransientVector (-assoc-n!, -pop!). cljs.core/pop! is introduced. TransientHashMap now implements ITransientMap. PersistentVector nodes are now instances of a VectorNode type (for convenience of storing the "editable" marker). cljs.core.PersistentVector/fromArray now uses a transient vector internally. PersistentVector now uses bit-shift-right-zero-fill where Clojure's implementation uses >>>. The array-copy and array-copy-downward functions have been moved to the js primitives section of core.cljs.
A missing ctor argument is supplied in tree-map-append, missing protocol method and .toString implementations are supplied in PTM- and PHM-related auxiliary types.
…e) form. Simplifies interop with many JS APIs, macros like 'doto' becomes more useful.
cljs.core/js-obj is now backed by a compiler macro emitting JS literals and uses goog.object/create in higher-order scenarios with more than 3 key-value pairs.
…xtend Cons to ICounted.
…oke browser REPL.