+1 to everything Dom Kiva-Meyer said.
On Fri, Feb 14, 2014 at 2:13 PM, Andrey Antukh <n...@niwi.be> wrote: > Awesome! Thanks! > > > 2014-02-14 21:47 GMT+01:00 Daniel <doubleagen...@gmail.com>: > > Thanks to everyone involved! >> >> >> On Friday, February 14, 2014 1:04:09 PM UTC-6, Alex Miller wrote: >>> >>> Clojure 1.6.0-beta1 is now available. >>> >>> Try it via >>> - Download: http://central.maven.org/maven2/org/clojure/ >>> clojure/1.6.0-beta1 >>> - Leiningen: [org.clojure/clojure "1.6.0-beta1"] >>> >>> Highlights below or see the full change log here: >>> https://github.com/clojure/clojure/blob/master/changes.md >>> >>> We expect Clojure 1.6.0-beta1 to be close to a release candidate; no >>> other big changes are planned. Please give us your feedback and final >>> issues if you find them so we can do the final release! >>> >>> Clojure 1.6.0-beta1 has the following changes from 1.5.1: >>> >>> 1) 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) The following features are no longer marked "Alpha" in Clojure: >>> >>> * Watches - add-watch, remove-watch >>> * Transients - transient, persistent!, conj!, assoc!, dissoc!, pop!, >>> disj! >>> * Exception data - ex-info, ex-data >>> * Promises - promise, deliver >>> * Records - defrecord >>> * Types - deftype >>> * Pretty-print tables - print-table >>> >>> 3) The clojure.java.api package provides a minimal interface to >>> bootstrap >>> Clojure access from other JVM languages. Example: >>> >>> IFn map = Clojure.var("clojure.core", "map"); >>> IFn inc = Clojure.var("clojure.core", "inc"); >>> map.invoke(inc, Clojure.read("[1 2 3]")); >>> >>> 4) Map destructuring extended to support namespaced keys. [CLJ-1318] >>> >>> In the past, map destructuring with :keys and :syms would not work >>> with maps containing namespaced keys or symbols. The :keys and :syms >>> forms have been updated to allow them to match namespaced keys and >>> bind to a local variable based on the name. >>> >>> Examples: >>> >>> (let [m {:x/a 1, :y/b 2} >>> {:keys [x/a y/b]} m] >>> (+ a b)) >>> >>> (let [m {'x/a 1, 'y/b 2} >>> {:syms [x/a y/b]} m] >>> (+ a b)) >>> >>> Additionally, the :keys form can now take keywords instead of symbols. >>> This provides support specifically for auto-resolved keywords: >>> >>> (let [m {::x 1} >>> {:keys [::x]} m] >>> x) >>> >>> 5) New "some" operations >>> >>> Many conditional functions rely on logical truth (where "falsey" >>> values are nil or false). Sometimes it is useful to have functions >>> that rely on "not nilness" instead. These functions have been added to >>> support these cases [CLJ-1343]: >>> >>> * some? - same as (not (nil? x)) >>> * if-some - like if-let, but checks (not (nil? test)) instead of test >>> * when-some - like when-let, but checks (not (nil? test)) instead of test >>> >>> 6) Hashing overhaul >>> >>> The Clojure hash algorithms have changed for many primitives and >>> collections. >>> Read the changelog and http://clojure.org/data_structures#hash for more >>> detail >>> and if you are building external collections. >>> >>> In general, this change creates better hash codes (better bit >>> dispersion, fewer >>> collisions) to improve performance of hashed collections (maps and >>> sets). >>> *NOTE:* One side effect may be that code currently relying on the >>> arbitrary order >>> of hashed elements in a collection (tests for example) may need to be >>> fixed. >>> >>> 7) Other new things >>> >>> * unsigned-bit-shift-right - Java's >>> >>> * clojure.test/test-vars - run a set of tests with fixtures >>> >>> 8) Printing enhancements >>> >>> * [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. >>> >>> 9) Error messages >>> >>> * [CLJ-1248](http://dev.clojure.org/jira/browse/CLJ-1248) >>> Print type information in reflection messages to help diagnose >>> problem. >>> * [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 >>> definitions. >>> * [CLJ-1102](http://dev.clojure.org/jira/browse/CLJ-1102) >>> Better handling of exceptions with empty stack traces. >>> * [CLJ-939](http://dev.clojure.org/jira/browse/CLJ-939) >>> Exceptions thrown in the top level ns form are reported without file >>> or line number. >>> >>> 10) 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. >>> * [CLJ-1304](http://dev.clojure.org/jira/browse/CLJ-1304) >>> Fix minor typos in documentation and comments >>> * [CLJ-1302](http://dev.clojure.org/jira/browse/CLJ-1302) >>> Mention that keys and vals order are consistent with seq order >>> >>> 11) Performance >>> >>> * [CLJ-858](http://dev.clojure.org/jira/browse/CLJ-858) >>> Improve speed of STM by removing System.currentTimeMillis. >>> * [CLJ-669](http://dev.clojure.org/jira/browse/CLJ-669) >>> clojure.java.io/do-copy: use java.nio for Files >>> * [commit](https://github.com/clojure/clojure/commit/ >>> 0b73494c3c855e54b1da591eeb687f24f608f346) >>> Reduce overhead of protocol callsites by removing unneeded generated >>> cache fields. >>> >>> 12) Other enhancements >>> >>> * [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. >>> * [CLJ-1105](http://dev.clojure.org/jira/browse/CLJ-1105) >>> clojure.walk now supports records. >>> * [CLJ-949](http://dev.clojure.org/jira/browse/CLJ-949) >>> Removed all unnecessary cases of sneakyThrow. >>> * [CLJ-1238](http://dev.clojure.org/jira/browse/CLJ-1238) >>> Allow EdnReader to read foo// (matches LispReader behavior). >>> * [CLJ-1264](http://dev.clojure.org/jira/browse/CLJ-1264) >>> Remove uses of _ as a var in the Java code (causes warning in Java 8). >>> * [CLJ-394](http://dev.clojure.org/jira/browse/CLJ-394) >>> Add record? predicate. >>> * [CLJ-1200](http://dev.clojure.org/jira/browse/CLJ-1200) >>> ArraySeq dead code cleanup, ArraySeq_short support added. >>> * [CLJ-1331](http://dev.clojure.org/jira/browse/CLJ-1331) >>> Primitive vectors should implement hasheq and use new hash algorithm >>> >>> 13) 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-1184](http://dev.clojure.org/jira/browse/CLJ-1184) >>> Evaling #{do ...} or [do ...] is treated as do special form. >>> * [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. >>> * [CLJ-1285](http://dev.clojure.org/jira/browse/CLJ-1285) >>> Data structure invariants are violated after persistent operations when >>> collision node created by transients. >>> * [CLJ-1222](http://dev.clojure.org/jira/browse/CLJ-1222) >>> Multiplication overflow issues around Long/MIN_VALUE >>> * [CLJ-1118](http://dev.clojure.org/jira/browse/CLJ-1118) >>> Inconsistent numeric comparison semantics between BigDecimals and >>> other numerics >>> * [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-1082](http://dev.clojure.org/jira/browse/CLJ-1082) >>> Subvecs of primitve vectors cannot be reduced >>> * [CLJ-1301](http://dev.clojure.org/jira/browse/CLJ-1301) >>> Case expressions use a mixture of hashCode and hasheq, potentially >>> leading to missed case matches when these differ. >>> * [CLJ-983](http://dev.clojure.org/jira/browse/CLJ-983) >>> proxy-super does not restore original binding if call throws exception >>> * [CLJ-1176](http://dev.clojure.org/jira/browse/CLJ-1176) >>> clojure.repl/source errors when *read-eval* bound to :unknown >>> * [CLJ-935](http://dev.clojure.org/jira/browse/CLJ-935) >>> clojure.string/trim uses different definition of whitespace than >>> triml and trimr >>> * [CLJ-935](http://dev.clojure.org/jira/browse/CLJ-935) >>> StackOverflowError on exception in reducef for PersistentHashMap >>> fold >>> * [CLJ-1328](http://dev.clojure.org/jira/browse/CLJ-1328) >>> Fix some tests in the Clojure test suite to make their names unique >>> and independent of hashing order >>> * [CLJ-1328](http://dev.clojure.org/jira/browse/CLJ-1328) >>> Empty primitive vectors throw NPE on .equals with non-vector >>> sequential types >>> >>> Happy Valentine's Day! >>> >>> Alex Miller >>> >>> -- >> 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. >> > > > > -- > Andrey Antukh - Андрей Антух - <andrei.anto...@kaleidos.net> / < > n...@niwi.be> > http://www.niwi.be <http://www.niwi.be/page/about/> > https://github.com/niwibe > > -- > 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. > -- “One of the main causes of the fall of the Roman Empire was that–lacking zero–they had no way to indicate successful termination of their C programs.” (Robert Firth) -- 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.