AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

关注

评论 3 条评论

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

2025 年 Java 开发者薪资报告:AI 工具如何助你 “升职加薪”?

飞算JavaAI开发助手

SvelteKit 最新中文文档教程(22)—— 最佳实践之无障碍与 SEO

冴羽

前端开发 前端框架 React Svelte SvelteKit

级联vs端到端、全双工、轮次检测、方言语种、商业模式…语音 AI 开发者都在关心什么?丨Voice Agent 学习笔记

声网

《Operating System Concepts》阅读笔记:p749-p763

codists

操作系统

Easysearch Rollup 相比 OpenSearch Rollup 的优势分析

极限实验室

Rollup Performance easysearch OpenSearch

数据分析与AI丨预测电池寿命只需要2小时!Altair RapidMiner 实现论文级AI 模型流程化

Altair RapidMiner

人工智能 数据分析 汽车 电池 RapidMiner

外贸企业网络加速方案选择指南

Ogcloud

网络加速 企业组网 海外网络加速 企业网络加速 网络加速服务

Electron Demo 的快速编译与启动

Geek_1ef48b

面试5家收到4家offer,Java面试成功率高达80%!

程序员高级码农

Java java面试 Java面试题 Java面试题库

为什么YashanDB共享集群的高可用能力被频繁点赞?核心机制到底强在哪?

数据库砖家

数据库

程序员的 “代码平权” 时代:飞算 JavaAI 如何打破技术壁垒?

飞算JavaAI开发助手

为什么 .NET8线程池 容易引发线程饥饿

量贩潮汐·WholesaleTide

Java .net

YashanDB知识库|SQL 中用了 OR,怎么反而性能下降了?该不该改写?

数据库砖家

数据库

YashanDB知识库|执行 shutdown immediate 无响应还导致 coredump?背后原因找到了!

数据库砖家

ATEN宏正现身InfoComm China 2025,智算中枢赋予运维新可能

编程猫

深入研究:亚马逊商品列表API详解

tbapi

亚马逊API 亚马逊商品详情API 亚马逊商品列表接口 亚马逊数据采集

Oracle 迁移 YashanDB 的顺滑实战体验:一条龙的工具到底有多省心?

数据库砖家

数据库·

Google创始人:未来一年绝大多数程序员将被AI取代;FeedbackStream:8分钟创建语音访谈智能体,输出高质量洞察

声网

无界闪联 鸿启未来|“源师兄”智慧大脑L1焕新升级发布

坚果

润开鸿

YashanDB知识库|使用EXP导出全库导致服务器卡死?可能是这个原因!

数据库砖家

数据库·

LangChain案例实战:顺序链、分支链、循环链

AI时代的一滴水

Python AI agent #LangChain

云图说|HSS新版‘反黑三件套’,全方位守护主机与容器安全!

华为云开发者联盟

华为云 主机安全 HSS

vllm+vllm-ascend本地部署QwQ-32B

zjun

YashanDB|修改yac参数后执行shutdown immediate数据库卡住的原因和解决办法

数据库砖家

数据库

YashanDB知识库|SQL语句报 YAS-00103 是因为忘了 close?

数据库砖家

数据库·

YashanDB|update/delete 没有命中数据,alter 却卡死?其实是 TS 锁在作怪

数据库砖家

数据库·

Arthas stack (输出当前方法被调用的调用路径)

刘大猫

Java 监控 Arthas stack 调用路径

Wasm Client SDK 架构介绍

Geek_1ef48b

使用YMP工具实现Oracle到YashanDB迁移全过程解析

数据库砖家

数据库

Oracle迁移YashanDB实录:初试YMP异构数据库迁移平台

数据库砖家

数据库·

2025年最新猫头虎简介:猫头虎技术团队

猫头虎

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