  MPI is the most widely used interface for high-performance computing (HPC)
workloads. Its success lies in its embrace of libraries and ability to evolve
while maintaining backward compatibility for older codes, enabling them to run
on new architectures for many years. In this paper, we propose a new level of
MPI compatibility: a standard Application Binary Interface (ABI). We review the
history of MPI implementation ABIs, identify the constraints from the MPI
standard and ISO C, and summarize recent efforts to develop a standard ABI for
MPI. We provide the current proposal from the MPI Forum's ABI working group,
which has been prototyped both within MPICH and as an independent abstraction
layer called Mukautuva. We also list several use cases that would benefit from
the definition of an ABI while outlining the remaining constraints.
