Fantastic news, David. This should help the spread of Clojure.

Although I like "Bonjure" as a name, and even though two syllable
names are generally considered best by marketers, I think ClojureCLR
is best for branding purposes. It helps spread the Clojure meme and it
linguistically supports the claim that the language is cross-VM.

The world needs a good Lisp that runs on popular VMs. Looks like we're
getting there. Thanks for your hard work.


On Feb 16, 2:43 pm, dmiller <dmiller2...@gmail.com> wrote:
> [I thought I'd slip this in while Rich has everyone distracted lazy
> sequences.]
>
> What do you do when you love Lisp, are intrigued by Clojure, but have
> absolutely no projects at hand to test it out?  Oh, and you have an
> interest in how dynamic languages are being implemented in modern
> virtual machine environments.
>
> You might implement Clojure on the CLR, I guess. So I did.  At least,
> I have started.
>
> The project has reached the point where I need input from the
> community and especially Rich.  Rich asked that I go public.  So I
> will.  (Though most certainly I would prefer to wait until the code
> is ... better.)
>
> The code will go up on clojure-contrib ASAP.  I need input from the
> clojure-contrib project members on how they operate, where they want
> to put it, etc.
>
> This is definitely alpha-level, developer-only.  Hard hats, goggles,
> and heavy gloves recommended.
>
> Goals:
>
> (a) Implement a feature-complete Clojure on top of CLR and the DLR
> (Dynamic Language Runtime).
> (b) Stay as close as possible to the JVM implementation so that the
> versions can stay in synch.  That includes:
> (c) To the extent possible, use exactly the same boostrap *.clj files
> to define the environment.
> (d) Try to use some of the more advanced features of the DLR, where it
> makes sense to do so.
> (e) Spawn a cottage industry of people making Visual Studio extensions
> for Clojures. :)
> (e) Have fun.
>
> Status:
>
> Let's call it alpha.  Not for the casual user, but developers might
> want to take a look.
>
> Stop here unless you really want status details.
>
> The basic runtime data structures--the persistent collections,
> namespaces/symbols/keywords, vars, refs, atoms, agents, etc.--are 95%
> complete. The remaining pieces are trivial.
>
> The LispReader is feature-complete except for #=. Call this 96%
> complete.
>
> There are currently 500+ unit tests on the basic data structures and
> the reader.  Call this 34% complete.
> There are no unit tests on compiler.  That would be 0%.
>
> This is not an interpreter.  A compiler translates Clojure forms into
> DLR expression trees. DLR does its magic, i.e. compiles to MSIL, and
> computation happens.  At the moment, there is not a single call to
> Reflection.Emit in the compiler code.  (Though that will have to
> change soon.)  It handles all special forms, can load most of
> core.clj, deals with macros, inlines, tags,  CLR-interop,
>
> There is a basic REPL.
>
> core.clj loads with minor edits (java.util.Collection =>
> System.Collections.ICollection, for example).  Of roughly 425 def
> forms in core.clj, only 43 are commented out.  19 of those are for
> specialized array access, 6 for regular expressions -- nothing
> significant in terms of work.  Of the 360 defs that load, most have
> been tested at a rudimentary level.  However, the roughly 20 defs
> related to libs/loading/compiling definitely do not work.  Call this
> 85% complete.
>
> core-print.clj also loads and seems to work. ants.clj runs.  (The sim
> code is unchanged.  The GUI was rewritten to Windows Forms.)  100%.
>
> The code is consistent with revision 1279 of the JVM code (Feb 13).
> It is running on release 10606 of the DLR (Feb 11).
>
> It is slow.  Roughly 4X slower than Clojure/JVM on one or two very
> easy tests.  (No need to comment on microbenchmarks.) This will be the
> focus of the next round of work.
>
> What's not there:
>
> Libs and loading -- lots of design problems because of the differences
> between JVM and CLR relating to classpaths, assemblies, etc.  (Basic
> file loads can be done.)
>
> AOT/Compilation/gen-class
>
> Proxies
>
> Bootstrap *.clj files other than core.clj and core-print.clj -- Just
> haven't had time yet.
>
> Speed.
>
> So there you have it.  I'll post again when the code becomes available
> on clojure-contrib.
>
> -- David Miller
--~--~---------~--~----~------------~-------~--~----~
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
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to