Clojure 1.1 is now out:
http://clojure.googlecode.com/files/clojure-1.1.0.zip
It contains several new features and many bug fixes and small enhancements. Many people contributed ideas, patches, docs, testing, feedback etc to this release - it truly was a community effort.
http://www.assembla.com/spaces/clojure/tickets?milestone_id=93750&tickets_report_id=5
See the changes file for more details on the new features:
http://github.com/richhickey/clojure/blob/1.1.x/changes.txt
Many users have been running this code for a while now from the git repository, so I hope it continues the tradition of stability.
Without diminishing the efforts of any others, I'd like to call attention to the following:
Chris Houser has been helping me with patch commits and management of the Google Group. His efforts are invaluable to my staying focused on core issues.
Christophe Grand got his head around the transient mechanism and implemented it for several of the data structures, in addition to pursuing some of my more speculative ideas (with great success). This was a big help to me.
Tom Faulhaber has done a terrific job moving the API docs to a much better automated system hosted in the github repo:
http://richhickey.github.com/clojure/
To them, and everyone involved in the project - many thanks!
Rich
Thursday, December 31, 2009
Friday, October 16, 2009
Clojure is Two!
It's hard to believe that another year has passed since I first released Clojure, now 2 years ago!
As with the first year, it's been a thrilling ride, with phenomenal growth. Some highlights (in no particular order, and omitting much, I'm sure):
- The release of Clojure 1.0, and many happy users of this stable version
- New features slated for 1.1
- Chunked seqs
- Transients
- test in core
- many fixes and enhancements
- New features underway for post 1.1
- Clojure-in-Clojure
- Parallel algorithms based upon latest ForkJoin
- Stu Halloway's terrific book, and more books on the way
- Peepcode's screencast
- A viable CLR port, thanks to David Miller
- Lots of libraries, some with their own user groups
- Great growth in contrib
- Ever improving tools and IDE support
- At least five-fold increase in users and contributors (22,000+ messages from 2600+ list members, 90+ registered contributors)
- Talks I've given at ILC, QCon, JavaOne, Microsoft, JVM Language Summit, JAOO
- Many talks about Clojure given by others
- Clojure user groups springing up around the world
- Success stories from real-world applications
- Upcoming courses
It is clear that Clojure is taking off, and I attribute that to the fantastic community that has sprung up around it. Everyone continues to be supportive and friendly, and that matters quite a bit to newcomers who need help. It was great to hop on the #clojure irc this morning to find old hands chouser, cgrand and 170 others chatting away.
It takes much more than just the core language to make a language successful, and I want to thank everyone for your continued effort, support, suggestions, donations and patches. You are what makes Clojure great - find some cake and celebrate!
Rich
Monday, May 4, 2009
Clojure 1.0
After a sustained period of API stability and minimal bug reports, I'm happy to announce the release of Clojure 1.0!
http://clojure.googlecode.com/files/clojure_1.0.0.zip
Numbered releases will enable people to consume a stable version of Clojure and move to bugfix-only incremental versions while preserving API stability, and to consume libraries designed to work with specific versions. Providing the bugfix-only revisions depends upon the community to submit patches for the release branch as well as the trunk.
Clojure represents several years of effort on my part, but has also been shaped profoundly by the community in the 18 months since its release to the public. I can't thank everyone enough for your contributions of ideas, bug reports, suggestions, tests, tools, documentation and code - patches and enhancements. Clojure wouldn't be where it is today without its community and all of your efforts.
Of course, there is more to do. Many good ideas have been suggested in the discussions preceding this release that were best put off for 1.1. Now with the release we can pursue them, and many others:
http://clojure.org/todo
I want to give special thanks to those who have made donations - they really help! I did the core work on Clojure during a self-funded sabbatical that has run its course (i.e. through my savings :) - donations help fund the future.
Clojure 1.0 is a milestone of achievement, but it also represents a beginning. With 1.0, Stuart's book, the burgeoning set of libraries in and outside of contrib, and the large, friendly community, Clojure is poised to enter a period of increased adoption and application in many domains.
Here's to the future!
Rich
http://clojure.googlecode.com/files/clojure_1.0.0.zip
Numbered releases will enable people to consume a stable version of Clojure and move to bugfix-only incremental versions while preserving API stability, and to consume libraries designed to work with specific versions. Providing the bugfix-only revisions depends upon the community to submit patches for the release branch as well as the trunk.
Clojure represents several years of effort on my part, but has also been shaped profoundly by the community in the 18 months since its release to the public. I can't thank everyone enough for your contributions of ideas, bug reports, suggestions, tests, tools, documentation and code - patches and enhancements. Clojure wouldn't be where it is today without its community and all of your efforts.
Of course, there is more to do. Many good ideas have been suggested in the discussions preceding this release that were best put off for 1.1. Now with the release we can pursue them, and many others:
http://clojure.org/todo
I want to give special thanks to those who have made donations - they really help! I did the core work on Clojure during a self-funded sabbatical that has run its course (i.e. through my savings :) - donations help fund the future.
Clojure 1.0 is a milestone of achievement, but it also represents a beginning. With 1.0, Stuart's book, the burgeoning set of libraries in and outside of contrib, and the large, friendly community, Clojure is poised to enter a period of increased adoption and application in many domains.
Here's to the future!
Rich
Thursday, December 18, 2008
20081217 Release
I've cut a new release, 20081217, which is available from Google Code:
http://clojure.googlecode.com/files/clojure_20081217.zip
It reflects the many enhancements made since the last release:
and many more fixes and enhancements:
http://code.google.com/p/clojure/source/list
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:
http://code.google.com/p/clojure/issues/list?can=2&q=priority:High
Patches welcome from any registered contributors.
Thanks again for all of your support and feedback!
Rich
http://clojure.googlecode.com/files/clojure_20081217.zip
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:
http://code.google.com/p/clojure/source/list
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:
http://code.google.com/p/clojure/issues/list?can=2&q=priority:High
Patches welcome from any registered contributors.
Thanks again for all of your support and feedback!
Rich
Wednesday, October 1, 2008
Clojure at Boston Lisp Meeting videos
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.
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.
2008, 6pm at MIT.
Details here:
http://fare.livejournal.com/134108.html
If you are in the area please feel free to join us!
Subscribe to:
Posts (Atom)