Clojure 1.6.0-alpha1 is now available. Try it via - Download: http://central.maven.org/maven2/org/clojure/clojure/1.6.0-alpha1/ - Leiningen: [org.clojure/clojure "1.6.0-alpha1"]
A list of tickets included is below. Please note that CLJ-1252 introduces a breaking change such that keywords beginning with a digit are no longer considered valid by the reader. This has caused some failures in java.jdbc and other contrib libs and has already been rolled back for alpha2. Please try it and reply to this post (or email alex.mil...@cognitect.com) with feedback on breakage, performance, or other concerns. # CONTENTS ## 1 Deprecated and Removed Features None. ## 2 New and Improved Features ### 2.1 Java API The clojure.api package provides a minimal interface to bootstrap Clojure access from other JVM languages. It does this by providing: 1. The ability to use Clojure's namespaces to locate an arbitrary var, returning the var's clojure.lang.IFn interface. 2. A convenience method read for reading data using Clojure's edn reader IFns provide complete access to Clojure's APIs. You can also access any other library written in Clojure, after adding either its source or compiled form to the classpath. The public Java API for Clojure consists of the following classes and interfaces: * clojure.api.API * clojure.lang.IFn All other Java classes should be treated as implementation details, and applications should avoid relying on them. To lookup and call a Clojure function: IFn plus = API.var("clojure.core", "+"); plus.invoke(1, 2); Functions in clojure.core are automatically loaded. Other namespaces can be loaded via require: IFn require = API.var("clojure.core", "require"); require.invoke(API.read("clojure.set")); IFns can be passed to higher order functions, e.g. the example below passes plus to read: IFn map = API.var("clojure.core", "map"); IFn inc = API.var("clojure.core", "inc"); map.invoke(inc, API.read("[1 2 3]")); Most IFns in Clojure refer to functions. A few, however, refer to non-function data values. To access these, use deref instead of fn: IFn printLength = API.var("clojure.core", "*print-length*"); API.var("clojure.core", "deref").invoke(printLength); ### 2.2 JDK and Dependency Version Updates Clojure now builds with Java SE 1.6 and emits bytecode requiring Java SE 1.6 instead of Java SE 1.5. [CLJ-1268] ### 2.3 Printing * [CLJ-908](http://dev.clojure.org/jira/browse/CLJ-908) Print metadata for functions when *print-meta* is true and remove errant space at beginning. * [CLJ-937](http://dev.clojure.org/jira/browse/CLJ-937) pprint cl-format now supports E, F, and G formats for ratios. ### 2.4 Other improvements * [CLJ-908](http://dev.clojure.org/jira/browse/CLJ-908) Make *default-data-reader-fn* set!-able in REPL, similar to *data-readers*. * [CLJ-783](http://dev.clojure.org/jira/browse/CLJ-783) Make clojure.inspector/inspect-tree work on sets. * [CLJ-896](http://dev.clojure.org/jira/browse/CLJ-896) Make browse-url aware of xdg-open. * [CLJ-1160](http://dev.clojure.org/jira/browse/CLJ-1160) Fix clojure.core.reducers/mapcat does not stop on reduced? values. * [CLJ-1121](http://dev.clojure.org/jira/browse/CLJ-1121) -> and ->> have been rewritten to work with a broader set of macros. ## 3 Improved error messages * [CLJ-1099](http://dev.clojure.org/jira/browse/CLJ-1099) If non-seq passed where seq is needed, error message now is an ExceptionInfo with the instance value, retrievable via ex-data. * [CLJ-1083](http://dev.clojure.org/jira/browse/CLJ-1083) Fix error message reporting for "munged" function names (like a->b). * [CLJ-1056](http://dev.clojure.org/jira/browse/CLJ-1056) Handle more cases and improve error message for errors in defprotocol definnitions. * [CLJ-1102](http://dev.clojure.org/jira/browse/CLJ-1102) Better handling of exceptions with empty stack traces. ## 4 Improved documentation strings * [CLJ-1164](http://dev.clojure.org/jira/browse/CLJ-1164) Fix typos in clojure.instant/validated and other internal instant functions. * [CLJ-1143](http://dev.clojure.org/jira/browse/CLJ-1143) Correct doc string for ns macro. * [CLJ-196](http://dev.clojure.org/jira/browse/CLJ-196) Clarify value of *file* is undefined in the REPL. * [CLJ-1228](http://dev.clojure.org/jira/browse/CLJ-1228) Fix a number of spelling errors in namespace and doc strings. * [CLJ-835](http://dev.clojure.org/jira/browse/CLJ-835) Update defmulti doc to clarify expectations for hierarchy argument. ## 5 Bug Fixes * [CLJ-1018](http://dev.clojure.org/jira/browse/CLJ-1018) Make range consistently return () with a step of 0. * [CLJ-863](http://dev.clojure.org/jira/browse/CLJ-863) Make interleave return () on 0 args and identity on 1 args. * [CLJ-1072](http://dev.clojure.org/jira/browse/CLJ-1072) Update internal usages of the old metadata reader syntax to new syntax. * [CLJ-1193](http://dev.clojure.org/jira/browse/CLJ-1193) Make bigint and biginteger functions work on double values outside long range. * [CLJ-1154](http://dev.clojure.org/jira/browse/CLJ-1154) Make Compile.java flush but not close stdout so errors can be reported. * [CLJ-1161](http://dev.clojure.org/jira/browse/CLJ-1161) Remove bad version.properties from sources jar. * [CLJ-1175](http://dev.clojure.org/jira/browse/CLJ-1175) Fix invalid behavior of Delay/deref if an exception is thrown - exception will now be rethrown on subsequent calls and not enter a corrupted state. * [CLJ-1171](http://dev.clojure.org/jira/browse/CLJ-1171) Fix several issues with instance? to make it consistent when used with apply. * [CLJ-1202](http://dev.clojure.org/jira/browse/CLJ-1202) Protocol fns with dashes may get incorrectly compiled into field accesses. * [CLJ-850](http://dev.clojure.org/jira/browse/CLJ-850) Add check to emit invokePrim with return type of double or long if type-hinted. * [CLJ-1177](http://dev.clojure.org/jira/browse/CLJ-1177) clojure.java.io URL to File coercion corrupts path containing UTF-8 characters. * [CLJ-1234](http://dev.clojure.org/jira/browse/CLJ-1234) Accept whitespace in Record and Type reader forms (similar to data literals). * [CLJ-1233](http://dev.clojure.org/jira/browse/CLJ-1233) Allow ** as a valid symbol name without triggering dynamic warnings. * [CLJ-1246](http://dev.clojure.org/jira/browse/CLJ-1246) Add support to clojure.reflect for classes with annotations. * [CLJ-1252](http://dev.clojure.org/jira/browse/CLJ-1252) Clojure reader incorrectly accepts keywords that start with a number. * [CLJ-1184](http://dev.clojure.org/jira/browse/CLJ-1184) Evaling #{do ...} or [do ...] is treated as do special form. * [CLJ-1125](http://dev.clojure.org/jira/browse/CLJ-1125) Clojure can leak memory in a servlet container when using dynamic bindings or STM transactions. * [CLJ-1090](http://dev.clojure.org/jira/browse/CLJ-1090) Indirect function calls through Var instances fail to clear locals. * [CLJ-1076](http://dev.clojure.org/jira/browse/CLJ-1076) pprint tests fail on Windows, expecting \n. * [CLJ-766](http://dev.clojure.org/jira/browse/CLJ-766) Make into-array work consistently with short-array and byte-array on bigger types. ## 6 Compatibility Notes * [CLJ-1252] - The reader no longer accepts keyword literals beginning with a digit. NOTE: this is a breaking change and has already been rolled back for alpha2. -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.