There's just a couple more compiler features I wanted to get merged, but everything should be in order for folks to follow the book and try jank out.
Thanks for your work on jank! I hope the Alpha brings you lots of new users, useful bug reports, and some contributors. :)
> Beyond Clojure, jank is brethren to C++ and it can reach into C++ arbitrarily to both access and define new C++ types, functions, and templates, at runtime. This is done by JIT (just in time) compiling C++, using Clang and LLVM. The result is that you can write Clojure code which can access C and C++ libraries trivially.
From https://book.jank-lang.org, for those of us who've never heard of this language
1. C++
2. LLVM IR
The IR is much faster to compile, but its perf isn't nearly as good. This is meant to be a nice trade off, during iteration, so that you can use C++ codegen for your release artifact, but stick with IR when you're REPLing. The IR gen is still unstable right now, for the alpha, but we'll have both solidified this year.
With that said, jank will do some trail blazing down other paths (see my other comments here about Carp), but they will be optional modes which people can enable which are specific to jank. Clojure compatibility will remain constant.
Also I noticed a typo/broken link in the Welcome section: The link for "foreward" points to https://book.jank-lang.org/foreward.html, but it should be https://book.jank-lang.org/foreword.html
There's a Clang bug getting in the way of the progress we want, so we'll need to work around. There's a lot I'm juggling, but this is high priority.
Thanks for the broken link report. That should be fixed now.
Couldn’t not find the answer
> I mentioned that a native Clojure is the first step toward my dream language. Indeed, it doesn't stop there. jank will always be a Clojure dialect, but it will also optionally support more. Features like gradual typing (maybe linear typing), more explicit memory management, value-based errors, and stronger pattern matching, to name a few, improve upon Clojure. This will allow another axis of control, where some parts of the program can remain entirely dynamic and garbage collected while others are thoroughly controlled and better optimized. That’s exactly the control I want when programming.
--
But none of us have worked on it in a while.
Maybe Erik, the creator, would be interested. I know he was looking at rewriting Carp in cpp at some point.
My favourite thing was to run it on all kind of microcontrollers as you could just emit C. Wrote a small GBA game with it.
I will be exploring optional static typing modes for jank in the future, a la Carp. That will not be this year, though.
Does it introduce incompatibilities with third-party libraries?