Skip to content
Ramsey Nasser edited this page Dec 16, 2018 · 2 revisions

We're excited to announce the beta release of Arcadia! The dream of Clojure game development has been over four years in the making, and thanks to a wonderful community and dedicated contributers we've reached the most stable, most documented incarnation of the framework to date. We're already thinking of our next steps, and the best of Arcadia is yet to come.

Package Manager

Clojure is geared towards libraries and code reuse, and Arcadia will support the community through package manager integration. This will allow library authors and game developers to gracefully use open-source libraries without risk of conflict or tedious error-prone manual dependency maintenance. In addition to Clojure libraries, a package manager would enable access to many powerful libraries written in C# and F#.

Earlier pre-release versions of Arcadia shipped with limited support for Maven-based packages. We are pulling this support, and in the future will transition to NuGet, the CLR equivalent of Maven. Maven does not provide access to C# libraries and does not integrate with any CLR tooling, and therefore would present an insurmountable impediment to developers on the CLR. Switching to NuGet does mean that ported libraries must be explicitly published there, but this process will be of comparable effort to publishing on Maven.

MAGIC Compiler

Parallel to our work on Arcadia, we've also been working on the Morgan And Grand Iron Clojure (MAGIC) compiler, a new optimizing compiler for Clojure on the CLR. This compiler has been the subject of numerous talks and presents a variety of new compilation techniques and features for Clojure developers.

MAGIC allows us to have a far greater say over our compilation pipeline, and makes targeting restrictive platforms like iOS and consoles feasible. It also allows users, should they so choose, the ability to customize their compiled code down to the bytecode level, unlocking previously unprecedented levels of optimization and control. The fact that MAGIC itself is a Clojure library means that all of this can be done from an interactive REPL.

MAGIC is committed to remaining compatible with the public facing pure-Clojure APIs found in ClojureCLR, ClojureJVM and ClojureScript, but cannot guarantee the availability of any of the types and methods that constitute implementation details. Runtime machinery like clojure.lang.RT, clojure.lang.Number, and clojure.lang.Util are available via interop to Clojure programmers, but they may or may not be available in MAGIC and code that depends on them will likely break. This leeway is required to allow us to build a compiler that takes the most advantage of the CLR and is more than a port of Clojure's JVM implementation. This should not affect most users beyond authors of advanced compiler-adjacent libraries and their consumers.

Some Arcadia developers have already been using MAGIC as a library to optimize parts of their games. The plan going forward is to switch to MAGIC as Arcadia's sole compiler.