Skip to content
This repository has been archived by the owner. It is now read-only.
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

License EPL 1.0 Patreon Donate Join the chat at Twitter Follow

Jaunt logo

Build Status

Branch Status Artifact
master Circle CI [org.jaunt-lang/jaunt "0.2.1"]
develop Circle CI [org.jaunt-lang/jaunt "0.3.0-SNAPSHOT"]


The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.

~ George Bernard Shaw, Maxims for Revolutionists 1903

Jaunt is a hard fork of Clojure. Rich Hickey wrote Clojure to be the language he wanted, and administers it in the way that he wants. This is awesome, but I (Reid McKenzie) disagree with enough of the choices made in the language and its administration that I've forked to go my own way.

See the thesis blog post for more on this.

Getting Started

Jaunt should be supported by Leiningen, Inlein, CIDER (0.12 or later), and Cursive.

With Leiningen

All that's required in order to use Jaunt in a leiningen project is to provide a profile where Jaunt is listed as a dependency, and Clojure is listed as an exclusion. A minimal project.clj which uses only Jaunt would be as such:

(defproject some-jaunt-project "0.1.0-SNAPSHOT"
  :exclusions [org.clojure/clojure]
  :dependencies [[org.jaunt-lang/jaunt "0.2.1"]])

Simply jacking in with CIDER or via lein repl or starting a Cursive repl will drop you straight into a Jaunt environment.

With Inlein

All you need is a jaunt.clj like this

'{:dependencies [[org.jaunt-lang/jaunt "0.2.1"]
                 [reply "0.3.7"
                  :exclusions [net.cgrand/parsley
                 [net.cgrand/parsley "0.9.3"
                  :exclusions [org.clojure/clojure]]]
  :jvm-opts     ["-XX:+TieredCompilation" "-XX:TieredStopAtLevel=1" "-Dfile.encoding=UTF-8"]}

(reply.ReplyMain/main (into-array String ["--standalone"]))

inlein jaunt.clj will then drop you straight into a repl just like lein repl.

With Boot

Due to a minor breaking change in Jaunt's implementation details and the fact that Boot is fully AOT compiled against Clojure for startup performance, Jaunt is not usable with boot at this time.


Jaunt is in no small part an experiment in what Clojure would look like if it had a different contribution process, and was more willing to make bold/risky changes.

Unlike Clojure which is eminently stable, Jaunt is not guaranteed to be stable (yet). Some level of breaking changes with Clojure will be accepted if there is a good reason for them.


Currently, Jaunt is administered at my (Reid McKenzie's) sole discretion. Contributions, bug reports, and feature requests are welcomed.

It must be stated this is a hobby project for me. I'll respond to issues and pull requests as I have free time to consider and address them.

The EPL license reads


And that is the extent of the guarantees I offer with regards to this software. It is my goal to maintain Jaunt in such a way that CIDER works, and that most compatibility with Clojure is maintained but this is not a hard guarantee. If you want a Clojure compatible language, you're gonna have to use Clojure.

In the future when there are other active contributors, it is my desire to hand off issues and patch reviews to volunteer contributors as they may choose to donate time. The precise mechanism by which contributors may approve changes is undecided, but the goal is for significant contributors who have demonstrated that they share some degree of respect for compatibility will be able to approve and merge changes without my involvement.


This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to See for more information about this project's development process.


You can support the development of Jaunt and related tooling via Patreon. Note that choosing to contribute represents blanket support for this and other projects, and does not constitute a contract for support or for a tee shirt.


Jaunt is (c) Reid McKenzie. All rights reserved. The use and distribution terms for this software are covered by the Eclipse Public License 1.0 (EPL) (/etc/licenses/epl-v10.txt). By using this software in any fashion, you are agreeing to be bound by the terms of this license.

You must not remove this notice, or any other, from this software.

Jaunt is derived directly from Clojure, (c) Rich Hickey, also distributed under the EPL.

This program uses the Guava Murmur3 hash implementation which is distributed under the Apache License, in /etc/licenses/apache.txt

This program uses the ASM bytecode engineering library which is distributed under the license in /etc/licenses/inria.txt

Change Log

An extensive changelog is available here.


Will you support $LIBRARY/$PRODUCT?

No. They may work just fine, and you're welcome to offer changes continuing or preserving support as well as to assist in preventing breakages. However no degree of compatibility with Clojure, Cognitect products or the surrounding ecosystem is guaranteed or represented.

Will you add $FEATURE/$PATCH from Clojure?

Maybe. Under the EPL you may port changes from Clojure to Jaunt. However I make no promises of merging or porting upstream changes.

Will you add $FEATURE to the language?

Maybe. For the most part, it seems that clojure.core is shall we say "right sized". In the Scheme tradition, the compiler works and the core is large enough that users can and have built just about everything else you could want as a library. This leads me to believe that for the most part adding features to the language isn't called for.

That said, I don't think the language is perfect. The Java implementation could use some spit and shoeshine in my present estimation. The compiler could be smarter. The various "internal" APIs could be reviewed, documented and published so that users can rely on them. There are some things which clearly deserve to be added such as type predicates which are nearly universally defined by users, but I expect this project to largely be one of refinement rather than one of novel development.

You can’t perform that action at this time.