SmPL: A Domain-Specific Language for
Specifying Collateral Evolutions in Linux Device Drivers∗
Yoann Padioleau
Ecole des Mines de Nantes
INRIA, LINA
44307 Nantes cedex 3, France
Yoann.Padioleau@emn.fr
Julia L. Lawall
DIKU,
University of Copenhagen
2100 Copenhagen Ø, Denmark
julia@diku.dk
Gilles Muller
Ecole des Mines de Nantes
INRIA, LINA
44307 Nantes cedex 3, France
Gilles.Muller@emn.fr
Abstract
Collateral evolutions are a pervasive problem in large-
scale software development. Such evolutions occur
when an evolution that affects the interface of a
generic library entails modifications, i.e., collateral
evolutions, in all library clients. Performing these
collateral evolutions requires identifying the affected
files and modifying all of the code fragments in these
files that in some way depend on the changed inter-
face.
We have studied the collateral evolution problem in
the context of Linux device drivers. Currently, col-
lateral evolutions in Linux are mostly done manually
using a text editor, or with tools such as sed. The
large number of Linux drivers, however, implies that
these approaches are time-consuming and unreliable,
leading to subtle errors when modifications are not
done consistently.
In this paper, we propose a transformation lan-
guage, SmPL, to specify collateral evolutions. Be-
cause Linux programmers are used to exchange, read,
and manipulate program modifications in terms of
patches, we build our language around the idea and
syntax of a patch, extending patches to semantic
patches.
1 Introduction
One major difficulty, and the source of highest cost, in
software development is to manage evolution. Soft-
ware evolves to add new features, to adapt to new
requirements, and to improve performance, safety, or
the software architecture. Nevertheless, while evolu-
tion can provide long-term benefits, it can also in-
∗Appeared at the International ERCIM Workshop on Soft-
ware Evolution (2006)
troduce short-term difficulties, when the evolution of
one component affects interfaces on which other com-
p