Konferencija CppCon 2019 bila je mjesto za to realizacija velika najava od Microsofta, dobro u njoj je predstavio izdanje izvornog koda biblioteke STL C ++ standard uključen u Visual C ++ koji je od najave dostupan pod besplatnom licencom, konkretno Apache 2.0 (što je prilično dopušteno).
libcxx, LLVM / Clang C ++ standardna biblioteka, već koristi ovu licencu, što bi trebalo olakšati razmjenu kodova između projekata. Sav izvorni kod za ovu biblioteku dostupan je i kompajlira se s Visual C ++-om, ali testiranje još nije uključeno.
Očekuje se da će se otvoreni projekat razviti na GitHub-u i primati zahtjeve za povlačenjem treća strana s novim značajkama i zakrpama. Da biste postali član, morate potpisati ugovor o prenosu CLA koda.
MSVC tim vjeruje da će migracija sa STL-a na GitHub pomoći Microsoftovim kupcima da ostanu u toku s razvojnim procesom, eksperimentiraju s inovacijama i pomognu u razvoju projekta.
Umjesto toga, programeri će moći primijeniti nove implementacije novih standarda u drugim projektima.
Na primjer, možete razmijeniti kod s bibliotekom libc ++ koja radi u okviru LLVM projekta. Microsoft naglašava da se STL i libc ++ ne spajaju, i dalje su različite biblioteke, sa različitim strukturama i platformama. Međutim, sada možete raditi na novim značajkama za obje biblioteke bez brige o licenciranju
Ova implementacija standardne biblioteke nije namijenjena nadmetanju s implementacijama koje pružaju GCC ili Clang, na primjer: Microsoft projekt ne planira podržavati druge platforme osim Microsofta.
Međutim, programeri teže visokokvalitetnoj implementaciji: usklađenoj sa standardima i vrlo brzoj.
Binarna kompatibilnost zagarantovana je sa Visual C ++ verzijama 2015. i 2017. godine (Ova je biblioteka ona koja se isporučuje s verzijom iz 2019.), osim karakteristika koje su implementirane prije finalizacije standarda (radni dokumenti i tehničke specifikacije C ++ odbor za standarde).
Podružnica WCBF02 (još uvijek interna za Microsoft) sadrži nekompatibilne promjene na binarnom nivou, ali ne i na izvornom nivou (za standardno ažuriranje biblioteke morat ćete rekompajlirati svoje projekte, a ne samo mijenjati DLL). Ova grana sadrži niz poboljšanja i ispravki i uskoro će biti javno dostupna.
Za razliku od nekih projekata koji su opisani kao besplatni, Microsoft preporučuje prijavljivanje nedostataka i doprinos projektnom kodu (U ovom slučaju bit će potrebno potpisati CLA kako bi se Microsoftu dalo potrebna prava za preraspodjelu doprinosa, posebno u slučaju da se promijeni licenca za projekat, poteškoća s kojom se LLVM suočava već nekoliko godina).
U bliskoj budućnosti, Microsoft bi projektu trebao dodati svoj interni testni paket. Interno eskalirana lista grešaka migrira se na GitHub. Trenutno se kompilacija vrši sa MSBuild, ali migracija na CMake je u toku. Implementirana je funkcionalnost C ++ 20.
Ostale Visual C ++ komponente ne bi trebale biti dostupne za besplatne licence. Microsoft opravdava ovaj izbor izjavom da je standardna biblioteka C ++ prilično neovisna o kompajleru (za razliku od standardne biblioteke C, na primjer) i da se vrlo brzo razvija u usporedbi s ostalim komponentama kompajlera.
Lociran je izvorni kod STL sada dostupan na Github-u gde ga zainteresovane osobe mogu preuzeti ili moći pregledati njegov kod.
GitHub spremište ima sav izvorni kod proizvoda, novi CMake i README sistem gradnje s više informacija. Biblioteka je licencirana pod licencom Apache 2.0 (sa izuzetkom nekih binarnih datoteka).
Očigledno ovo ne utječe na programere koji samo žele koristiti STL, jer je dostupan za upotrebu u Visual Studio IDE-u. Međutim, programeri koji žele sudjelovati u razvoju STL-a to mogu učiniti pomoću spremišta GitHub.
Prelazak na GitHub je još uvijek u toku, ali sada možete klonirati i izgraditi svoj kôd.