Most simply, jank is a Clojure dialect on LLVM with C++ interop. Less simply, jank is a general-purpose programming language which embraces the interactive, functional, value-oriented nature of Clojure and the desire for the native runtime and performance of C++. jank aims to be strongly compatible with Clojure. While Clojure's default host is the JVM and its interop is with Java, jank's host is LLVM and its interop is with C++.
For the current progress of jank and its usability, see the tables here: https://jank-lang.org/progress/
The current tl;dr for jank's usability is: still getting there, but not ready for use yet.
There are pre-compiled binaries for Ubuntu 22.04, which are built to follow the
main
branch. You can download a tarball with everything you need here: https://github.com/jank-lang/jank/releases/tag/latest
For Debian-based distros, this should be all you need:
sudo apt-get install -y curl git zip build-essential entr libssl-dev libdouble-conversion-dev pkg-config ninja-build python3-pip cmake debhelper devscripts gnupg zlib1g-dev entr libffi-dev clang libjemalloc-dev libreadline-dev
For Arch:
sudo pacman -S clang pkg-config cmake ninja make python3 libffi jemalloc entr
For macOS, try this:
brew install curl git zip entr openssl double-conversion pkg-config ninja python cmake gnupg zlib jemalloc
Clone the repo as follows:
git clone --recurse-submodules https://github.com/jank-lang/jank.git
# If you didn't recurse submodules when cloning, you'll need to run this.
git submodule update --recursive --init
Note that you must compile Cling/Clang/LLVM. This can take an hour or two, depending on your machine. Building jank itself should take less than a minute.
mkdir -p build
cd build
../bin/build-cling
cd -
export CC=$PWD/build/cling-build/bin/clang; export CXX=$PWD/build/cling-build/bin/clang++;
At this point, you're ready to build jank.
A typical release build just needs the following:
./bin/configure -GNinja -DCMAKE_BUILD_TYPE=Release -Djank_cling_build_dir=build/cling-build
./bin/compile
To make a debug build, specify the build type when configuring.
./bin/configure -GNinja -DCMAKE_BUILD_TYPE=Debug -Djank_cling_build_dir=build/cling-build -Djank_tests=on
./bin/compile
# When developing, continuously run the tests locally.
./bin/watch ./bin/test
There's also a script for installing jank and all its necessary dependencies. Note that this includes a lot of header files, which are necessary for jank's JIT compilation.
./bin/configure -GNinja -DCMAKE_BUILD_TYPE=Release -Djank_cling_build_dir=build/cling-build
./bin/install
If you'd like your name, company, or logo here, you can sponsor this project.
Clojure Conj 2023 | The REPL Interview | devmio Interview | Compiler Spotlight |
|
|
|
![]() |