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.

Reply via email to