C++: Boost 1.65 mit Stacktrace-Bibliothek veröffentlicht
Die Version 1.65 der C++-Bibliothekssammlung hat mit PolyCollection und Stacktrace zwei Neuzugänge zu verzeichnen. Unter anderem ist nun zudem die Test-Bibliothek kompatibel zu C++17, und Smart Pointers sind um neue Klassenvorlagen reicher.
- Julia Schmidt
Die Version 1.65 der Boost-C++-Bibliothekssammlung steht ab sofort zum Download bereit. Die wohl bedeutendsten Neuerungen des aktuellen Release stellen die Bibliotheken PolyCollection und Stacktrace dar. Erstere bietet drei Containerklassen-Templates, die Ineffizienzen beim Speichern polymorpher Objekte ausgleichen sollen, und einige passende performanceoptimierte Neuimplementierungen von Standardalgorithmen an. Stacktrace liefert derweil Informationen über Aufrufabfolgen in menschenlesbarer Form, sodass sich etwa besser herausfinden lässt, welche Funktion eine gerade laufende aufgerufen oder welche Call-Sequenz in eine nicht definierte Situation geführt hat.
Darüber hinaus haben die Entwickler Fehler in einer Reihe von Bibliotheken behoben und kleine Ergänzungen implementiert. Die ein asynchrones Programmiermodell bietende Boost.Asio-Bibliothek etwa benötigt nun g++ 4.7 oder höher und kann nun auch Nutzern aktueller Visual-C++-Versionen constexpr und variadische Templates anbieten. Boost.Context, die kooperatives Multitasking in einzelnen Threads ermöglicht, kann nach dem Update unter anderem mit der Windows-Fiber- und ucontext-API umgehen, und die Core-Bibliothek ist um pointer_traits für C++03 und höhere Versionen sowie zusätzliche Tests ergänzt worden.
Smart Pointers enthält ab sofort das Klassen-Template atomic_shared_ptr, mit dem sich Threadsafe-Atomic-Pointer-Operationen über Shared Pointer durchführen lassen, sowie local_shared_ptr, in der der Referenzzähler auch für nichtatomare Operationen aktualisiert wird. Die Test-Bibliothek liegt in Version 3.6 vor, ist nun zum C++17-Standard kompatibel, ermöglicht in BOOST_TEST den direkten Vergleich von C-Arrays und kann besser mit globalen Fixturen umgehen, wobei die Zuständigkeiten nun in BOOST_TEST_GLOBAL_FIXTURE und BOOST_TEST_GLOBAL_CONFIGURATION aufgeteilt wurden. Da es einige nicht rückwärtskompatible API-Änderungen in einigen Loggern gibt, lohnt sich hier ein Blick in das Changelog.
Eine vollständige Übersicht aller Neuerungen lässt sich der Release-History entnehmen. Boost ist eine kostenfreie Sammlung von C++-Bibliotheken, die besonders gut mit der C++-Standardbibliothek zusammenarbeiten. Der Weg in die Sammlung geht über Peer-Review, Experten des bearbeiteten Gebiets prüfen also die Qualität. Eine Reihe von Bibliotheken hat mittlerweile den Weg in den C++-Standard gefunden, da das Bereitstellen von Referenzimplementierungen ein weiteres Ziel des Projekts ist. (jul)