October 15th, 2024

Jank development update – Moving to LLVM IR

Jeaye Wilkerson will work full-time on jank from January 2025, focusing on optimizing startup time and transitioning to LLVM IR for better performance and interoperability, while mentoring new developers.

Read original articleLink Icon
ExcitementCuriosityAdmiration
Jank development update – Moving to LLVM IR

The latest update on the jank development, a native Clojure dialect, highlights significant progress and future plans. Jeaye Wilkerson, the lead developer, announced that starting January 2025, he will transition to working on jank full-time after previously working part-time while employed at EA. The focus is on optimizing jank's startup time, which currently suffers from slow JIT compilation of C++ code. Recent efforts have shown promising results by pre-compiling modules, reducing startup time from 12 seconds to 0.3 seconds, although the initial compilation remains time-consuming. The development team is now exploring the use of LLVM IR for code generation, which could enhance performance and interoperability with other languages. This shift to LLVM IR aims to simplify the integration of jank with various programming languages while maintaining the ability to leverage C++ functionalities. Additionally, Wilkerson has joined the SciCloj mentorship program to guide new compiler hackers in developing jank. The community has also made strides in improving runtime efficiency and supporting Unicode. Overall, the jank project is gaining momentum, with a clear vision for its future direction.

- Jeaye Wilkerson will focus on jank development full-time starting January 2025.

- Efforts to optimize startup time have reduced it significantly through pre-compilation.

- The transition to LLVM IR aims to improve performance and language interoperability.

- Wilkerson is mentoring new developers in the SciCloj program to foster community growth.

- Recent community contributions have enhanced jank's runtime efficiency and Unicode support.

AI: What people are saying
The comments reflect a mix of excitement and curiosity about the jank project and its future developments.
  • Many users express enthusiasm for the project and its potential impact on Clojure development.
  • Questions arise regarding jank's usability and production readiness, as well as its advantages over existing solutions like GraalVM.
  • There are discussions about the choice of LLVM IR as a target, with suggestions to consider alternatives like MLIR for better optimization.
  • Commenters appreciate the focus on developer experience and compilation times, highlighting the importance of these aspects in programming languages.
  • Users are eager to learn more about future plans, including WebAssembly integration.
Link Icon 13 comments
By @masijo - 6 months
Incredible work. A native Clojure would be a dream come true!

Wish jank the best of lucks. Hope I can contribute soon.

By @erichocean - 6 months
Maybe this has has already been covered, by I would not target LLVM IR in 2024.

I'd target MLIR (like Mojo does).

1. It's a much easier/better target to work with.

2. It's a strict super-set of LLVM IR.

3. Much better optimizations are possible that are specific to your language.

Separately, I'd love to have a Clojure-friendly interface to MLIR—whether via Jank or something else.

By @RossBencina - 6 months
Is LLVM IR a stable target these days? I once heard of a project that got bit pretty hard with LLVM IR interface changes in the (not all that recent) past.
By @anovick - 6 months
I love this writing style, very easy to read. Best of luck with the optimizations effort! looking forward to hearing more about this project.
By @mightyham - 6 months
I'm curious what advantages Jank has over GraalVM, since Graal also supports interop with llvm languages.
By @fire_lake - 6 months
IIUIR, Clojure uses the JVM garbage collector to clean up memory.

How does Jank do this whilst keeping the user code… still Clojure?

By @sorrythanks - 6 months
This is a wonderful project, I'm very excited for it. I look forward to reading about the WebAssembly plan
By @pjmlp - 6 months
Great that it is already making use of C++20 modules.
By @gdsdfe - 6 months
does this mean there's a path from clojure to wasm ?! and the wasm component model ?
By @amano-kenji - 6 months
How useable is jank already? Is it production ready?
By @rads - 6 months
Awesome work Jeaye!
By @eikenberry - 6 months
Nice to see a language take developer UX seriously and focus on good compilation times. I wish this was more common.