Zum Inhalt springen

Boost (C++-Bibliothek)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. Juli 2007 um 19:24 Uhr durch Spid (Diskussion | Beiträge) (Aufnahme neuer Bibliotheken: typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Boost C++ Libraries

Boost Logo, helle Version
Boost Logo, helle Version
Basisdaten

Aktuelle Version 1.34.0
(12. Mai 2007)
Betriebssystem portabel (u.a. UNIX, GNU/Linux, Mac OS, Windows)
Programmier­sprache C++[1]
Kategorie Programmbibliothek
Lizenz Boost Software License[2] u.ä.
www.boost.org

Boost (englisch Boost C++ Libraries) ist eine freie, renommierte 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.

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 sein und allgemein anwendbar[6] (Beispiel: eine Bibliothek zur Berechnung von Planetenbahnen, die nur unter Windows funktioniert würde wohl weder als portabel noch als allgemein anwendbar gelten). Ansonsten dienen sie in ihrer Gesamtheit keinem speziellen Zweck.

Folgende Themenbereiche werden durch Boost zur Zeit 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 aktive Initiatoren von Boost sind unter anderem Beman Dawes und David Abrahams. Der Autor von mehreren Büchern über C++, Nicolai Josuttis, stellte 2001 die Boost.Array-Bibliothek zur Verfügung. Etwa 3000 Leute haben sich in die Boost-Mailinglisten eingetragen und dutzende davon sind auch 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änig von 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 (komerziell und nicht-komerziell) 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.

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.

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.

Referenzen

  1. The boost Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 18. Juli 2018).
  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