/** * @mainpage The X Binary Package System Library API * @section intro_sec Introduction * * XBPS is a new binary package system designed and implemented from * scratch, by <b>Juan Romero Pardines</b>. 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-bin(8) * and xbps-repo(8) 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: * * http://www.apple.com/DTDs/PropertyList-1.0.dtd * * NetBSD's proplib has been choosed because it's fast, extensible, and easy * to use. These are the three facts I mentioned: * * - <b>Fast</b> because proplib uses an ultra optimized * <em>red-black tree</em> implementation to store and find all its objects, * the same implementation has been used in commercial projects by * <em>Apple Inc</em>. * * - <b>Extensible</b> because you don't have to worry about ABI problems * with its objects, arrays and dictionaries can be extended without such * problems. * * - <b>Easy</b> 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 <b>are always written atomically</b>. You * have the whole file or don't have it at all. */