På den konference, der finder sted i disse dage, CppCon 2019, annoncerede Microsoft åbningen af koden til deres implementation af C++ standardbiblioteket (STL, C++ Standard Library), som indgår i MSVC-værktøjet og udviklingsmiljøet Visual Studio. Biblioteket implementerer funktionaliteter, der er beskrevet i de aktuelle standarder C++14 og C++17, og udvikles også med henblik på at støtte den kommende standard C++20, mens det følger ændringerne i det nuværende arbejds-dokument. Koden er under Apache 2.0 licensen med undtagelser for binære filer, der løser problemet med at inkludere runtime-biblioteker i de genererede eksekverbare filer.
Udviklingen af dette bibliotek planlægges fremadrettet som et aktivt open source-projekt på GitHub, der accepterer pull-anmodninger fra eksterne udviklere med rettelser og implementering af nye funktioner (for at deltage i udviklingen kræves der underskrift af en CLA-aftale om overdragelse af ejerskabsrettighederne til den overførte kode). Det bemærkes, at overgangen af STL-udviklingen til GitHub vil hjælpe Microsofts kunder med at følge udviklingen, eksperimentere med de nyeste ændringer og hjælpe med at gennemgå foreslåede ændringer.
Åbningen af koden vil også give samfundet mulighed for at bruge implementeringer af funktionaliteter fra de nye standarder i andre projekter. For eksempel er licensen for koden valgt på en måde, som muliggør deling af koden med biblioteket fra LLVM-projektet. STL og libc++ adskiller sig i deres interne repræsentation af datastrukturer, men udviklerne af libc++ kan, hvis de ønsker det, portere interessant funktionalitet fra STL (f.eks. charconv), eller begge projekter kan tilsammen udvikle nogle innovationer. De undtagelser, der er tilføjet til Apache-licensen, ophæver kravene om at nævne brugen af det oprindelige produkt, når der leveres binære filer kompilere med STL, til slutbrugerne.
Blandt de centrale mål for projektet nævnes fuld overensstemmelse med specifikationskravene, sikring af høj ydeevne, brugervenlighed (fejlfinding, diagnostik, identifikation af fejl) samt kompatibilitet på kildekode- og ABI-niveau med tidligere versioner af Visual Studio 2015/2017. De områder, som Microsoft ikke er interesseret i at udvikle, inkluderer portering til andre platforme og tilføjelse af ikke-standardiserede udvidelser.
Kilde: opennet.ru
