It seems to be low-hanging fruit to faster performance. What does Julia do currently?
It seems to require C23 and “clang::preserve_none”, and new opt-in Python interpreter (up to 30% faster) uses it, and requires Clang19 for now, later GCC will be allowed. I’m confused since C++11 seems to work too. Is the reason Julia can be compiled with C++ and/or C compiler, but Python only with C?
Right, I meant, there’s a common subset of C and C++, that it could be restricted to and then C++ compiler would work. Apparently that’s not the case for Python, but I think it does for Julia, since I see some files that can be compiled either way.
Anyway my point is should we use “preserve_none”; and can we do it already with a C++11 compiler, or would we need a C23 compiler (and might consider such too new)?
Julia already uses optimized calling conventions when calling between Julia functions. The only places this would be potentially useful would be calls into the runtime (which are pretty rare), and calls into JLLs (which would require rebuilding the JLLs, and apparently doesn’t provide a stable ABI)