Tuesday, September 16, 2008

20080916 Release

Added: validators for vars/refs/agents, delay/force, isa-based multimethods and a la carte hierarchies, require/use/load, namespace aliases and many more functions and fixes.

Special thanks to Chas Emerick, Graham Fawcett, Stephen C. Gilardi, Chris Houser and Stuart Sierra for their contributions.

  • fixed resolveIns to resolve alias
  • added lazy parallel pmap
  • fixed nth with not-found arg - when negative index returns not-found
  • fixed withMeta ctor in LazyCons
  • all ns-* fns now take ns designators: either a namespace or a symbol naming one. Patch from Stephen C. Gilardi
  • fixed zip/up
  • modified load to detect and prevent loading a resource while another load of the same resource is pending in the same thread, patch from Stephen C. Gilardi
  • renamed clojure/load to clojure/load-reader
  • added clojure/load-string
  • renamed clojure/load-resources to clojure/load
  • fixed up doc strings accordingly, patch from Stephen C. Gilardi
  • fixed ns/-in-ns resolution in lookupVar
  • added :refer-clojure support to ns, special resolution of ns and in-ns, moved to ns for inspector/parallel/set/xml/zip
  • added many predicates
  • removed static init dependency on Compiler
  • fixed recursive LazyCons by using sentinel other than this
  • Fixed genclass method handling to max of 18 parameters
  • switched to using baseLoader() in loadResourceScript()
  • changed :requires/:uses/:imports in ns macro to :require/:use/:import
  • added get-in, assoc-in, update-in
  • Added require/use/load-resources, contributed by Stephen C. Gilardi. enhanced ns macro to call these
  • added defonce
  • added imports, refers, format, printf, ns
  • improved UnsupportedOperationException message, patch from Chouser
  • removed implicit seq for Iterators and Enumerations, added iterator-seq and enumeration-seq explicit constructors
  • made baseLoader public
  • filter void from isPrimitive test
  • allow bridge methods if reprobing on same sig yields same method
  • added with-in-str
  • use recur in concat$cat
  • seq optimizations
  • changed Delay to be non-fn, added delay? and force, added LazyCons and lazy-seq
  • made UTF-8 default encoding on iostreams *in*, *out*, and in loadFile and loadResource, from cemerick
  • added support for loading scripts from classpath, from cemerick
  • made vectors Comparable
  • added unary support for =, not=, distinct?
  • added multi-arg support for = and not=.
  • Added distinct?
  • made loadResourceScript throw if resource not found, added maybeLoadLoadResourceScript, failIfNotFound flag, based on patch from cemerick.
  • Added overload of RT.var that takes an initial value.
  • made taking the value of a macro an error
  • made empty lists implement java.util.Collection
  • strip path from simple file name in load call from loadResourceScript
  • accept duplicate sigs from multiple interfaces - will map to same method, just jike Java
  • propagate exception type to tag in catch clauses
  • made (class nil) -> nil, instead of NPE
  • added TransactionalHashMap
  • return null on no bestMatch to allow default logic to run
  • changed pom.xml to match latest dir structure
  • unmunge _'s to -'s in throwArity message
  • re-removed checkcast before invokeInterface
  • wrapped non-return try blocks in fn
  • added makeNew virtual ctor, from Chas Emerick
  • added back checkcast before invokevirtual calls
  • switched to using / in loadResourceScript call in generated static init
  • moved clj files into src/clj/
  • updated docs and example, from Chouser
  • added exceptions and errors to default java.lang imports
  • new namespace and class rules for genclass, patch from Chouser
  • added prefer-method
  • fixed argument handling context in eval new
  • removed nil returns from derive/underive base cases
  • fixed :exposes to use getDeclaredField
  • fixed class bug in isa?
  • added isa-based multimethods, a la carte hierarchies
  • added type hints to pr-strs and class? predicate
  • changed Class printing to print only name
  • made syntax-quoted symbols resolve aliases
  • added parallel alias
  • fixed doc typo
  • improved validator docs
  • added validators for vars/refs/agents - an optional second arg for agent and ref, get/set-validator, also shutdown-agents
  • fixed out-of-bounds in toArray(Object [])
  • fixed truncation in double/long/float_array
  • made vectors implement java.util.List and sets implement java.util.Set
  • removed root-level .cljs
  • first cut at namespace aliases, via Graham Fawcett
  • new clj code hierarchy, old still in place
  • fixed loop for multiple scripts
  • added load-file to parallel.clj comment
  • peel off InvocationTargetException in reflective calls, when possible
  • added try around body of analyze
  • allow /s in the namespace part of symbols/keywords
  • put name in error reports for qualified name use
  • wrapped all non-atomic evals in fn
  • added doc for return value of alter and commute
  • changed cpl url
  • made Ref.fn() use get rather than currentVal
  • added ACC_SUPER flag
  • removed support for finalize, as providing stub causes it to exist, with great performance cost
  • allow exceptions to flow out of Script.main
  • made conj accept multiple items
  • fixed loop with destructuring and inter-binding dependencies
  • fixed treatment of catch clauses (saving ret in local) for nested handler
  • made (drop 0 s) return seq of coll, and drop-while similarly
  • added delay
  • added seque
  • added drop-last
  • removed "no box on statement" optimization so pops align
  • added *flush-on-newline*
  • fixed reduce w/init
  • fixed doc on pmin
  • fixed no-arg (sorted-set)
  • added *file*, type hint on *agent*
  • fixed sort-by regression
  • fixed reduce retaining seq
  • added getQueueCount
  • got rid of deep equals on vals
  • added compare, based sorts on compare
  • added \return support for Java \r
  • added notFound optional arg for keywords as fns and maps as fns, and enabled Symbols as fns
  • added nth support for Map.Entry so can destructure seqs of Java maps
  • nth takes an optional not-found value, and destructuring uses nth with a nil not found value for sequential destructuring, nth without not-found value throws exception in all index-out-of-bounds cases including seqs
  • fixed natural join with empty set input
  • fixed fn init local alignment when closed over longs/doubles
  • added support for extra static methods in genclass
  • made set 'gets' return set member, not arg
  • added spaces in genclass for html doc gen
  • added static member access classname/member, work for fields with no parens Math/PI, or static method invocations (Math/sqrt 42)
  • filter line numbers from syntax-quoted form metadata
  • added Java style hex and octal integer literals, as well as arbitrary radix using nRnnnn...
  • made proxy tolerant of ns-qualified method names
  • added proxy-super
  • added *use-context-classloader*, which can be bound to true to cause the thread's context classloader to be the parent of the dynamic classloader used during load
  • cons, lazy-cons call seq on 2nd arg

No comments: