XBPS Library API 20240111
The X Binary Package System
mainpage.h
1/**
2 * @mainpage The X Binary Package System Library API
3 * @section intro_sec Introduction
4 *
5 * XBPS is a new binary package system designed and implemented from
6 * scratch, by <b>Juan Romero Pardines</b>. This document describes
7 * the API used by the XBPS Library, that is the base to implement
8 * a package manager frontend, such as is implemented in the xbps
9 * command line interfaces.
10 *
11 * XBPS uses extensively NetBSD's proplib, a library that provides an
12 * abstract interface for creating and manipulating property lists.
13 * Property lists have object types for boolean values, opaque data, numbers,
14 * and strings. Structure is provided by the array and dictionary collection
15 * types. Property lists can be passed across protection boundaries by
16 * translating them to an external representation. This external representation
17 * is an XML document whose format is described by the following DTD:
18 *
19 * http://www.apple.com/DTDs/PropertyList-1.0.dtd
20 *
21 * NetBSD's proplib has been choosed because it's fast, extensible, and easy
22 * to use. These are the three facts I mentioned:
23 *
24 * - <b>Fast</b> because proplib uses an ultra optimized
25 * <em>red-black tree</em> implementation to store and find all its objects,
26 * the same implementation has been used in commercial projects by
27 * <em>Apple Inc</em>.
28 *
29 * - <b>Extensible</b> because you don't have to worry about ABI problems
30 * with its objects, arrays and dictionaries can be extended without such
31 * problems.
32 *
33 * - <b>Easy</b> to use (and learn) because it has a superb documentation
34 * available in the form of manual pages.
35 *
36 * Not to mention that its arrays and dictionaries can be externalized to
37 * files (known as plists) and <b>are always written atomically</b>. You
38 * have the whole file or don't have it at all.
39 */