Durante la conferenza CppCon 2019 in corso, Microsoft ha annunciato l'apertura del codice della propria implementazione della libreria standard C++ (STL, C++ Standard Library), inclusa negli strumenti di MSVC e nell'ambiente di sviluppo Visual Studio. La libreria implementa le funzionalità descritte negli standard attuali C++14 e C++17 e si sta anche evolvendo per supportare il futuro standard C++20, seguendo le modifiche nel vigente documento di lavoro. Il codice è sotto licenza Apache 2.0 con eccezioni per i file binari, risolvendo il problema dell'inclusione delle librerie runtime nei file eseguibili generati.
Lo sviluppo di questa libreria è previsto come progetto open-source su GitHub, accettando richieste di pull da parte di sviluppatori esterni con correzioni e nuove funzionalità (per partecipare allo sviluppo è necessaria la firma di un accordo CLA sui diritti di proprietà del codice trasmesso). Si osserva che il trasferimento dello sviluppo della STL su GitHub aiuterà i clienti Microsoft a monitorare il progresso dello sviluppo, sperimentare le modifiche più recenti e contribuire alla revisione delle richieste di aggiunta di innovazioni.
L'apertura del codice permetterà alla comunità di utilizzare implementazioni pronte delle funzionalità dei nuovi standard in altri progetti. Ad esempio, la licenza per il codice è stata scelta in modo da consentire lo scambio di codice con la libreria del progetto LLVM. STL e libc++ differiscono nella rappresentazione interna delle strutture dati, ma se lo desiderano, gli sviluppatori di libc++ possono portare funzionalità di interesse dalla STL (ad esempio, charconv) o entrambi i progetti possono sviluppare insieme nuove funzionalità. Le eccezioni aggiunte alla licenza Apache eliminano i requisiti di menzionare l'uso del prodotto originale quando si forniscono file binari compilati con la STL agli utenti finali.
Tra gli obiettivi principali del progetto vi è la completa conformità alle specifiche, garantire alte prestazioni, facilità d'uso (strumenti di debug, diagnostica, individuazione degli errori) e compatibilità a livello di codice sorgente e ABI con le versioni precedenti di Visual Studio 2015/2017. Tra le aree che Microsoft non è interessata a sviluppare, ci sono il porting su altre piattaforme e l'aggiunta di estensioni non standard.
Fonte: opennet.ru
