ANN: ClojureScript 0.0-2014 - source maps, incremental compilation, and internal changes

228 views
Skip to first unread message

David Nolen

unread,
Nov 6, 2013, 3:09:09 PM11/6/13
to clojure, clojur...@googlegroups.com
ClojureScript, the Clojure compiler that emits JavaScript source code.


New release version: 0.0-2014

Leiningen dependency information:

    [org.clojure/clojurescript "0.0-2014"]

There are a number of significant enhancements in this
release. We finally have relative source maps! This should be big
for people integrating ClojureScript with existing web
based workflows.

Under the hood Chas Emerick has improved how the analyzer works making
it thread safe. This make the compiler considerably more robust and
eliminates some race conditions in the browser REPL support.

Incremental compilation is enhanced both with and without source
maps. In particular we now tag ClojureScript compiled JavaScript files
with the version of the compiler used - this should make transitioning
to a new version of the compiler considerably less frustrating - stale
files will get compiled.

For those people using the compiler internals directly you will likely
encounter breakage. If anyone feels inclined to outline a more stable
interface to internals please get involved in leading an incremental
process towards a stable and flexible API for tool builders.

Enhancements:
* relative source map paths, all original sources will be copied to
  :ouput-dir this should make integrating with web workflow much simpler.
* runtime obtainable compiler version number, *clojurescript-version* now
  available at runtime as a string

Bug fixes:
* CLJS-643: make the ClojureScript compiler (more) idempotent
* CLJS-662: CLJS files compiled from JARs get lost from source map
* CLJS-661: (try ... (catch :default e ...) ...)
* CLJS-627: Add warnings on function arity problems
* CLJS-654: Quit repljs on ^D, don't loop on nil
* CLJS-659: tag compiled files with compiler version
* CLJS-642: deftype/record should not emit goog.provide
* CLJS-648: persistent assoc/conj on a transient-created collision node
* CLJS-631: Use ana/namespaces for shadowing vars
* CLJS-641: js* overflow for large inputs
* CLJS-645: parse-ns needs to include 'constants-table as a dep
* CLJS-646: single segment namespaces and reify don't work
* CLJS-521: pass along entire repl environment when loading dependencies

David Nolen

unread,
Nov 6, 2013, 3:24:08 PM11/6/13
to clojure, clojur...@googlegroups.com
Oh, the speed of incremental compilation is now dependent on tools preserving the complier environment information - Chas Emerick should be cutting a release of lein-cljsbuild that does this when ClojureScript 0.0-2014 hits Maven Central.

Alan Moore

unread,
Nov 7, 2013, 9:52:23 AM11/7/13
to clojur...@googlegroups.com, clojure
Just in case it hasn't been mentioned lately... you guys rock!

Thank you *so* much for your hard work on these tools... let me know how I can help.

Alan

Geraldo Lopes de Souza

unread,
Nov 7, 2013, 5:14:18 PM11/7/13
to clojur...@googlegroups.com, clojure
David,

Using relative source maps is not updating .cljs equivalents when the original source is updated. If you delete it'll be created. If you update the .cljs it remains stalled.

Using lein-cljsbuild "1.0.0-alpha2".

Regards,

Geraldo

David Nolen

unread,
Nov 8, 2013, 11:46:03 AM11/8/13
to clojur...@googlegroups.com, clojure
Thanks for the report, fixed in 0.0-2024.


--
Note that posts from new members are moderated - please be patient with your first post.
---
You received this message because you are subscribed to the Google Groups "ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojurescrip...@googlegroups.com.
To post to this group, send email to clojur...@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Geraldo Lopes de Souza

unread,
Nov 8, 2013, 6:03:18 PM11/8/13
to clojur...@googlegroups.com, clojure
Thank you David!
Reply all
Reply to author
Forward
0 new messages