Project:LLVM/LLVM slotting

Starting with 4.0.0, the LLVM packages are once more slotted. This means it is now possible to have multiple versions of LLVM/clang installed simultaneously.

Why slot?
Slotting serves three goals:
 * 1) Making it possible to upgrade split clang package without intermediate breakage. In particular, when upgrading from clang-X to clang-Y, the package manager must not uninstall llvm-X before clang-Y is installed.
 * 2) Making it possible to use multiple versions of clang simultaneously, e.g. to test your programs against multiple versions of the compiler.
 * 3) Making it possible to at least partially upgrade to a newer version of LLVM before all software supports it. Previously, a single package not supporting a newer LLVM version prevented the system from upgrading to a newer one.

Which packages are slotted?
There are degrees of slotting applied to various LLVM packages:
 * packages that are not slotted -- only one version can be installed,
 * packages that are slotted by major version -- one release of every major version can be installed (i.e. LLVM x),
 * packages that are slotted by full version -- one revision of every full version can be installed (i.e. LLVM x.y.z).

The use of slotting is summarized in the table following.