exupero
exupero

Reputation: 9426

Implementations of Clojure for other platforms?

Are there any implementations of Clojure being built for other virtual machines (such as .Net, Python, Ruby, Lua), or is it too closely tied to Java and the JVM? Does it make sense to build a Clojure for other platforms?

Upvotes: 3

Views: 1789

Answers (4)

Arthur Ulfeldt
Arthur Ulfeldt

Reputation: 91534

" or is it too closely tied to Java and the JVM? 
  Does it make sense to build a Clojure for other platforms?"

One of the Clojure design philosophies is embrace the host platform. Clojure on the JVM embraces the JVM and gives direct access to classes, numbers etc. interop is both ways with out glue.

ClojureScript embraces JavaScript(ECMAScript) in exactly the same way, giving direct access to Objects, numbers, etc. the same for the .NET target.

It is tempting, but not always successful, to make 'cross platform' languages that run the exact same source code on multiple platforms. Thus far Clojure has avoided this temptation and strives to remain close to the host.

Upvotes: 5

postfuturist
postfuturist

Reputation: 22636

I'm not sure that Python and Ruby ports make sense, those are languages with multiple virtual machines / implementations. If you want to have native interop between Clojure and Python or Ruby you could use Jython or JRuby and stay on the JVM.

Upvotes: 1

Jörg W Mittag
Jörg W Mittag

Reputation: 369428

There are currently three implementations of Clojure that I know of:

  • ClojureCLR, an implementation of Clojure for the CLI,
  • ClojureScript, an implementation of (a subset of (a variant of)) Clojure for ECMAScript and
  • a Clojure implementation for the Java platform, confusingly also called Clojure.

In fact, the name Clojure was specifically chosen by Rich Hickey because it contained both the letters CLR as well as the letter J.

I've heard rumours of implementations for the Objective-C/Cocoa runtime, LLVM and the Rubinius VM, but I have no idea whether or not those actually exist.

Upvotes: 6

jeha
jeha

Reputation: 10700

There exits at least a ClojureCLR project by Rich Hickey himself.

This project is a native implementation of Clojure on the Common Language Runtime (CLR), the execution engine of Microsoft's .Net Framework.

ClojureCLR is programmed in C# (and Clojure itself) and makes use of Microsoft's Dynamic Language Runtime (DLR).

Upvotes: 1

Related Questions