This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-08-01
Channels
- # announcements (4)
- # babashka (12)
- # calva (8)
- # clj-kondo (40)
- # clojure (39)
- # clojure-europe (23)
- # clojure-losangeles (1)
- # clojure-nl (1)
- # clojure-norway (52)
- # clojure-uk (3)
- # community-development (6)
- # cursive (1)
- # datomic (14)
- # devops (1)
- # gratitude (21)
- # humbleui (7)
- # hyperfiddle (7)
- # introduce-yourself (2)
- # java (5)
- # portland-or (4)
- # shadow-cljs (69)
- # tools-deps (4)
- # xtdb (6)
big thanks to @alexyakushev for https://github.com/clojure-goes-fast/clj-java-decompiler which I literally use every day to disassemble Clojure code. it has made my job 10x easier in working on Clojure itself. :)

Thank you for the kind words! I also get value out of it every single day. Imagine how sore our eyes would be from reading all that bytecode as-is! 😅
One thing that annoys me is it fails to decompile letfn
s. That fact alone makes me use letfn
less, it's unfair.

why can't it decompile letfns?
It's the underlying Procyon library that fails to decompile it. I guess, letfn
emits bytecode that has no suitable Java representation at all. Maybe one day I'll try to look at it:)
Hey I remember Alex saying that you should take the output of this tool with a grain of salt since the only truth is in the bytecode (something along these lines), but good to know Alex uses this himself now too ;)
I agree with Alex that decompilers can lie (especially since we take bytecode compiled from one language and decompile it to another), so in tricky and really important cases it is worth double-checking the bytecode. But in other 99% cases it really doesn't matter.
Actually, in Alex's kind of work – working on the compiler where you manually emit all the DUPs and ARETURNs – I wouldn't trust the decomplier much either. For everyone else, when you just use it with stable Clojure, there is less chance that the decompiler would lie and confuse you. But it still happens sometimes, so be on guard 😄.
I don't use the decompile at all, just the disassemble (bytecode), which is not a lie :)
like I've been working on locals clearing all week, and I really need that level to even see that