Congratulations Nicola, and thanks for all the hard work - this is a great project!
On 23 September 2013 14:26, Ambrose Bonnaire-Sergeant < abonnaireserge...@gmail.com> wrote: > Excellent work! To hear CinC is a long term project is music to my ears! > > Ambrose > > > On Mon, Sep 23, 2013 at 4:59 AM, Nicola Mometto <brobro...@gmail.com>wrote: > >> >> For the past 3 months I've been working as part of my GSoC project, >> on a port of the clojure compiler and analyzer to clojure. >> >> Tomorrow the GSoC will end, so this is a report of what I've accomplished >> with this project thus far; note that I'm not going to stop working on >> CinC now that the GSoC is over. >> >> First, a link to the project if anybody is interested: >> https://github.com/Bronsa/CinC >> >> What's there? >> The project is made of 2 major components: the analyzer and the emitter. >> >> The analyzer is based heavly on the clojurescript analyzer, I've used >> (successfully) the :children-keys approach to write a generic walker >> over the AST and to implement multiple passes in order to >> annotate the AST with all the information needed in order to compile to >> JVM bytecode. >> It should be noted that this analyzer provides all the information >> collected by the clojure compiler (info on locals-clearing, loop-locals >> invalidation etc) in a much more accessible way, exposing it all as >> fields in a hash-map. >> >> The compiler takes this AST and constructs an AST representing the class >> to be emitted, expressing the byte-code as a data-structure too, and it >> subsequently interprets this AST evaluating the expression. >> >> The `doc` folder contains some further documentation on how the >> analyzer/compiler works, it's not much yet but more is to come. >> >> What's not there yet? >> While `cinc.compiler.jvm.bytecode/eval` is capable of evaluating all of >> clojure special forms, primitive support mostly not in place, and should >> be expected to be broken. >> This means that some expression that need primitive support to work, for >> example `defrecord` will not work. >> >> What's going to happen? >> CinC is a project I wanted to work on for quite some time, and I'm not >> going to abandon it now that the GSoC is over, I have things I want to >> experiment with CinC (and I hope I'm not the only one), my current to-do >> list is: >> >> * get primitive support fully working (including invokePrim) >> * refactor :tag/:cast/:box handling >> * standardize the AST format between CinC, clojurescript and >> jvm.tools.analyzer, David Nolen and Ambrose B.S. are obviously who I'm >> most looking forward to talking to about this, but any opinion will be >> be greatly appreciated. >> * have 2 compile target: one "normal" target that won't do any type >> specialization and emit a dynamic bytecode (mostly for repl >> experimentations), one "optimized" target that will do aggressive >> tag inference and compile to more static code trying to avoid most of >> the runtime reflection. >> * experiment dynamically emitting invokePrim interfaces for primitive >> types other than long or doubles >> >> >> Ideas/feedbacks/contributions are greatly appreciated! >> >> Thanks, >> Nicola >> >> -- >> -- >> 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 >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- > -- > 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 > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.