Auf der derzeit stattfindenden Konferenz CppCon 2019 hat Microsoft die Veröffentlichung des Codes seiner Implementierung der Standardbibliothek C++ (STL, C++ Standard Library) bekannt gegeben, die Teil des MSVC-Toolkits und der Entwicklungsumgebung Visual Studio ist. Die Bibliothek implementiert die Funktionen, die in den aktuellen Standards C++14 und C++17 beschrieben sind, und entwickelt sich in Richtung Unterstützung des zukünftigen Standards C++20, indem sie sich an den Änderungen im aktuellen Arbeitsdokument orientiert. Der Code steht unter der Lizenz Apache 2.0 mit Ausnahmen für Binärdateien, die das Problem der Einbindung von Runtime-Bibliotheken in die erzeugten ausführbaren Dateien lösen.
Die Entwicklung dieser Bibliothek wird künftig als offenes Projekt auf GitHub fortgeführt, das Pull-Requests von Drittentwicklern für Fehlerbehebungen und die Implementierung neuer Funktionen akzeptiert (zur Teilnahme an der Entwicklung ist die Unterzeichnung eines CLA-Vereins erforderlich, um die Rechte an dem übergebenen Code zu übertragen). Es wird darauf hingewiesen, dass die Verlagerung der STL-Entwicklung auf GitHub Microsoft-Kunden dabei helfen wird, den Entwicklungsfortschritt nachzuvollziehen, mit den neuesten Änderungen zu experimentieren und bei der Überprüfung der eingehenden Anfragen zur Einführung von Neuerungen zu unterstützen.
Die Bereitstellung des Quellcodes wird es der Community zudem ermöglichen, bestehende Implementierungen neuer Standards in anderen Projekten zu nutzen. Beispielsweise wurde die Lizenz für den Code so gewählt, dass ein Austausch des Codes mit der Bibliothek ermöglicht wird. aus dem Projekt LLVM. STL und libc++ unterscheiden sich in der internen Darstellung von Datenstrukturen, aber wenn gewünscht, können die Entwickler von libc++ interessante Funktionen von STL portieren (zum Beispiel charconv) oder beide Projekte gemeinsam neue Entwicklungen vorantreiben. Die in die Apache-Lizenz eingefügten Ausnahmen heben die Anforderungen auf, die Nutzung des ursprünglichen Produkts bei der Bereitstellung von Binärdateien, die mit STL kompiliert wurden, an Endbenutzer zu erwähnen.
Ein zentrales Ziel des Projekts ist die vollständige Einhaltung der Spezifikationsanforderungen, hohe Leistung, Benutzerfreundlichkeit (Debugging-, Diagnose- und Fehlererkennungswerkzeuge) und die Kompatibilität auf Quellcode- und ABI-Ebene mit früheren Versionen von Visual Studio 2015/2017. Zu den Bereichen, die Microsoft nicht weiterentwickeln möchte, gehören das Portieren auf andere Plattformen und das Hinzufügen von nicht standardmäßigen Erweiterungen.
Quelle: opennet.ru
