ClojureScript has long represented symbols and keywords as JavaScript
Strings as a performance optimization around hash maps. However modern
JavaScript engines have shown that following Clojure JVM's design more
closely consistently delivers better performance.

Also the representation of keywords as strings has had an unfortunate
consequence, we modify the String prototype to allow keywords to be called
as functions - this is a serious interop liability.

Sean Grove has done some excellent work that I have further extended in a
branch. In this branch keywords are represented with a deftype. In order to
deliver performance, under advanced optimizations we emit keywords
constants to avoid allocation overheads.

The breaking change is that keywords in ClojureScript cannot support the
identical? property guaranteed by Clojure on the JVM. There is a new
equality check called keyword-identical? that can be used to efficiently
check for keyword equality. defrecords and hash maps have been updated to
use this predicate.

Please try your projects with this branch so we can address any further
issues because of this breaking change.

http://github.com/clojure/clojurescript/compare/keywords

Thanks,
David

-- 
-- 
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.

Reply via email to