Microsoft libero el código de su implementación de STL, la biblioteca estándar de C++
La conferencia CppCon 2019 fue el lugar para la realización de un gran anuncio de Microsoft, pues en ella dio a conocer la liberación del código fuente de la biblioteca STL estándar de C ++ incluida con Visual C++ que a partir del anuncio está disponible bajo una licencia gratuita, específicamente Apache 2.0 (que es bastante permisivo).
libcxx, la biblioteca estándar LLVM / Clang C ++, ya utiliza esta licencia, que debería facilitar el intercambio de código entre proyectos. Todo el código fuente de esta biblioteca está disponible y ya es compilable con Visual C ++, pero las pruebas aún no están incluidas.
Está previsto que el proyecto abierto se desarrolle en GitHub y reciba solicitudes de extracción de terceros con nuevas características y parches. Para convertirse en miembro, debe firmar un acuerdo de transferencia de código CLA.
El equipo de MSVC cree que la migración de STL a GitHub ayudará a los clientes de Microsoft a mantenerse actualizados con el proceso de desarrollo, experimentar con innovaciones y ayudar a desarrollar el proyecto.
En cambio, los desarrolladores podrán usar implementaciones listas para usar de los nuevos estándares en otros proyectos.
Por ejemplo, puede intercambiar código con una biblioteca libc ++ que funciona dentro del proyecto LLVM. Microsoft enfatiza que STL y libc ++ no se fusionan, siguen siendo bibliotecas diferentes, con diferentes estructuras y plataformas. Sin embargo, ahora puede trabajar en nuevas funciones para ambas bibliotecas sin preocuparse por las licencias
Esta implementación de la biblioteca estándar no tiene la intención de competir con las implementaciones proporcionadas por GCC o Clang, por ejemplo: el proyecto de Microsoft no planea ser compatible con otras plataformas que no sean las de Microsoft.
Sin embargo, los desarrolladores apuntan a una implementación de alta calidad: compatible con los estándares y muy rápida.
La compatibilidad binaria está garantizada con las versiones 2015 y 2017 de Visual C ++ (esta biblioteca es la que se proporciona con la versión 2019), excepto por las características que se implementaron antes de la finalización del estándar ( documentos de trabajo y especificaciones técnicas El Comité de Normas de C ++).
La rama WCBF02 (aún interna a Microsoft) contiene cambios incompatibles a nivel binario, pero no a nivel fuente (para una actualización de la biblioteca estándar, será necesario recompilar sus proyectos, no solo cambiar la DLL). Esta rama contiene una serie de mejoras y correcciones y pronto estará disponible públicamente.
A diferencia de algunos proyectos descritos como gratuitos, Microsoft recomienda informar defectos y contribuir al código del proyecto (en este caso, será necesario firmar un CLA dar a Microsoft los derechos necesarios para la redistribución de contribuciones, especialmente en el caso de que cambie la licencia del proyecto, una dificultad que LLVM ha enfrentado durante varios años).
En un futuro cercano, Microsoft debería agregar su conjunto de pruebas internas al proyecto. La lista de fallas escaladas internamente se está migrando a GitHub. Por el momento, la compilación se realiza con MSBuild, pero se está realizando una migración a CMake. Se está implementando la funcionalidad de C ++ 20.
Otros componentes de Visual C ++ no deberían estar disponibles para licencias gratuitas. Microsoft justifica esta elección al indicar que la biblioteca C ++ estándar es bastante independiente del compilador (a diferencia de la biblioteca C estándar, por ejemplo) y que evoluciona muy rápidamente en comparación con otros componentes del compilador.
El código fuente de STL se encuentra ya disponible en Github en donde las personas interesadas podrán descargarlo o poder examinar el código de este.
El repositorio de GitHub tiene todo el código fuente del producto, un nuevo sistema de compilación CMake y README con más información. La biblioteca está licenciada bajo la licencia Apache 2.0 (a excepción de algunos binarios).
Obviamente, esto no afecta a los desarrolladores que solo quieren usar el STL, ya que está disponible para su uso en el IDE de Visual Studio. Sin embargo, los desarrolladores que deseen participar en el desarrollo de STL pueden hacerlo utilizando el repositorio de GitHub.
El cambio a GitHub todavía está en marcha, pero ya se puede clonar y construir el código.