На конференции CppCon 2019 что отмечается в эти дни, представители Microsoft воспользовались возможностью, чтобы объявить об открытии кода для его реализации из стандартной библиотеки C ++ (также известный как STL), который является частью MSVC Toolkit и среды разработки Visual Studio.
Библиотека реализует возможности, описанные в текущих стандартах C ++ 14 и C ++ 17, и он также разработан в направлении поддержки будущего стандарта C ++ 20 после изменений в текущем рабочем проекте.
По причины, по которым люди в Microsoft решили сделать этот шаг, в заявлении они объясняют:
Есть несколько причин, по которым мы делаем это, одна из них - работать над STL на GitHub, это позволит нашим клиентам следить за нашим развитием, тестировать наши последние изменения и помогает нам улучшить наши запросы на вытягивание, просматривая их.
Поскольку стандартизация C ++ ускоряется и ежегодно голосуются за более крупные функции, мы думаем, что будет важно принять основные функции в качестве вкладов с открытым исходным кодом. (Например, потенциальными кандидатами являются формат C ++ 20 и хронологические библиотеки.) Мы также хотим внести свой вклад в сообщество C ++, сделав возможной реализацию наших основных функций. (Например, charconv из C ++ 17)
С этим Сотрудники Microsoft дали понять, что планируют продолжить разработку этой библиотеки как открытого проекта. который разрабатывается на GitHub, который будет принимать запросы на вытягивание от внешних разработчиков с исправлениями и реализацией новых функций (для участия в разработке требуется соглашение CLA для передачи прав собственности на переданный код).
Замечено, что перенос разработки с STL на GitHub поможет клиентам Microsoft Отслеживайте прогресс в разработке, экспериментируйте с последними изменениями и помогайте анализировать поступающие запросы на инновации.
Откройте код тоже разрешить сообществу использовать готовые реализации возможности для новых стандартов в других проектах.
О лицензии кода этой библиотеки, Предлагается как открытый под лицензией Apache 2.0 с исключениями для бинарных файлов, решающих проблему включения библиотек времени выполнения в состав сгенерированных исполняемых файлов.
Чтобы было ясно, MSVC STL не объединяется с libc ++, поскольку они все еще являются отдельными библиотеками.
Microsoft объясняет, почему лицензия на код выбран таким образом, чтобы разрешить обмен кодом с библиотекой libc ++ проекта LLVM. STL и libc ++ различаются внутренним представлением структур данных, но при желании разработчики libc ++ могут портировать интересные функции STL (например, charconv) или оба проекта могут совместно разрабатывать некоторые нововведения.
MSVC STL распространяется под лицензией Apache v2.0 с исключениями LLVM, которая была недавно создана проектом Clang / LLVM / libc ++.
Исключения, добавленные в лицензию Apache, отменяют требование упоминать использование исходного продукта при доставке скомпилированных STL двоичных файлов конечным пользователям.
Эта разрешительная лицензия с открытым исходным кодом была выбрана потому, что она имеет ту же лицензию, что и libc ++. что упростит обмен кодом между библиотеками. Чтобы было ясно, MSVC STL не объединяется с libc ++; они по-прежнему являются отдельными библиотеками, которые поддерживают разные платформы с разными представлениями структур данных.
С другой стороны, одной из ключевых целей проекта называется полное соответствие требованиям. спецификации, обеспечивающие высокую производительность, простоту использования (отладка, диагностика, средства обнаружения ошибок), а также совместимость исходного кода и уровня ABI с более ранними версиями Visual Studio 2015/2017.
Среди областей, которые Microsoft не заинтересована в разработке переносимости на другие платформы и добавлении пользовательских расширений.
Если вы хотите узнать больше о заявлении Microsoft, вы можете ознакомиться с ним. По следующей ссылке.