Clear ThreadLocals when no longer needed [CLJ-1125]

Clears transaction and dynamic binding thread locals to prevent memory
leaks when used inside a container. Uses a sentinel frame to prevent
the binding conveyance issues described in CLJ-1299.

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-713 - upgrade ASM to 4.1.

Signed-off-by: Stuart Halloway <stu@cognitect.com>
Add record? via IRecord

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1190 - move clojure.api.API to clojure.java.api.Clojure. add javadoc for clojure.lang, clojure.lang.IFn, clojure.java.api.Clojure. add ant target to generate javadoc for the API.

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1082 - add generic ranged iterator for use by SubVectors and a fallback for cases where it cannot be applied

Signed-off-by: Stuart Halloway <stu@cognitect.com>
use hashcode in macrology of case, to match runtime
hasheq using Murmur3 throughout
make hasheq for java.math.BigIntegers conform with longs when in long range
murmur only at return for ordered colls, sum only op for unordered, expose coll fixhash a la carte. Note map basis is different from Java due to being sum of hashes of map entries, which in turn follow vector
Change clojure.string/trim so it uses same defn of whitespace as other trim fns

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-983 - always update-proxy in proxy-super, regardless of whether call throws

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1176 - source throws error when *read-eval* is :unknown

Signed-off-by: Stuart Halloway <stu@cognitect.com>
Improves RestFn and ArraySeq perf

Eliminates a call to java.lang.Class.getComponentType, since the
result will always Object.class and that makes downstream uses nops.

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1200: Remove all vestiges of primitive array support from ArraySeq and oa field. Also add the inexplicably missing ArraySeq_short short[] variant.

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1318 - add support for destructuring namespaced keys

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1304: Fix minor doc/comment typos at some places.

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1338 - make Murmur3 public

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1328: Make several Clojure tests independent of hash function

Signed-off-by: Stuart Halloway <stu@cognitect.com>
Test exception propagation out of r/fold CLJ-1058

Signed-off-by: Stuart Halloway <stu@cognitect.com>
Allow Exceptions to propagate out of fold tasks CLJ-1058

Before this change, an java.lang.Exception thrown while processing by a
single task is caught and ignored. Infinite recursion comes from falling
out of the "if(tasks.size() == 1)" block into the following code that
splits multiple tasks.

This change adds a call to Util.sneakyThrow(e) in the catch block.

Demonstration of the problem, from Tom Jack:

user> (require '[clojure.core.reducers :as r])
nil
user> (r/fold (fn ([]) ([ret k v] (+ 3 "foo") ret))
              (into {} (map (juxt identity identity) (range 10000))))
StackOverflowError   clojure.lang.Numbers.add (Numbers.java:126)

Signed-off-by: Stuart Halloway <stu@cognitect.com>