写点什么

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

  • 2019-09-17
  • 本文字数:1386 字

    阅读完需:约 5 分钟

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

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


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


微软 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/


2019-09-17 11:407123
用户头像

发布了 509 篇内容, 共 351.5 次阅读, 收获喜欢 1927 次。

关注

评论 3 条评论

发布
用户头像
好事情啊,C++社区越来越热闹了。
2019-09-18 08:07
回复
用户头像
其实是想大家帮他review bug
2019-09-17 19:15
回复
也有这层意思,哈哈哈,不过开源总归是件好事情。
2019-09-20 10:44
回复
没有更多了
发现更多内容

《谷歌是如何运营的》-读书笔记

曦语

读书笔记

盘点 HashMap 的实现原理及面试题

老王说编程

Java hashmap HashMap底层原理

【LeetCode】删除字符串中的所有相邻重复项Java题解

Albert

算法 LeetCode 28天写作 3月日更

Java面试热门技术框架:Spring Security Oauth2.0认证授权

Java架构追梦

Java spring 面试 金三银四跳槽

书单|互联网企业面试案头书之程序员技术篇

博文视点Broadview

如何通过 Serverless 提高 Java 微服务治理效率?

阿里巴巴云原生

Java Serverless 容器 微服务 云原生

区块链电子合同签署平台,区块链电子存证

13530558032

京东云新一代自研云服务器 4 月上线;COLING 2020丨面向机器阅读理解的双向认知思维网络

京东科技开发者

人工智能 开发者 云服务器

如果延迟退休势在必行,区块链如何助力“养老助老”?

旺链科技

产业区块链

如何凝聚党员力量?智慧组工系统构架组织部管理平台解决方案

源中瑞-龙先生

解决方案 党员 智慧组工

小鼎量化交易系统开发|小鼎炒币机器人软件APP开发

系统开发

BFAI量化交易系统开发|BFAI炒币机器人APP软件开发

系统开发

AI辅助宫颈癌筛查技术全球居首,守护者的力量来源是?

华为云开发者联盟

AI 华为云 目标检测 宫颈癌

低代码开发平台解决方案之“金融服务行业”篇

优秀

低代码

寻找被遗忘的勇气(九)

Changing Lin

3月日更

PT100热电阻温度阻值对应表

不脱发的程序猿

数据分析 28天写作 PT100 3月日更 温度传感器

中国人工智能,赏花更要寻根

脑极体

这操作真香!一线互联网企业高级Android工程师面试题大全,面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

面试看这个就够了!最新BAT大厂面试者整理的Android面试题目模板,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

区块链+版权-助力电子微版权保护

13530558032

JVM笔记 -- JVM的生命周期介绍

秦怀杂货店

JVM 生命周期

LinqToExcel.Extend 源码分析 第二波

happlyfox

28天写作 3月日更

为什么我们开发 San 项目时要用 CLI?

百度Geek说

service SLI san command

干货分享丨从MPG 线程模型,探讨Go语言的并发程序

华为云开发者联盟

并发 channel goroutines MPG 线程 Go 语言

USB2.0 扩展器(一拖四)原理图、PCB,可打样使用

不脱发的程序猿

28天写作 电路设计 USB电路 USB转TTL 3月日更

能源管理可视化破冰而出,数字孪生打破传统运维僵局

一只数据鲸鱼

物联网 数据可视化 3D可视化 能源管理 智慧电厂

当跨国企业女职业经理人遇上创业女 CEO,两者会擦出什么样的火花?

科技新消息

AI不仅可以把李焕英带回2021,还能告诉你贾玲更像爸爸还是妈妈

京东科技开发者

人工智能 语音识别 语音合成

深度分析前端构建工具:Vite2 v.s Snowpack3 v.s. Webpack5

智联大前端

vite webpack 构建工具

从产品经理到产品架构师

博文视点Broadview

2021最新发布拼多多/字节/360/网易/面经总结

比伯

Java 编程 程序员 架构 面试

微软宣布开源使用二十余年的C++标准库_语言 & 开发_Stephan T. Lavavej_InfoQ精选文章