Boost (C++-Bibliothek)
Boost C++ Libraries
Boost Logo, helle Version
Aktuelle Version 1.47.0[1]
(11. Juli 2011)
Betriebssystem portabel (u. a. UNIX, GNU/Linux, Mac OS, Windows)
Kategorie Programmbibliothek
Lizenz Boost Software License[2]
www.boost.org

Boost (englisch Boost C++ Libraries) ist eine freie C++-Bibliothek bestehend aus einer Vielzahl von portablen Unterbibliotheken. Die Unterbibliotheken dienen unterschiedlichsten Aufgaben von Algorithmen auf Graphen über Metaprogrammierung bis hin zu Speicherverwaltung.

Es können jederzeit neue Bibliotheken zur Eingliederung in Boost vorgeschlagen werden, diese müssen jedoch einen aufwendigen Review-Prozess[3] durchlaufen. Teile von Boost wurden in den ersten einer Reihe von geplanten Technical Reports[4] des Standardisierungskomitees für C++ übernommen und sind somit im nächsten C++-Standard enthalten.

Inhaltsverzeichnis

Anwendungsgebiete

Boost besteht aus Unterbibliotheken zu verschiedensten Zwecken. Gemeinsam ist ihnen das Ziel der Produktivitätssteigerung beim Programmieren mit C++.[5] Außerdem sollen Boost-Bibliotheken portabel und allgemein anwendbar sein[6]. Ansonsten dienen sie in ihrer Gesamtheit keinem speziellen Zweck.

Folgende Themenbereiche werden durch Boost zurzeit unter anderem abgedeckt[7]:

Entwicklung

Das Boost-Projekt wurde im Jahr 2000 ursprünglich von Mitgliedern des C++-Standardisierungskomitees gegründet, um Vorschläge für C++-Erweiterungen öffentlich zu machen und im praktischen Einsatz zu testen. Inzwischen ist Boost eine große Sammlung von C++-Bibliotheken unabhängig von ihrer Relevanz für den nächsten C++-Standard.

Auch bekannte kommerzielle Firmen steuern Code und Bibliotheken bei, etwa die Grafikbibliothek GIL (Generic Image Library)[8] von Adobe.

Einige der Bibliotheken wurden mittlerweile in den bereits verabschiedeten C++-Library Technical Report 1 (TR1)[4] verbindlich aufgenommen und finden sich somit im kommenden C++-Standard wieder. Zehn Boost-Bibliotheken wurden dabei vom C++-Komitee akzeptiert. Außerdem wurden für den geplanten Technical Report 2[9] (eine vom Standardisierungskomitee anzunehmende Erweiterung des kommenden C++-Standards) einige weitere Boost-Bibliotheken vorgeschlagen.

Noch in der Gemeinschaft aktiver Initiatoren von Boost sind unter anderem Beman Dawes und David Abrahams. Der Autor mehrerer Bücher über C++, Nicolai Josuttis, stellte 2001 die Boost.Array-Bibliothek zur Verfügung. Etwa 3000 Leute haben sich in die Boost-Mailinglisten eingetragen und einige dutzend davon sind auch regelmäßig aktiv.

Qualitätssicherung

Aufnahme neuer Bibliotheken

Jede neue Bibliothek, die in Boost aufgenommen werden will, muss sich einem sogenannten Review[3] durch die Boost-Community unterziehen. Dabei können von interessierten Entwicklern Bewertungen abgegeben werden, als auch Zustimmung oder Ablehnung zum Ausdruck gebracht werden. Diese werden ausgewertet und haben Einfluss auf die Aufnahme in die Bibliothek. Durch diesen Prozess soll eine hohe Qualität erreicht werden, da diese eventuell den Weg in den C++-Standard finden.

Unabhängig vom Reviewprozess muss[6] eine Bibliothek, die Teil von Boost werden soll unter anderem

Auch muss der Autor aktiv am Qualitätssicherungsprozess teilnehmen und formale Dinge wie z. B. Quellcodeformatierung oder Dokumentation müssen den vereinbarten Richtlinien entsprechen.

Lizenzbedingungen

Um Teil von Boost zu werden, muss eine Bibliothek eine Lizenz aufweisen, die folgende Bedingungen erfüllt[6]:

  • Sie muss leicht lesbar und verständlich sein.
  • Sie muss jedem zu jedem Zweck (kommerziell und nicht-kommerziell) kostenfreie Kopier-, Nutzungs- und Modifikationsrechte einräumen.
  • Sie muss verlangen, dass die Gültigkeit der Lizenz in jeder Kopie oder Modifikation der Softwarequellen angegeben wird.
  • Sie darf nicht verlangen, dass die Lizenz bei erzeugten ausführbaren oder Binärdateien angegeben wird.
  • Sie darf nicht verlangen, dass der Quelltext bei erzeugten ausführbaren oder Binärdateien mitgeliefert wird.
  • Sie darf die Benutzung von Namen und Beschreibung der Bibliothek auf die Standardversion auf der Boost-Webseite beschränken.

Als Ergebnis dieser Bedingungen ist es möglich, alle Boost-Bibliotheken ohne Kenntnis der konkreten Lizenz zu nutzen. Außerdem ist bemerkenswert, dass Lizenzen wie die GPL, LGPL oder Mozilla Public License nicht mit Boost kompatibel sind, da sich ihre unterschiedlich ausgeprägten Copyleft-Klauseln nicht mit den in Boost-Bibliotheken einzuräumenden freien Nutzungsrechten (also auch einschließlich der Nutzung in nicht-freier Software) vereinbaren lassen. Umgekehrt kann man natürlich Boost-Bibliotheken grundsätzlich in Projekten nutzen, die unter einer Lizenz mit Copyleft-Klausel stehen, ebenso wie in Nicht-Open Source-Projekten.

