XBPS Library API  0.19
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-bin(8)
9  * and xbps-repo(8) 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  */