P.P.S. I didn't want my post to sound discouraging to a fun experiment, sorry if it did so. I do think, however, that completing Steps 1 and 2 first, would make it much more enjoyable, by moving large amounts of code out of the way.
2014-05-19 2:46 GMT+02:00 Herwig Hochleitner <[email protected]>: > I think cljx is a great tool to paper over subtle differences in the > languages, that two compilers (like clj and cljs) accept, for use in > projects that would like to treat those compilers as black boxes (i.e. > almost all projects). > > A new compiler (one that could compile itself to javascript, hence dubbed > cljs-in-cljs), however, is an opportunity to unify the accepted language, > such that it can target java byte code, javascript, variants thereof, > aswell as other platforms, without the need for an external preprocessor > like cljx. It's very well possible that such a unified implementation will > support feature expressions in the reader and that they will look like cljx > does and if we can get all the CAs, it might even use code from cljx. > > I also think that just doing a straight port of cljs to feature > expressions is the wrong focus for now. Here are a couple of next steps > that seem logical to me: > > - create clojure.tools.emitter.ecmascript from the clojurescript compiler > - update clojurescript to use clojure.tools.analyzer and > clojure.tools.emitter > - extend clojurescript to allow it to emit jvm byte code (from > clojure.tools.analyzer.{jvm,ecmascript}) > - implement clojure.lang in clojure using swaths of cljs.core > > Steps 3 requires a design, that is not present in either clojure or > clojurescript: an explicit model of the (compilation) target platform. > In clojure, this is currently hard coded to a tasty blend of #{load > whatever is on the classpath, emit ns/fns to jvm classes with asm, uniform > ABI at namespace level to allow additive loading}. For clojurescript, > add/substitute #{find macros in dual clj namespace, emit ns/fns to gclosure > packages}. > A compiler aiming to support multiple platforms should make it easy to > switch out or configure any of those. > > For me this raises a pretty hard question: What should the concept of > "self-hosting" mean in a "hosted language" like clojure? > > What do you think of this assessment? > > kind regards > > P.S. I've done some exploratory writing on this in the past: > http://dev.clojure.org/display/~bendlas/Design+for+compilation+units+in+ClojureScript > > > 2014-05-18 21:50 GMT+02:00 Wes Brown <[email protected]>: > > So I've been taking a look at bringing my fork of cljs-in-cljs of to >> modern ClojureScript. >> >> After going through diff logs, the task of bringing kanaka's cljs-in-cljs >> fork up is pretty daunting, especially as one would have to maintain >> separate cljs and cli forks of the same analyzer and compiler duo; this >> explains his comment about compatible changes. >> >> Upon examining the Feature Expressions in Clojure situation, I was >> pondering whether cljs-in-cljs could instead be a modification of the >> Clojurescript code base that uses `clix` to shadow the differences? >> >> However, cljs-in-cljs does understand macros, and this isn't supported by >> `clix`. >> >> I'd be interested in feedbacks and thoughts -- it would be a useful >> exercise to cljx-ify the CLJS compiler and analyzer written in Clojure, >> using some of the changes and code that chouser and kanaka did. >> >> -Wes >> >> -- >> 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 [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/clojurescript. >> > > -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
