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?
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
coughs in invokedynamic
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
It's an inevitable consequence when we have lots of code generation tools but not many code elimination tools to offset them
it is a consequence of the lack of tail calls, core.async and match generate code in a single method because of it