Can you elaborate on what you mean by this? I’m new to go and want to understand the performance implications.
EDIT: and all registers are caller-saved. so when calling a function, all register contents will be saved on the stack (and restored later) even if the function doesn't touch certain registers
i don't think its intended as a stable target and will probably change at some point. the top google hit was a 3rd party site, and this issue is still open [#16922 doc: document assembly calling convention](https://github.com/golang/go/issues/16922)
btw the source i linked in my original comment links to a proposal to allow passing args in registers
There's a lesson in there about success, or something...
https://dr-knz.net/go-calling-convention-x86-64.html#differe...
This has never seemed like such a clear distinction to me. A language is essentially just an instruction set for a compiler.
It being a compiler problem, you can just accept the performance/size penalty and leave your code as is, but hope that in the future it will eventually change and the eventually really smart compiler will accept your current code as is and produce output without the penalty.
Language problem would means you have to rewrite it differently.
And as other comments call out, it is important to not conflate the two. A language issue is one that can't be easily fixed without breaking backwards compatibility. Compiler optimizations can be made (and is done all the time) without breaking the language.