Стандартная библиотека C ++ (STL), которая поставляется как часть набора инструментов MSVC и Visual Studio IDE, выпускается Microsoft как открытый исходный код. Команда компилятора и библиотек Microsoft Visual C ++ (MSVC) сделала объявление на CppCon 2019.
Библиотека теперь находится на GitHub в репозитории, содержащем весь исходный код продукта и новую систему сборки CMake. Очевидно, это не влияет на разработчиков, которые просто хотят использовать STL, поскольку он доступен для использования в Visual Studio IDE. Однако разработчики, желающие участвовать в разработке STL, могут сделать это с помощью репозитория GitHub — или смогут сделать это в ближайшее время. Переход на GitHub все еще продолжается, но вы уже можете клонировать и создавать код.
В тераме разработки говорится, что этот шаг был сделан, потому что:
«Поскольку стандартизация C ++ ускоряется, с каждым годом голосование за все большее количество крупных функций, мы считаем, что принятие основных функций в качестве вклада с открытым исходным кодом будет важным (например, библиотеки хронографа и форматов C ++ 20 являются потенциальными кандидатами)».
Библиотека распространяется под лицензией Apache License v2.0 с исключениями LLVM. Microsoft заявляет, что выбор был сделан потому, что наличие той же лицензии, что и у libc ++, упростит совместное использование кода между библиотеками, хотя они не объединяются.
Команда разработчиков заявляет, что не планирует делать что-либо еще в наборе инструментов MSVC с открытым исходным кодом, хотя некоторые из поддерживающих библиотек для STL могут быть открытыми в будущем. Идея создания открытого исходного кода STL заключается в том, что он отличается, поскольку он быстро развивается и разработан Комитетом по стандартизации C ++, в отличие от других библиотек MSVC.
Единственная загвоздка, по словам разработчиков, заключается в том, что переход на открытый исходный код будет означать, что команда потратит время на капитальный ремонт системы сборки, инфраструктуры тестирования и отслеживания проблем, что задержит некоторую работу над функциями библиотеки C ++ 20.