Stallman on GCC, LLVM, and copyleft
Stallman on GCC, LLVM, and copyleft
Posted Jan 29, 2014 10:33 UTC (Wed) by Del- (guest, #72641)In reply to: Stallman on GCC, LLVM, and copyleft by PaXTeam
Parent article: Stallman on GCC, LLVM, and copyleft
Yes I said stable APIs are the back-bone of successful open projects, and I mean it. Linux has a rock stable API, as does glibc. Breaking backwards compatibility is typically seen as a bug. I just wish that had been common practise for the rest of the GNU/Linux stack, whether it is sound, gui-toolkits, process communication, etc.
When it comes to linux drivers, we are not talking about an API, but about an ABI. It is somewhat different, but as I said, there is not supposed to be an API for external use there. People are expected to include the drivers as part of the distribution. This is different.
Talking about GCC, it does make sense to share what you mean with API. For most people I believe they are occupied by linking issues, which in the case of C++ refers to the ABI implemented by GCC that was originally specified by Intel for their Itanium architecture. It made it possible for the likes of Intel to make compilers that could even link in statically compiled GCC stuff. There were issues preventing this from being rock solid with C++, but I believe it worked out reasonably well. You find a reference here: http://refspecs.linuxbase.org/cxxabi-1.83.html
In the case of nix, I can of course guess that it is a reference to the newer plugin API, for which you find documentation here: http://gcc.gnu.org/wiki/GCC_PluginAPI
By now I should have checked of course, but maybe you can share with me, is this the API you are struggling with? I haven't worked with that API myself, but I have seen GCC developers being sorry for not having it more stable. Whether they are just being modest, or whether they really have broken the API numerous times I don't know, and to be frank, I do not find you line of posting very helpful in conveying it either.
You see, the example from Octave using LLVM as a JIT library, is AFAIK, and intended usage of LLVM by an external project, and then whether the API is stable or not is a rather important issue, at least for me. I may of course be wrong, that Octave's usage was never intended for external usage of LLVM, so that we are more talking about an internal API, which in my mind is a different ball game.
