Thank you Alan Malloy, oxalorg and borkdude for 4clojure.
Link for reference: https://4clojure.oxal.org/ cc @mitesh
big +1! been going through more of it recently myself too
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 letfns. 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:)
I see a blank page when opening one of these atlassian links on Mobile, wonder if people have the same issue (on PC, it works fine)
It redirects to a mobile page (or the app if you have it), might depend on your mobile browser
Thanks, Alex o/
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 ;)
Helpful lies are still useful :)
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 :)
Hah, you should still try the decompiler once in a while, makes life much easier:)
it's ok, I've been reading bytecode for a long time :)
like I've been working on locals clearing all week, and I really need that level to even see that
Yeah, of course, for such matters reading bytecode is the only way to go.
out of curiosity, what is it about locals clearing that needed improving?
https://clojure.atlassian.net/issues/CLJ-2145 and https://clojure.atlassian.net/browse/CLJ-2317
Does this mean it makes you a 10x dev? 😎