Shipping a compilier is an interesting idea, but c++ compilers are big. As for how linux handles compatibility is either C interfaces, or compile everything with the distros specified compiler. Unfortunately specifying a particular compiler tends not to work across multiple distress/versions of a distro.
The reason you want to stop people using parts that aren't part of the API is because otherwise people complain when their plugin broke because you refactored something. Or changed the contract of a method.
The reason you want to stop people using parts that aren't part of the API is because otherwise people complain when their plugin broke because you refactored something. Or changed the contract of a method.