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.