Many new features, including anonymous fn reader syntax, functional tree zippers, streamlined documentation and metadata in defn/defmacro, first-class sets and set algebra, proxies that can extend classes, comprehensive in-source documentation, and many new library functions. Not all of the new functionality has documentation in the prose part of the site yet, but the new API doc page should be comprehensive.
There is some renaming/removing in this release:
removed implement, use proxy
renamed set to ref-set
renamed ! to send
renamed select to select-keys
renamed to-set to set
renamed scan to dorun
renamed touch to doall
Thanks to all for your feedback and support!
Rich
Changelist:
added dosync
fixed when-first when empty non-seq coll
setup default bindings for smap before/after
tightened smap range
re-enabled clearing locals on tail calls, but track locals used in catch/finally clauses and avoid clearing them
made FnExpr public
added locals clearing on tail calls
added arg clearing on tail calls
host calls - use subsuming method, if any, rather than first found, when overloaded w/same arity
made Repl load files in 'user ns, changed Repl to serve as better example of hosting Clojure in Java using public APIs
made IFn extend Runnable
stricter overload resolution
accessible macro metadata via *macro-meta*
more type hints in boot.clj
fixed send, send-off docs
(str false) => "false"
got rid of input purge on exception
changed use of ! to send in await, await-for
added if-let, when-let, replace
made distinct lazy
switched to readLine on input purge in Repl exception handler
added newline on EOF
proxy - filter all considered methods in superclass traverse, to avoid implementing method turned final in derived
intern compiled string literals
repl - added System.exit call
renamed ! to send, added send-off, *agent* is currently running agent
fixed bug with invoke >= MAX_POSITIONAL_ARGS
fixed slurp not closing file
fixed build dep of Keyword on AFn, added throwArity to Keyword
prevent nested #()s
on repl exception, put cause message first
prevent take from advancing coll more than n times
improved error message for bad arity
added flush and read-line
fixed bug in ASeq toArray(Object[])
bind source paths when reading boot scripts from jar
switched to Clojure's box from ASM's in proxy in order to handle booleans correctly
proxy - make method set union of declared and public methods in order to catch unimplemented interface methods of abstract classes
new metadata/docstrings
fixed ns prefix on fns - now clojure.fns.
fixed fn name propagation, added clojure.fns. namespace segment prefix on all generated fns
moving to new metadata/docstrings
persistent vector - keep tail out of tree, speeding up cons/pop
added new metadata/docstring handling to defn, type hint to defmethod, begin moving to new metadata/docstrings
made munge public, upped SMAP range to 10000
renamed PersistentHashMap.INode.seq to nodeSeq to avoid override of AMapEntry.seq in Leaf
fixed MapEntry.seq to use AMapEntry.seq
fixed hash-set of empty coll/nil
renamed select select-keys
renamed set to ref-set
renamed to-set to set, returns a set now
added set.clj, set operations and 'relational' algebra
fixed bug with nested try blocks
sets - read/print/compile/metadata, hash-set, sorted-set, disj
starting set support
added EnumerationSeq and support for Enumerations in seq
added SeqEnumeration
added destructuring to loop
added slurp, subs, max-key, min-key
doc reformatting
fixed declared method detection
unified map entry and vector equality and hash
support conj of vector pair onto map
made map entries vectors
proxy support
auto-load xml.clj, zip.clj and proxy.clj from clojure.jar
added (class x), returns getClass
added cast
cast arg to Number in unary +, *
added var?, special-symbol?
changed resolve to return nil if not found
added tree-seq, file-seq, xml-seq
try using getContextClassLoader in implement
try using getContextClassLoader as default
more examples
added zip.clj generic zipper
added symbol support for ->, so (-> x :a) ==> (:a x)
added RT.var() helper, made CLOJURE_NS and CURRENT_NS public
xml - fix for mixed content, extensible parse accepts parser fn
completed docs
allow use of not-yet-existing names qualified with current namespace when internNew
get now returns nil on non-maps
fixed access on helpers, contains? now returns false on non-maps
avoid unread(-1)
more docs
return false consistently on < <= > >= ==
defined dissoc for no keys
fixed refer NPE on non-existent namespace
command line args can follow '--', in Repl and Script
print doc indicates macro status
find-doc sorts names
renamed scan to dorun, touch to doall
support for variadic assoc and dissoc
added re-pattern, print-doc, find-doc
more docs
doc formatting
doc macro
added anonymous fn reader syntax #(), and arg literals %, %1 ,%n %&
added rand, rand-int and defn-
changed prstr to pr-str in assert
fixed self-call in defmulti macro