2012/4/4 Raphaël AMIARD <raph.ami...@gmail.com>: > 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