Fork me on GitHub
#clojure-dev
<
2021-05-20
>
Ben Sless06:05:46

I remember some time ago Alex mentioned :inline and definline should still be considered experimental. Is it still their status? If so, why? Things like https://clojure.atlassian.net/browse/CLJ-1656 and get-in could greatly benefit from it On the same note, why can't definline have more than one arity? I played around with aggressive inlining/unrolling and it can have dramatic performance gains, but one concern I had about it was how it affects the size of emitted bytecode and JIT compilation. Anyone has any insights on that angle?

noisesmith16:05:33

I have a hunch it would increase our method size woes - we already run into methods that are too large for the jvm when combining macros like destructuring / async/go / core.match and core.logic in one block

Ben Sless17:05:08

It's an inevitable consequence when we have lots of code generation tools but not many code elimination tools to offset them

hiredman21:05:32

it is a consequence of the lack of tail calls, core.async and match generate code in a single method because of it

👀 2
ghadi20:05:52

coughs in invokedynamic

Alex Miller (Clojure team)16:05:01

re the first question, yes it is still experimental. Rich had ideas of something better to replace them that I looked at now so many years ago that I do not recall the details