Error formatting macro: pagetree: java.lang.NullPointerException

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


ClojureScript was released with optimizations meant to leverage the capabilities of modern JavaScript engines. Initially ClojureScript keywords and symbols were both represented as strings with unicode prefix characters. This was to allow a small map implementation optimized for JavaScript - ObjMap. However JavaScript engines like JavaScriptCore, V8, and SpiderMonkey have advanced considerably in this time and have largely made the ObjMap optimization irrelevant. In fact ObjMap has since been replaced by ArrayMap and ArrayMap has shown better performance than ObjMap on every engine other than Firefox, and Firefox the performance is competitive.

ClojureScript as As an initial step toward the possiblity possibility of self-hosting has we moved symbols into a proper type deftype with metadata support. Keywords however remain a challenge. This is because keywords implement IFn. Currently we support this via monkey patching the native JavaScript String object. This has already shown to wreck havoc with JavaScript library interop. We want a real keyword type to remove this problem but we need to consider our avenues.