写点什么

微软宣布开源使用二十余年的 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:406140
用户头像

发布了 497 篇内容, 共 322.4 次阅读, 收获喜欢 1919 次。

关注

评论 3 条评论

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

Tapdata 和 Databend 数仓数据同步实战

Databend

如何通过Java 代码设置 Word 文档页边距

在下毛毛雨

C# .net word文档 页边距

大前端CPU优化技术--SIMD技术

江湖修行

simd neon

代码的发展与终结

SoFlu软件机器人

如何有效的解决代码的圈复杂度

京东科技开发者

代码 计算 圈复杂度 点边计算

有没有夫妻相?刷一下脸就知道!

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟

【监控运维】消息轨迹全景图详解-独门秘籍——实践类

阿里云AIoT

运维 监控 物联网 数据可视化 消息中间件

电信NB-IoT设备对接阿里云IoT平台实战——实践类

阿里云AIoT

大数据 监控 物联网 存储 数据格式

任务管理-轻松搞定 IoT 设备重启、资源包更新、固件升级等业务——实践类

阿里云AIoT

json 物联网 数据格式

一图读懂 | ChatGPT热潮背后,金融行业大模型应用路在何方?——金融行业大模型应用探索

易观分析

金融 科技

数字经济赋能乡村建设,助力乡村全面振兴

加入高科技仿生人

低代码 数字经济 乡村振兴 农村

设备上报二进制数据在 IoT 平台解析实践——实践类

阿里云AIoT

小程序 监控 物联网 传感器 测试技术

天翼云推出爬虫管理,助力企业安全高效发展

Geek_2d6073

脑洞|ChatGPT加持下,ChatOps将如何革新团队协作与运维管理?

极狐GitLab

团队管理 DevOps 团队协作 ChatOps ChatGPT

TDengine 发布主流时序数据库对比分析报告,与 InfluxDB、TimescaleDB 展开全面对比测试

TDengine

tdengine 时序数据库 数据库·

智多星RPA重塑业务流程,全面赋能企业商业创新

YonBuilder低代码开发平台

Python 基础练习题(二)

漫步桔田

聊聊 HTAP 的前世今生

墨天轮

数据库 OLAP TiDB OLTP HTAP

ZBC通证月内已翻倍,Nautilus Chain 上线前夕的“开门红”

西柚子

Python基础练习题(一)

漫步桔田

软件供应链受威胁下的应对方法——供应链安全管理平台的五大工具能力

墨菲安全

SCA 供应链安全

AntDB数据库再获奖,亚信安慧被评为“2022 PostgreSQL中国最佳创新企业”

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 2 月 PK 榜

LoRaWAN设备接入阿里云IoT企业物联网平台实战——实践类

阿里云AIoT

物联网 传感器

CVE-2022-22947 SpringCloud GateWay SPEL RCE 漏洞分析

墨菲安全

漏洞分析 软件供应链安全

云小课|MRS数据分析-通过Spark Streaming作业消费Kafka数据

华为云开发者联盟

大数据 数据分析 华为云 企业号 2 月 PK 榜 华为云开发者联盟

当 Amazon Lambda 遇上 Apache APISIX 可以擦出什么火花?

API7.ai 技术团队

AWS api 网关 Lambda s APISIX

行业分析| OA系统中的实时通讯

anyRTC开发者

音视频 远程办公 视频会议 视频通话 OA

宣布 Databricks 支持 Amazon Graviton2,性价比提高3倍

亚马逊云科技 (Amazon Web Services)

数据库 存储

墨菲安全参与信息通信软件供应链安全社区成员大会并获自主研发创新成果奖

墨菲安全

供应链安全 安全情报

CVE-2023-23752 Joomla未授权访问漏洞分析

墨菲安全

漏洞分析 软件供应链安全

基于 IoT物联网 + 表格存储DB + DataV 搭建实时环境监控大屏——实践类

阿里云AIoT

数据库 监控 物联网 存储 数据可视化

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