Конференция CppCon 2019 стала местом, где реализация большое объявление от Microsoft, хорошо в ней выпустил релиз исходного кода библиотеки STL Стандарт C ++ включен в Visual C ++, который доступен на момент объявления под бесплатной лицензией, а именно Apache 2.0 (что вполне допустимо).
libcxx, стандартная библиотека LLVM / Clang C ++, уже использует эту лицензию., что должно облегчить обмен кодом между проектами. Весь исходный код этой библиотеки доступен и уже компилируется с Visual C ++, но тестирование еще не включено.
Ожидается, что открытый проект будет развиваться на GitHub и получать запросы на вытягивание. сторонние с новыми функциями и исправлениями. Чтобы стать участником, вы должны подписать соглашение о передаче кода CLA.
Команда MSVC считает, что переход с STL на GitHub поможет клиентам Microsoft оставаться в курсе процесса разработки, экспериментировать с инновациями и способствовать развитию проекта.
Вместо этого, разработчики смогут использовать готовые реализации новых стандартов в других проектах.
Например, вы можете обмениваться кодом с библиотекой libc ++, которая работает в рамках проекта LLVM. Microsoft подчеркивает, что STL и libc ++ не объединяются, это все же разные библиотеки, с разными конструкциями и платформами. Однако теперь вы можете работать над новыми функциями для обеих библиотек, не беспокоясь о лицензировании.
Эта реализация стандартной библиотеки не предназначена для конкуренции с реализациями, предоставляемыми GCC или Clang, например: проект Microsoft не планирует поддерживать другие платформы, кроме Microsoft.
Однако разработчики стремятся к качественной реализации: соответствующей стандартам и очень быстрой.
Двоичная совместимость гарантирована с Visual C ++ версий 2015 и 2017. (Эта библиотека поставляется с версией 2019 года), за исключением функций, которые были реализованы до окончательной доработки стандарта (рабочие документы и технические спецификации The C ++ Standards Committee).
Ветка WCBF02 (все еще внутренняя для Microsoft) содержит несовместимые изменения на двоичном уровне, но не на уровне исходного кода (для обновления стандартной библиотеки вам потребуется перекомпилировать свои проекты, а не просто изменить DLL). Эта ветка содержит ряд улучшений и исправлений и скоро станет общедоступной.
В отличие от некоторых проектов, которые называются бесплатными, Microsoft рекомендует сообщать о дефектах и вносить свой вклад в код проекта (В этом случае необходимо будет подписать CLA, чтобы предоставить Microsoft необходимые права для перераспределения взносов, особенно в случае изменения лицензии на проект, с которой LLVM сталкивается в течение нескольких лет).
В ближайшем будущем, Microsoft следует добавить в проект свой внутренний набор тестов.. Пересмотренный внутри компании список ошибок переносится на GitHub. На данный момент компиляция выполняется с помощью MSBuild, но выполняется переход на CMake. Реализуется функционал C ++ 20.
Другие компоненты Visual C ++ не должны быть доступны для бесплатных лицензий. Microsoft оправдывает этот выбор, заявляя, что стандартная библиотека C ++ в значительной степени независима от компилятора (в отличие, например, от стандартной библиотеки C) и что она очень быстро развивается по сравнению с другими компонентами компилятора.
Исходный код STL находится теперь доступно на Github где желающие смогут его скачать или изучить его код.
В репозитории GitHub есть весь исходный код продукта, новая система сборки CMake и README с дополнительной информацией. Библиотека находится под лицензией Apache 2.0 (за исключением некоторых двоичных файлов).
Очевидно, что это не влияет на разработчиков, которые просто хотят использовать STL, поскольку он доступен для использования в интегрированной среде разработки Visual Studio. Однако разработчики, которые хотят участвовать в разработке STL, могут сделать это с помощью репозитория GitHub.
Переход на GitHub все еще продолжается, но теперь код можно клонировать и собирать.