Theodore Ts'o, IBM
Track: Apps
Date: Monday, July 07
Time: 1:45pm - 5:15pm
Location: Salon G
The magic of dynamic linking allows shared libraries to be replaced
without requiring the recompilation of all the programs that use them.
However, this is true only if proper care is taken when designing the
data structures and interfaces presented by these libraries.
Unfortunately, as efforts by the Linux Standards Base workgroup has
sometimes uncovered, many open source projects have not taken this
care, with the result that incompatible changes are made to shared
library interfaces as frequently as every month.
This tutorial will describe design principles for creating portable,
stable, and yet extensible shared library interfaces. It will cover
guidelines for designing Application Programming Interfaces (API's)
and Application Binary Interfaces (ABI's) as well as how to use ELF symbol versioning. In addition, this course will cover the design of
interfaces which allow applications to be dynamically extended with
plugins.
After completing this session, a developer will be able to design and
implement extensible applications and shared libraries with stable
ABI's. If the key attribute of a successful open source project, one
that is widely used, then the principles covered in this tutorial
will help make such a project successful, by encouraging the use -- and
re-use -- of the project's codebase.