Na konferenci CppCon 2019 který se dnes slaví, exponenti Microsoftu využili příležitosti k oznámení otevření kódu pro jeho implementaci ze standardní knihovny C ++ (také známý jako STL), který je součástí sady MSVC Toolkit a vývojového prostředí Visual Studio.
Knihovna implementuje funkce popsané v aktuálních standardech C ++ 14 a C ++ 17, a je také vyvíjen ve směru podpory budoucího standardu C ++ 20 v návaznosti na změny v aktuálním pracovním návrhu.
Podle důvody, proč se lidé ve společnosti Microsoft rozhodli udělat tento krok, v prohlášení vysvětlují:
Existuje několik důvodů, proč to děláme, jedním z nich je práce na STL na GitHubu, což našim zákazníkům umožní sledovat náš vývoj, jak se to děje, testovat naše nejnovější změny a pomáhat nám vylepšovat naše požadavky na vyžádání jejich kontrolou.
Jak se standardizace C ++ zrychluje a každý rok se hlasuje o větších funkcích, myslíme si, že bude důležité přijmout základní funkce jako příspěvky v otevřeném zdroji. (Například formát C ++ 20 a chronologické knihovny jsou potenciálními kandidáty.) Chceme také přispět zpět do komunity C ++ umožněním implementace našich základních funkcí. (Například charconv z C ++ 17)
S tím Lidé z Microsoftu dali najevo, že plánují pokračovat ve vývoji této knihovny jako otevřeného projektu který se vyvíjí na GitHubu, který bude přijímat žádosti o stažení od externích vývojářů s opravami a implementací nových funkcí (k účasti na vývoji je nutná dohoda CLA k převodu vlastnických práv k převedenému kódu).
Je pozorováno, že přenos vývoje z STL na GitHub pomůže zákazníkům Microsoftu sledovat pokrok ve vývoji, experimentovat s nejnovějšími změnami a pomáhat kontrolovat příchozí žádosti o inovace.
Otevřete také kód umožnit komunitě používat hotové implementace příležitosti pro nové standardy v jiných projektech.
O licenci kódu této knihovny, Navrhuje se jako otevřený pod licencí Apache 2.0 s výjimkami pro binární soubory, které řeší problém zahrnutí runtime knihoven do složení generovaných spustitelných souborů.
Aby bylo jasno, MSVC STL se neslučuje s libc ++, protože jsou stále samostatnými knihovnami.
Společnost Microsoft vysvětluje, proč je licence kódu je vybrán takovým způsobem, aby umožňoval výměnu kódu s knihovnou libc ++ projektu LLVM. STL a libc ++ se liší ve vnitřní reprezentaci datových struktur, ale pokud si to přejí, mohou vývojáři libc ++ přenést zajímavé funkce STL (např. Charconv) nebo mohou oba projekty společně vyvinout některé inovace.
MSVC STL je distribuován pod licencí Apache v2.0 s výjimkami LLVM, který byl nedávno vytvořen projektem Clang / LLVM / libc ++.
Výjimky přidané do licence Apache ruší požadavek zmínit použití zdrojového produktu při doručování binárních souborů kompilovaných STL koncovým uživatelům.
Tato povolená licence s otevřeným zdrojovým kódem byla vybrána, protože má stejnou licenci jako libc ++ což usnadní sdílení kódu mezi knihovnami. Aby bylo jasno, MSVC STL není slučován s libc ++; stále jsou to odlišné knihovny, které podporují různé platformy s různými reprezentacemi datové struktury.
Na druhé straně se jeden z klíčových cílů projektu nazývá úplné dodržování požadavků specifikace, zajištění vysokého výkonu, snadné použití (ladění, diagnostika, nástroje pro detekci chyb) a kompatibilita na úrovni zdroje a ABI se staršími verzemi Visual Studio 2015/2017.
Mezi oblasti, které Microsoft nemá zájem na vývoji přenositelnosti na jiné platformy a přidávání vlastních rozšíření.
Pokud se chcete o prohlášení společnosti Microsoft dozvědět více, můžete se s ním poradit Na následujícím odkazu.