Welcome to the Moonli Programming Language!

Learn More Source Code
Download

Moonli is a transpiler


Transpile Python or Julia-like algol-syntax

=> to an interactive battle-tested programming language Common Lisp

Moonli relies on a flexible, multiparadigm language Common Lisp, and particularly its optimizing compiler SBCL.

30+ years of rich heritage

Common Lisp was ANSI standardized over the course of early-1980s to mid-1990s. SBCL (earlier CMUCL) has been available since early-2000s and continues to have monthly releases to this day.

Small but extensive ecosystem

The Common Lisp community curates its libraries from time to time at awesome-cl.

Multiple library managers

From quicklisp that ensures all packages in a distribution work together, to ultralisp that builds every five minutes, and OCI-based ocicl, there are multiple options to suit your needs.

Foreign Function Interface

The years since the ANSI standardization has seen the rise of foreign function interface that allows most Common Lisp implementations access to C libraries. This includes access to CUDA as well as Python.

Multithreading

bordeaux-threads and lparallel provide powerful multithreading APIs common across multiple platforms and implementations.

Multiple Implementations

From SBCL and CCL that allow image-based development, to ECL that allows embedding Common Lisp in C applications, to CLASP that interfaces with LLVM, and ABCL that interfaces with JVM, there are multiple implementations to suit everyone's needs.

Optional Typing

Common Lisp is dynamically typed by default. This again aids prototyping. However, once the prototype is ready, the program can be documented or optimized using type information. SBCL (see also Coalton) is immensely helpful.

Interactive Programming

Designed for interactive programming from the ground up. This makes it easy to redefine not just variables and functions but also classes, types, packages (= modules/namespaces) and syntax all on the fly.

In particular, each can be redefined in a piecemeal fashion. This makes it best suited for explorative programming without breaking your flow.

Learning Resources and Features

From the hacker oriented books Cookbook and Practical Common Lisp to beginner friendly as well as advanced and beyond, there's something for everybody.

Moonli is just a transpiler.

Transpile-based

Moonli transpiles to Common Lisp. Your colleague familiar with Python or Julia can read Moonli code, while lispers can hack the corresponding Common Lisp code whenever metaprogramming becomes necessary.

Familiar Syntax

The syntax for Moonli is based around Python or Julia. This means it should be accessible to a wider audience who are familiar with these languages but unfamiliar with Lisp.

Extensible

Moonli syntax is defined using Parsing Expression Grammar. The resulting grammar has two entry points to extend Moonli syntax. This makes it easy to extend Moonli to your favorite Common Lisp construct!

Common Lisp and thus, Moonli, is mutable, but can be used in a functional manner. It is amongst the pioneers of multiple dispatch. It supports multithreading. SBCL supports SIMD instructions on x86-64 processors. C libraries can be used through the Common Foreign Function Interface. This includes access to CUDA. These days, experimental support for calling functions in Python libraries is also available.

Lisper already?

You can skip the tutorial, and directly see example transpilation snippets.

New to Common Lisp?

Contributions welcome!

We do a Pull Request contributions workflow on GitHub. New users are always welcome!

Star and Watch us on Github!

For announcement of latest features etc

Create an Issue!

To ask for help or report a bug, create an issue.