Thursday, December 18, 2008

20081217 Release

I've cut a new release, 20081217, which is available from Google Code:

It reflects the many enhancements made since the last release:
  • AOT Compilation
  • gen-class
  • gen-interface
  • clojure.main
  • proxy performance tweaks
  • move to EPL
  • io! blocks
  • atoms
  • intern, trampoline, while
  • enhanced doto, doseq
  • uniform local bindings
  • print multimethods
  • print-dup
  • maps implement java.util.Map
  • agent watches
  • *1 et al

and many more fixes and enhancements:

This release should facilitate everyone using the same post-AOT API, and brings us closer to the 1.0 release. I'll be going through the docs to bring them up to date. If you are using an old release, please move to this one, as it is what the documentation will reflect moving forward.

There are a few small things marked high priority I'd like to get done for 1.0:

Patches welcome from any registered contributors.

Thanks again for all of your support and feedback!


Wednesday, October 1, 2008

Clojure at Boston Lisp Meeting videos

Clojure at Boston Lisp Meeting videos are now up:

Part 1

Part 2

Note that this talk was for a crowd of experienced Lispers, so may not
be the best intro if you don't know some Lisp already.

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

Sunday, September 7, 2008

Talk at Boston Lisp Meeting, Sept. 29th

I will be speaking at the Boston Lisp Meeting, Monday September 29th
2008, 6pm at MIT.

Details here:

If you are in the area please feel free to join us!


Thursday, June 12, 2008

20080612 Release

Many new features and fixes. Added new primitive number support, host call/return/if optimizations, new use of java.lang.Numbers, new host call syntax, parallel processing api, gen-class api for generating fixed .class files. Full change list in changes.txt.


Feedback welcome as always,