Use of library versions

Names for libraries may include a version. An <import spec> may designate a set of acceptable versions that may be imported. Conversely, only one version of each library should be part of a program. This allows using the “name part” of a <library name> for different purposes than the <version>.

In particular, if several different variants of a library exists where it is feasible that they coexist in the same program, it is recommended that different names be used for the variants. In contrast, for compatible versions of a library where coexistence of several versions is unnecessary and undesirable, it is recommended that the same name and different versions be used. In particular, it is recommended new versions of libraries that are conservative extensions of old ones differ only in the version, not in the name.

Correspondingly, it is recommended that <import spec>s do not constrain an import to a single version, but instead specify a wide range of acceptable versions of a library.

Implementations that allow two libraries of the same name with different versions to coexist in the same program are encouraged to report when processing a program that actually makes use of this extension.