微软宣布开源使用二十余年的 C++ 标准库

2019 年 9 月 19 日 InfoQ

作者丨Stephan T. Lavavej

译者丨田晓旭

2019 年 9 月 16 日,微软 C++ 团队在官方博客发文称:“在 CppCon 2019 大会,我们(MSVC 团队)宣布开源 C ++ 标准库(也可称为 STL)。”

据了解,MSVC C++ 标准库开源之后,其中包含了所有的产品源代码、新的 CMake 构建系统和更多信息的自述文件。微软 C++ 团队正在努力将其迁移到 GitHub 中,目前虽然可以克隆和构建代码,但是在查看拉取请求之前,还需要做一些准备工作,例如添加测试套件等等,具体的迁移状态,可以点击此处查看。

新的存储库地址:

https://github.com/microsoft/STL 

微软 C++ 团队在官方博客中,也回答了几个大家都很关心的问题,下面我们就一起来看看吧。

1. 为什么要开源 C++ STL?

微软 C++ 团队:选择开源主要是因为以下的原因:开源之后,在 GitHub 中使用 STL 允许用户跟踪我们的开发,并可尝试使用最新更改,同时还可以通过审查来帮助改进我们的拉取请求;随着 C++ 标准化的加速发展,每年都有很多大型功能都是被大家投票要开发的,我们认为接受开源贡献的主要功能是非常重要的,例如 C++ 20 的计时和格式库。另外,我们也希望能够通过主要功能的实现来回馈 C++ 社区,例如 C++ 13 charconv。

2.STL 使用的是什么开源许可?是否会直接影响 Visual Studio 的客户?

微软 C++ 团队:MSVC STL 的开源许可为 Apache License v2.0

LLVM Exceptions ,是由 Clang / LLVM / libc ++ 项目创建的。

之所以会选择这个较为宽松的开源许可,是因为拥有 libc ++ 相同的许可能够使得库之间共享代码变得更容易。需要注意的是,MSVC STL 并没有与 libc ++ 合并, 它们仍然是支持具有不同数据结构表示的不同平台的不同库,不过,如果 libc ++ 的维护者有兴趣从 MSVC 的 STL 中获取功能实现,或者同时协作开发两个库中的新功能,我们可以提供帮助,不必担心许可。

对于 MSVC STL 的客户来说,可能会担心开源许可的问题,微软在开源许可中明确指出,客户使用 MSVC STL 编译自己源代码生成目标代码或类似输出时(例如静态库、动态库、可执行文件等),将已编译的产品发送给最终用户时,无需提供归属信息。这也是我们选择这个开源许可的原因,避免扰乱客户的业务。

(附加说明:MSVC 的 STL 中包含来自 Boost 的源代码,Math 和 Ryu 可在 Boost Software License v1.0 下使用。这是另一个开源许可,也包含对象代码的显式异常。我们派生的源代码是在 Apache License v2.0 LLVM Exceptions 发布的。)

3. 是否有打算开源 MSVC 工具集中的其它工具吗?

微软 C++ 团队:目前没有这样的计划,之所以开源 STL,是因为它与其他 MSVC 库和编译器不同。

具体而言,STL 是由 C ++ 标准化委员会快速发展和设计的,与其他 MSVC 库不同,由委员会设计是开源的一个优势,这意味着我们不需要花费任何时间和精力进行功能设计审查,另外,实施战略和策略受到更多约束,因此更容易审查。STL 与编译器不同,相对容易贡献,并且松耦合,能够更好的与其它工具交互。

也许,未来我们可能会开源 STL 支持库!

4. 在开源过程中遇到了哪些难题?

微软 C++ 团队:遇到了一个小问题,因为我们花费了一些时间来检测构建系统、测试基础架构和问题跟踪,因为关于 C++ 20 库功能的工作有些延迟了。不过,我们刚刚完成了所有 C ++ 17 库的功能,所以 C++ 20 库应该不会是问题,我们能够更有效地处理 STL,使得其更快地达到 C ++ 20 的完整性。

原文链接:

https://devblogs.microsoft.com/cppblog/open-sourcing-msvcs-stl/



点个在看少个 bug 👇

登录查看更多
0

相关内容

微软 (英文名称:Microsoft;中文名称:微软公司或美国微软公司)始建于1975年,是一家美国跨国科技公司,也是世界PC(Personal Computer,个人计算机)软件开发的先导,由比尔·盖茨与保罗·艾伦创办于1975年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
60+阅读 · 2020年6月26日
最新《自动微分手册》77页pdf
专知会员服务
102+阅读 · 2020年6月6日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
169+阅读 · 2020年3月27日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
88+阅读 · 2019年11月25日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
167+阅读 · 2019年10月28日
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
Python 开源项目 Top30 | 值得收藏
人工智能头条
8+阅读 · 2018年1月19日
微软发布Visual Studio Tools for AI
AI前线
4+阅读 · 2017年11月20日
Gluon —— 微软和亚马逊联合推出深度学习库
开源中国
7+阅读 · 2017年10月24日
A survey on deep hashing for image retrieval
Arxiv
15+阅读 · 2020年6月10日
Arxiv
3+阅读 · 2019年9月5日
Arxiv
6+阅读 · 2018年2月8日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
60+阅读 · 2020年6月26日
最新《自动微分手册》77页pdf
专知会员服务
102+阅读 · 2020年6月6日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
169+阅读 · 2020年3月27日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
88+阅读 · 2019年11月25日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
167+阅读 · 2019年10月28日
相关资讯
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
Python 开源项目 Top30 | 值得收藏
人工智能头条
8+阅读 · 2018年1月19日
微软发布Visual Studio Tools for AI
AI前线
4+阅读 · 2017年11月20日
Gluon —— 微软和亚马逊联合推出深度学习库
开源中国
7+阅读 · 2017年10月24日
Top
微信扫码咨询专知VIP会员