I've been wondering lately about getting Clojure to compile to native code, 
and so I've been doing some looking around.

There are a few projects that are on the right track, such as TinyClojure 
<https://github.com/WillDetlor/TinyClojure> and Ferret 
<http://nakkaya.com/2011/06/29/ferret-an-experimental-clojure-compiler/>, 
but they are incomplete and don't seem to be under active development any 
more.

I'm wondering about the requirements, how much work it would take, and 
whether or not it would be worth it.  My current thinking is of a 
Clojure->C/C++ compiler.

So far, I have a few topics for discussion that I'm unclear about that 
might be necessary for this kind of project:

   - Can the Immutable Persistent Data Structures be implemented with a 
   reference-counting scheme rather than a garbage collector?  This may 
   improve performance.
   - In a similar vein, can the allocation strategy be controlled for these 
   structures in such a way as to optimize cache locality?
   - Can we take advantage of tail-call optimization in existing C++ 
   compilers?
   - It wouldn't have to depend on an existing runtime environment like JVM 
   or JavaScript.
      - Could this reduce reliance on reflection and increase performance?
      - Could a new, clojure-optimized runtime be created that improves 
      performance?
   - Could certain anonymous functions be optimized or inlined in a way 
   that improves performance over JVM/JS implementations?
   - Is there a way to compile C++ code at runtime?  This would be 
   essential for the REPL and for Macros.


Let me know if anyone has any thoughts on the matter.

Thanks

-- 
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/d/optout.

Reply via email to