Na konferencji CppCon 2019, która odbywa się w tych dniach, firma Microsoft ogłosiła otwarcie kodu swojej realizacji standardowej biblioteki C++ (STL, C++ Standard Library), która jest częścią narzędzi MSVC oraz środowiska programistycznego Visual Studio. Biblioteka realizuje możliwości opisane w aktualnych standardach C++14 i C++17, a także rozwija się w kierunku wsparcia przyszłego standardu C++20, podążając za zmianami w obecnym roboczym szkicu. Kod jest objęty licencją Apache 2.0 z wyjątkami dla plików binarnych, które rozwiązują problem z dołączaniem bibliotek runtime do tworzonych plików wykonywalnych.
Rozwój tej biblioteki planuje się prowadzić jako rozwijany na GitHub projekty otwartego, przyjmujące od zewnętrznych programistów pull-requesty z poprawkami i realizacją nowych możliwości (do udziału w rozwoju wymagana jest podpisanie umowy CLA o przeniesieniu praw majątkowych na przekazywany kod). Zaznacza się, że przeniesienie rozwoju STL na GitHub pomoże klientom Microsoft śledzić postępy rozwoju, eksperymentować z najnowszymi zmianami i pomagać w recenzowaniu nadchodzących próśb o dodanie innowacji.
Otwarcie kodu pozwoli również społeczności wykorzystać gotowe realizacje możliwości z nowych standardów w innych projektach. Na przykład, wybrano licencję na kod, aby umożliwić wymianę kodu z biblioteką z projektu LLVM. STL i libc++ różnią się wewnętrzną reprezentacją struktur danych, ale w razie potrzeby programiści libc++ mogą przenieść interesującą funkcjonalność z STL (na przykład charconv) lub oba projekty wspólnie mogą rozwijać jakieś innowacje. Dodane do licencji Apache wyjątki znoszą wymagania dotyczące wzmianki o użyciu oryginalnego produktu przy dostarczaniu końcowym użytkownikom plików binarnych skompilowanych z STL.
Wśród kluczowych celów projektu wymienia się pełne przestrzeganie wymagań specyfikacji, zapewnienie wysokiej wydajności, łatwość użycia (narzędzia debugowania, diagnostyki, wykrywania błędów) oraz kompatybilność na poziomie kodu źródłowego i ABI z wcześniejszymi wydaniami Visual Studio 2015/2017. Wśród obszarów, które Microsoft nie planuje rozwijać, wymienia się przeniesienie na inne platformy oraz dodawanie niestandardowych rozszerzeń.
Źródło: opennet.ru
