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 articleThe 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.
Related
Why Use Clojure for Machine Learning?
Clojure's functional paradigm benefits machine learning with modular, readable, and predictable code. Leveraging JVM ensures speed and portability. Integration with Java libraries like TensorFlow and PyTorch supports deep learning. Despite being less mature, Clojure shows promise in ML projects.
Jujutsu: A Next Generation Replacement for Git
Jujutsu, an experimental version control system by Martin von Zweigbergk, offers Git compatibility, simplified commits, effective conflict handling, and features like automatic rebasing. Despite being in active development with some limitations, it shows promise for revolutionizing version control.
Compilation of JavaScript to WASM, Part 2: Ahead-of-Time vs. JIT
Chris Fallin's blog post discusses his AOT compiler for JavaScript to WebAssembly, achieving 3-5x performance improvements while addressing challenges like dynamic typing and Wasm platform constraints.
Clojure Interactive Development 101
The article emphasizes interactive development in Clojure using REPL for efficient coding, structural editing for code boundaries, and tools like "snitch" and "clj-reload" to enhance debugging and workflow.
Clojure 1.12.0 is now available
Clojure 1.12.0 introduces significant updates, including the last support for Java 8 bytecode, enhanced lazy-seq handling, new library management functions, and security fixes, preparing for future Java compatibility.
- 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.
Wish jank the best of lucks. Hope I can contribute soon.
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.
How does Jank do this whilst keeping the user code… still Clojure?
Related
Why Use Clojure for Machine Learning?
Clojure's functional paradigm benefits machine learning with modular, readable, and predictable code. Leveraging JVM ensures speed and portability. Integration with Java libraries like TensorFlow and PyTorch supports deep learning. Despite being less mature, Clojure shows promise in ML projects.
Jujutsu: A Next Generation Replacement for Git
Jujutsu, an experimental version control system by Martin von Zweigbergk, offers Git compatibility, simplified commits, effective conflict handling, and features like automatic rebasing. Despite being in active development with some limitations, it shows promise for revolutionizing version control.
Compilation of JavaScript to WASM, Part 2: Ahead-of-Time vs. JIT
Chris Fallin's blog post discusses his AOT compiler for JavaScript to WebAssembly, achieving 3-5x performance improvements while addressing challenges like dynamic typing and Wasm platform constraints.
Clojure Interactive Development 101
The article emphasizes interactive development in Clojure using REPL for efficient coding, structural editing for code boundaries, and tools like "snitch" and "clj-reload" to enhance debugging and workflow.
Clojure 1.12.0 is now available
Clojure 1.12.0 introduces significant updates, including the last support for Java 8 bytecode, enhanced lazy-seq handling, new library management functions, and security fixes, preparing for future Java compatibility.