XBPS Library API 20240111
The X Binary Package System
The X Binary Package System Library API


XBPS is a new binary package system designed and implemented from scratch, by Juan Romero Pardines. This document describes the API used by the XBPS Library, that is the base to implement a package manager frontend, such as is implemented in the xbps command line interfaces.

XBPS uses extensively NetBSD's proplib, a library that provides an abstract interface for creating and manipulating property lists. Property lists have object types for boolean values, opaque data, numbers, and strings. Structure is provided by the array and dictionary collection types. Property lists can be passed across protection boundaries by translating them to an external representation. This external representation is an XML document whose format is described by the following DTD:


NetBSD's proplib has been choosed because it's fast, extensible, and easy to use. These are the three facts I mentioned:

  • Fast because proplib uses an ultra optimized red-black tree implementation to store and find all its objects, the same implementation has been used in commercial projects by Apple Inc.
  • Extensible because you don't have to worry about ABI problems with its objects, arrays and dictionaries can be extended without such problems.
  • Easy to use (and learn) because it has a superb documentation available in the form of manual pages.

Not to mention that its arrays and dictionaries can be externalized to files (known as plists) and are always written atomically. You have the whole file or don't have it at all.