Fork me on GitHub
#gratitude
<
2024-08-01
>
Matt Smith09:08:24

Thank you Alan Malloy, oxalorg and borkdude for 4clojure.

gratitude 18
lyall09:08:05

big +1! been going through more of it recently myself too

Alex Miller (Clojure team)21:08:22

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. :)

gratitude 31
❤️ 16
oyakushev21:08:57

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! 😅

oyakushev21:08:49

One thing that annoys me is it fails to decompile letfns. That fact alone makes me use letfn less, it's unfair.

laughcry 3
😱 1
Noah Bogart01:08:58

why can't it decompile letfns?

oyakushev06:08:27

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:)

borkdude08:08:39

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 ;)

borkdude08:08:19

Helpful lies are still useful :)

borkdude08:08:01

I love the tool btw, thanks @alexyakushev

❤️ 1
😛 1
oyakushev08:08:34

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.

👍 1
oyakushev09:08:51

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 😄.

Alex Miller (Clojure team)12:08:19

I don't use the decompile at all, just the disassemble (bytecode), which is not a lie :)

oyakushev12:08:46

Hah, you should still try the decompiler once in a while, makes life much easier:)

Alex Miller (Clojure team)12:08:35

it's ok, I've been reading bytecode for a long time :)

😄 1
Alex Miller (Clojure team)12:08:21

like I've been working on locals clearing all week, and I really need that level to even see that

👍 1
oyakushev12:08:16

Yeah, of course, for such matters reading bytecode is the only way to go.

borkdude12:08:59

out of curiosity, what is it about locals clearing that needed improving?

mikerod00:08:23

Does this mean it makes you a 10x dev? 😎