Brussels / 2 & 3 February 2019


Set-versioned package dependencies

addressing the problem of shared library updates

Set-versioned package dependencies is a free software technology invented in ALT and implemented in ALT package repositories and distributions since 2010 to prevent breakages caused by updates of shared libraries containing incompatible changes.

Every time a shared library is going to be updated, there is a chance of incompatible changes in the library that will cause breakages in some of its clients. This happens, for example, when a symbol provided by the library is removed but the soname remains unchanged. Detecting such changes manually is getting more problematic nowadays when packages are updated automatically by scripts.

The approach implemented in ALT package repositories to address this problem is to encode all symbols provided by shared libraries in package Provide tags, and to encode all symbols required by clients of shared libraries in package Require tags.

In this talk the speaker will describe in detail how to implement such encoding efficiently, explain the computational costs associated with set-versioned package dependencies, and share his experience of maintaining package repositories based on set-versions.

The primary auditory of this talk are maintainers of package repositories and distributions who might be interested in addressing the problem of shared library updates.


Photo of Dmitry Levin Dmitry Levin