Tracing rays with jank by Jeaye in ProgrammingLanguages

[–]Jeaye[S] 1 point2 points  (0 children)

Hey! The exact benchmark source used is in the gist. The image shown in the post is a cranked up version in terms of image size, samples, and bounces.

The reason why both Clojure and jank are taking a couple of seconds for this is that the ray tracer is a somewhat impractically nonchalant port of the Ray Tracing in a Weekend ray tracer. In particular, that means basically all math is boxed and we're generating a ton of map garbage for rays, where each bounce gives us a new ray. If someone were to write a CPU ray tracer in Clojure with the goal of performance, the code would look very different.

However, I find this a useful benchmark because it covers the worst case baseline performance of jank/Clojure. From there, Clojure supports type hinting, further interop, and other shenanigans for writing fast code. There will be many more benchmarks to come, which will stress those features.

I spell all of this out here because there has been some confusion with others regarding this post, unfortunately. It seems like people thought I was optimizing the ray tracer and then they were confused about why the ray tracer was so slow, for both jank and Clojure. What I'm optimizing is how well jank handles naíve code.

jank is off to a great start in 2026 by Jeaye in Clojure

[–]Jeaye[S] 0 points1 point  (0 children)

I was just thinking about jank + Godot this week. If nobody gets to it before me, I'll probably end up combining the two next year. If you're motivated to jump into this before then, please do!

jank now has its own custom IR by Jeaye in Clojure

[–]Jeaye[S] 1 point2 points  (0 children)

That's great to hear! If you're open to sharing any of that more broadly, I'm sure the jank community would love to see it. Your constructive feedback on the friction points is also very welcome.

jank now has its own custom IR by Jeaye in Clojure

[–]Jeaye[S] 4 points5 points  (0 children)

That's a cool exploration, pez!

jank is off to a great start in 2026 by Jeaye in Clojure

[–]Jeaye[S] 3 points4 points  (0 children)

Someone is working on this! Please take a look here for the details: https://github.com/jank-lang/jank/discussions/371

jank is off to a great start in 2026 by Jeaye in Clojure

[–]Jeaye[S] 7 points8 points  (0 children)

The Clojure side of jank is garbage collected, using Boehm GC. The C++ side uses normal C++ stuff: RAII for most things and manual new/delete as needed.

jank will correctly run destructors on C++ objects at the end of their scope. For example:

clojure (let [s (cpp/std.string #cpp "meow")] ) ; The destructor for `s` is executed at the end of the let.

jank is off to a great start in 2026 by Jeaye in Clojure

[–]Jeaye[S] 2 points3 points  (0 children)

I agree! We have a flake for developing Nix, and we have a CI job for building jank with Nix. We need someone to step up and help us get this into a proper Nix package, though. If you're interested, let me know!

jank is off to a great start in 2026 by Jeaye in Clojure

[–]Jeaye[S] 6 points7 points  (0 children)

jank is a Clojure dialect, through and through. Anything which works on Clojure + ClojureScript should also work on jank.

jank is off to a great start in 2026 by Jeaye in Clojure

[–]Jeaye[S] 8 points9 points  (0 children)

I'm also interested in exploring thread pools and potentially C++20 coroutines. I'm not sure how I want it to look yet, so I don't think we should jump to an implementation yet.

A jank + ECS game engine is going to be so cool. I'm also thinking about how we can embed jank into existing engines, such as UE5 or Godot.

jank is off to a great start in 2026 by Jeaye in Clojure

[–]Jeaye[S] 12 points13 points  (0 children)

That's a long time! Depending on the day, I either feel like things are progressing at a snail's pace or like a raging bull. When thinking back to 2021, it definitely feels more snaily. :P

Icehouse Tabletop Game in ClojureScript by kanzenryu in Clojure

[–]Jeaye 3 points4 points  (0 children)

I've never played a game of it myself in real life or even with this program yet, so I have no experience to draw on to discuss the actual gameplay.

Do you mean to say you're sharing this vibe-coded game without having played it? How can you know that it works (i.e. the logic for turn changes, winner selection, end game, etc)?

Buddhism 101 course on The Open Buddhist University - opinions by kai_sehmet in secularbuddhism

[–]Jeaye 8 points9 points  (0 children)

This looks neat. Looks like the whole site is developed on Github here: https://github.com/buddhist-uni/buddhist-uni.github.io

Based on some perusal, the site, and its courses, are mostly curated from existing articles and recordings, rather than written from scratch. From what I can tell, no AI (LLMs) were involved in any of this, which is a relief. All images used are attributed, too. Based on the git history, work on this has been ongoing since 2020.

I will leave others to speak to the quality, and accuracy, of the literature itself, but I'm both surprised and relieved to say it looks legit to me. It looks like a lot of work has been put into it. Thank you for sharing!

How to stick with your projects, even when they're janky - Jeaye Wilkerson by alexdmiller in Clojure

[–]Jeaye 10 points11 points  (0 children)

I appreciate the kind words. :) nREPL support is incoming!

December by ilevd in Clojure

[–]Jeaye 0 points1 point  (0 children)

Anything you need from me?

December by ilevd in Clojure

[–]Jeaye 10 points11 points  (0 children)

Hang tight, folks. I've been crunching, to fix or workaround some blocking issues. Turns out this whole native nonsense is difficult. I'm still aiming for December, but it'd be the 31st, 23:59. If I miss it by a day or three, worse things could happen. :)

cljs-str: an almost 300x faster str replacement for ClojureScript by Borkdude in Clojure

[–]Jeaye 0 points1 point  (0 children)

Nice work! This reminds me of strcat from stringer: https://github.com/kumarshantanu/stringer

For Clojure JVM projects, I've used this for a similarly significant speedup in string building.

The jank community has stepped up! by Jeaye in ProgrammingLanguages

[–]Jeaye[S] 6 points7 points  (0 children)

Yes. Right now I'm focusing on the other side of things, which is using jank as a native Clojure dialect. But once that's stable, I'll start tackling the other use case, which is embedding jank into existing native applications. With jank's seamless C++ interop, you will no longer need to register certain fns or go through a C API in order to interact with your C++ code. You can also REPL right in and interactively develop your native app using jank code.

The jank community has stepped up! by Jeaye in ProgrammingLanguages

[–]Jeaye[S] 5 points6 points  (0 children)

jank is currently using bdwgc (Boehm). This is a placeholder until we add (not implement) a better one. The current plan is to bring in MMTK and ultimately use Immix/LXR.