Oh that's very interresting, so in some way you *are* also decoupling ClojureScript backend from it's parse and analysis components ! But doing so in a separate project, and in a more ambitious form than what i proposed in my application.
Maybe there is a possibility of pairing the projects ? It would be nice to have David Nolen feedback about that. Anyway, i'm gonna spend some more time studying your CinC code, and i will probably get back to you with numerous questions :) If you have any comments or corrections that you'd think may be nice for the GSOC applications, i'd be very happy ! On Wednesday, April 4, 2012 2:52:16 PM UTC+2, Aaron Cohen wrote: > > 2012/4/4 Raphaël AMIARD: > > Hi Aaron ! > > > > Those application are intended for submission on the google summer of > code > > site. I think both Clojure developer and google will eventually get them > if > > i understood the system right. > > > > Thank you very much for the editing help proposition, it would be > terribly > > helpful, since i'm not used to write long prose in english :) The > markdown > > source for the applications is disponible on my github pages repository. > A > > lot of the text is shared between the two applications. > > > > I'm gonna look more seriously into the ClojureScript to gambit scheme > > compiler, but from a preliminary look, it seems like there is mostly the > > emit function/methods changing, like i thought. It would be interresting > to > > modularize the backend in clojurescript, and then modify clojure-scheme > to > > fit the new modular backend scheme. > > > > I have more trouble understanding the CinC project. Is it an attempt to > port > > the Clojure java compiler to clojure ? I'm gonna look at the code more > > closely this afternoon. > > Yes, one way of looking at CinC would be as porting the clojure java > compiler to be a "backend" to the clojurescript compiler. I started by > extracting the analyzer from clojurescript and removing several > assumptions it was making about cljs. I then moved the compiler into > clojure.java.compiler and started porting over the java compiler to > the same multimethod framework. Outputting java requires more type > information than outputting javascript, that's all calculated by > walking the ast in clojure.java.compiler/ast.clj > > Eventually (that's such a loaded word, it's very dependent on the > amount of time I have to work on it), once I finish the "java" backend > I'd like to add back the javascript one. In my scheme it would end up > somewhere like "clojure.js.compiler" and basically just be the emit > multimethods from cljs moved. > > My todos: > 1) Finish porting over the remaining special forms (I have try/catch > mostly working locally, just need to finish it and push it out) > 2) Verify that I can compile core.clj "from nothing". Currently I'm > cheating by just copying the defs from the bootstrap compiler, the > target compiler should be able to build all its functionality just by > compiling core.clj just like the current one does > 3*) Move protocols "to the bottom". There are a few places where > I've kept the assumptions of the current compiler about how FNs extend > abstract classes using inheritance. It would be nice to be more like > clojurescript here, only using protocols and deftype rather than > Interfaces and inheritance. > 4*) Write nice deftype based implementations of the persistent > datastructures. This is probably a worthy GSoC task of its own and it > would help clojurescript even without my project > 5*) Add clojurescript back as target of the CinC compiler. > 6*) It would also be neat to look at some of the other compilers > that have been popping up (rpython, scheme) and see if they would work > as CinC backends > > -- 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