原文链接:https://devblogs.microsoft.com/cppblog/open-sourcing-msvcs-stl/
STL托管与Github上,该仓库包含所有的产品源代码、一个新的 cmake 构建系统等。
![](https://www.tianqiweiqi.com/wp-content/uploads/2019/09/6003-1024x252.png)
目前,STL已经在Github上获得 3463 个Star,278个Fork(Github地址:https://github.com/microsoft/STL)此外,微软 C++ 团队在官方博客对一些主要的问题做了相应回答1、为什么开源STL?微软C++团队表示主要有一下几个原因:
- 在GitHub上开源STL,可以使我们的客户能够随时了解我们的发展情况,并尝试我们最新的更改,还能通过审查来帮助改进pull
- 随着C ++标准化的加速发展,每年都有很多大型的功能特性被投票通过,我们坚信接受主要特性作为开源贡献将是非常重要的。我们也希望通过实现主要的功能特性,为C ++社区做出贡献。(例如,C ++ 17的charconv。)
2、STL使用什么许可证,是否会影响到Visual Studio的用户?
MSVC的STL是在Apache License v2.0下发布的,只有LLVM Exceptions ,是由 Clang / LLVM / libc ++ 项目创建的。选择这个开放源码许可,是因为与libc++具有相同的许可以使我们的库之间更容易代码共享。需要说明的是,MSVC的STL并没有与libc++合并;它们仍然是不同的库,如果libc++的维护者有兴趣从MSVC的STL获取功能特性,或者在两个库的协作中开发新特性,而不需要考虑开源许可问题。3、是否打算开源MSVC工具集中的其他东西?
目前没有这样的计划,选择STL是因为它不同于其他MSVC库和编译器。我们选择开源STL是因为它不同于其他MSVC库和编译器,具体来说,与其他MSVC库不同,STL是由c++标准化委员会快速发展和设计的。这也是开源的优势之一,这意味着我们不需要在特性设计评审上花费任何的时间和精力,此外,STL也相对容易实现,而且有点松散耦合,能够更好的与其他工具交互4、是否遇到了什么困难?
有一个小问题,我们花费了一些时间去全面检查自己的系统构建,测试基础设施和问题跟踪,这会延迟C++ 20 库特性的一些工作,我们刚刚实现了所有c++ 17库特性,所以这算不上是太大的问题。5、这个开源库有什么作用?
如果你只是想使用 STL 的程序员,则不需要此存储库,你只需要安装 Visual Studio IDE,然后选择 Desktop development with C++。如果你想参与 STL 的开发,那你可以通过该仓库提交 issue、PR 之类的。最后你还可以通过仓库获取代码,并在其它应用或者库中使用它,别忘了遵守STL的许可协议哦~~