Es wird dringend empfohlen, auf die Boost Software License [2] zurückzugreifen, da es ein langfristiges Ziel ist, alle Boost-Bibliotheken unter einer einheitlichen Lizenz zur Verfügung zu stellen.[10] De facto ist es unwahrscheinlich, dass eine Bibliothek ohne Boost Software License akzeptiert wird.

Tests und Pflege

Alle Boost-Komponenten werden regelmäßig auf verschiedensten alten und neuen Compilern getestet. Es werden unterschiedliche Dinge, wie die Compilierfähigkeit, Funktionsfähigkeit und Vollständigkeit der Lizenzinformationen überprüft. Die Ergebnisse werden regelmäßig auf der Boost-Mailingliste angekündigt und auf der Boost-Webseite veröffentlicht.[11]

Boost enthält ein eigenes Test-Framework, mit dem auch versucht wird, die Qualität der Boost-Bibliotheken aufrechtzuerhalten.[12] Dieses ist lose nach Maximen des Extreme Programming aufgebaut.

Bei Bugs bitten die Boost-Entwickler um Meldung auf einer der Mailinglisten oder im Boost-eigenen Trac, allerdings bevorzugt erst nachdem der meldende Programmierer überprüft hat, ob der Fehler in der aktuellen Entwickler-Version behoben ist.[13]

Test und Pflege von Boost wird durch die stark variierende Qualität der unterstützten Plattformen und vor allem Compiler erschwert, was man unter anderem an zahlreichen Varianten und Umgehungslösungen innerhalb des Boost-Codes erkennen kann.

Kritisch ist, dass einige Boost-Bibliotheken lange Zeit keine Pflege erhalten oder erhalten haben, was zumindest ihre Tauglichkeit für moderne Anwendungen einschränken kann.

Technik

Viele Teile von Boost machen umfangreichen Gebrauch von Templates, d. h. generische Programmierung oder Metaprogrammierung. Dies stellt hohe Anforderungen an die Konformität der zu verwendenden Compiler. Es wird jedoch parallel versucht, so viele Compilerfehler wie möglich zu umgehen. Die Entwicklungen decken auch Beschränkungen der bisherigen Compiler auf und können so zu weitergehenden Vorschlägen für die Standardisierung von Compilern und deren Konformitätstests führen.

Literatur

  • Björn Karlsson: Beyond the C++ Standard Library. An Introduction to Boost. Addison-Wesley, 2007, ISBN 0-321-13354-4.
  • Jeremy G. Siek, Lie-Quan Lee, Andrew Lumsdaine: The Boost Graph Library: User Guide and Reference Manual. Addison-Wesley, 2002, ISBN 0-201-72914-8.

Weblinks

Referenzen

  1. http://www.boost.org/users/news/version_1_47_0
  2. a b c Boost Software License 1.0
  3. a b Review Prozess für Boost-Bibliotheken
  4. a b C++ Technical Report 1
  5. Boost.org "Background"-Seite
  6. a b c Anforderungen und Richtlinien für Boost-Bibliotheken
  7. Liste der Boost-Bibliotheken
  8. Adobe Generic Image Library
  9. C++ Technical Report 2
  10. Informationen über die Lizenz-Politik von Boost
  11. Boost Compiler Status Report
  12. Boost Test Library
  13. Boost Seite über das Melden von Bugs

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Boost C++ Libraries — Boost Boost C++ Libraries Développeur Développeurs bénévoles Dernière version 1.39.0 (le …   Wikipédia en Français

  • Boost C++ Libraries — infobox software name = Boost C++ Libraries caption = Boost logo latest release version = 1.36.0 latest release date = 14 August 2008 genre = Libraries license = [http://www.boost.org/LICENSE 1 0.txt Boost Software License] website =… …   Wikipedia

  • Boost (librairie C++) — Boost Boost C++ Libraries Développeur Développeurs bénévoles Dernière version 1.39.0 (le …   Wikipédia en Français

  • Boost — C++ Libraries Développeur Communauté de Boost Dernière version …   Wikipédia en Français

  • C++11 — C++11, anciennement connu sous le nom de C++0x[1], est la nouvelle norme pour le langage C++ en informatique. Elle a été approuvée unanimement le 12 août 2011[2]. Elle vise à remplacer la norme existante, ISO/CEI 14882, publiée en 1998 et mise à… …   Wikipédia en Français

  • Boost — can refer to: NOTOC cience, technology and mathematics* Automotive: ** Boost, positive manifold pressure in cars, see turbocharger#Boost threshold. *** a loose term for turbo or supercharger ** A slang term meaning to start a vehicle, see jump… …   Wikipedia

  • C++0x — is the planned new standard for the C++ programming language. It is intended to replace the existing C++ standard, ISO/IEC 14882, which was published in 1998 and updated in 2003. These predecessors are informally known as C++98 and C++03. The new …   Wikipedia

  • C++11 — C++11, also formerly known as C++0x,[1] is the name of the most recent iteration of the C++ programming language, replacing C++TR1, approved by the ISO as of 12 August 2011.[2] The name is derived from the tradition of naming language versions by …   Wikipedia

  • Boost Software License — The Boost Software License is an open source license used by the Boost C++ Libraries. It is also a popular license for a significant number of other open source C++ projects. It is a permissive license in the style of the popular BSD license and… …   Wikipedia

  • C++ standard library — In C++, the Standard Library is a collection of classes and functions, which are written in the core language. The Standard Library provides several generic containers, functions to utilise and manipulate these containers, function objects,… …   Wikipedia

  • Boost (библиотека) — Boost Тип библиотека (программирование) Написана на С++ Операционная система Кроссплатформенный Последняя версия Boo …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”