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.