Given the amazing support shown by the clojure community, Ambrose's 
campaign has already raised its goal.
As some of you might have noticed, yesterday Ambrose revealed the first 
stretch goal of his campaign and that is helping me continue develop CinC 
and I want to spend some time explaining what CinC is and why it matters 
for the evolution of core.typed.

First, here's the video Ambrose posted to announce the stretch goal: 
http://www.youtube.com/watch?v=hiKBP8f4dPw

What is CinC?
CinC is a project I've been working on for the past three months as part of 
the GSoC program, it's a port of the clojure compiler/analyzer to clojure 
itself.
It's not simply a 1:1 port, I've based the analyzer on the clojurescript 
model, extending it further by making it modular separating all the 
different logical passes and walking over the AST using the children-keys 
approach.
The compiler uses the AST to build a data-representation of the bytecode 
before effectively emitting it.
You can read more about it in my GSoC report post 
https://groups.google.com/forum/#!searchin/clojure/cinc/clojure/cC1yC9zrS1s/W0ducjm0uQYJ

Why does it matter to core.typed?
While CinC being a cool project in itself (I think!) I want to explain why 
Ambrose chose to try and fund further development of CinC in its core.typed 
campaign.
core.typed uses the AST returned by the analyzer to type-check the code; 
this is really easy to do for the clojurescript-end because the AST 
returned by the clojurescript analyzer is in the form of a clojure 
data-structure -- the clojure analyzer however returns java objects which 
make AST walking really hard.
For core.typed, Ambrose created jvm.tools.analyzer, a library that takes 
the AST returned by the clojure compiler and transforms it in a 
data-structure similar to that returned by clojurescript.
The problem with this approach is that the analyze phase is still not 
extensible/hackable, something that core.typed might need in order to 
gather more accurate type informations/do better validation.
On the other hand, CinC's analyzer is written in pure clojure, already 
returning an AST in the clojurescript-way and most importantly, is 
extensible!
CinC however is still a work-in-progress and there are still lots of 
rough-spots, massive performance enhancements to do and possible 
optimizations to be explored.

The purpose of this "extension" in Ambrose's campaign is to help CinC keep 
being developed as something more than just a hobby project, hoping that 
some day it will be mature enough to experiment replacing clojure's 
analyzer as the default analyzer used by core.typed and make core.typed 
even more awesome than it is!


That being said, I want to thank again the clojure community for the 
support shown so far, and Ambrose for being such an awesome person and 
trying to fund other people's library development with his own campaign!

-- 
-- 
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