Это self-hosted компилятор: он написан на Clojure и компилирует сам себя. На вход читает Clojure, разбирает его в host-neutral IR — промежуточное представление, не привязанное к конкретной платформе, — а потом генерирует Scheme. Получившийся Scheme исполняется нативно на Chez, либо через Gambit, где код компилируется в JavaScript.
Сборка проекта делается командой jolt build. Это ahead-of-time компиляция: в один самодостаточный исполняемый файл попадают runtime, стандартная библиотека, само приложение и все зависимости (deps). Такой бинарник запускается без Chez, без JVM и без исходников.
Конкурентность настоящая. future, promise, agent и pmap работают на потоках операционной системы и используют общую кучу, так что семантика получается как в JVM. core.async даёт каналы и go-блоки.
Числовая башня полная: есть точные целые и bignums, точные рациональные числа — например, (/ 1 2) превращается в 1/2, — и числа с плавающей точкой flonum double. Сравнение различает категории: = проверяет категорию значения, а == сравнивает по значению.
Данные persistent и неизменяемые: векторы устроены как 32-way tries, есть cons lists и HAMT maps/sets с семантикой значений, как в Clojure. Для черновой работы есть Transients — настоящие изменяемые временные коллекции.
Из Clojure-совместимости тут есть ленивые и бесконечные seqs, transducers, destructuring, multimethods, protocols/records, metadata, namespaces, runtime eval и полный reader.