Microsoft发布了Visual Studio中的标准C ++库代码

微软徽标

微软徽标

在CppCon 2019大会上 这些天一直在庆祝 微软的倡导者借此机会宣布了代码的公开 为其实施 从C ++标准库 (也称为STL),它是MSVC Toolkit和Visual Studio开发环境的一部分。

该库实现了当前C ++ 14和C ++ 17标准中描述的功能, 并且它是根据当前工作草案中的更改而朝着支持将来的C ++ 20标准的方向开发的。

通过 微软员工决定采取此行动的原因,他们在声明中解释:

我们这样做的原因有很多,其中之一是在GitHub上的STL上工作,这将使我们的客户能够随时了解我们的发展情况,测试我们的最新更改,并通过审查它们来帮助我们改善拉动请求。

随着C ++标准化的加速发展,并且每年都会投票选出更大的功能,我们认为接受核心功能作为开源贡献非常重要。 (例如,C ++ 20格式和按时间顺序排列的库是可能的候选对象。) 我们还希望通过实现我们的核心功能来回馈C ++社区。 (例如,C ++ 17中的charconv)

有了它 微软公司的人们知道他们计划继续将该库作为一个开放项目进行开发 它正在GitHub上开发,将接受来自外部开发人员的修复和新功能实现的拉取请求(要参与开发,需要CLA协议才能将所有权转让给所转让的代码)。

据观察, 将开发从STL迁移到GitHub将有助于Microsoft客户 跟踪开发进度,尝试最新的变化,并帮助审查传入的创新要求。

也打开代码 允许社区使用现成的实现 其他项目中新标准的机会。

关于该库代码的许可, 提议在Apache 2.0许可下以开放形式提供,但二进制文件除外,该二进制文件解决了在生成的可执行文件的组成中包括运行时库的问题。

要清楚一点 MSVC STL未与libc ++合并,因为它们仍是单独的库。

微软解释了为什么代码许可证 选择它的方式是允许与LLVM项目的libc ++库交换代码。 STL和libc ++在数据结构的内部表示形式上有所不同,但是,如果愿意,libc ++开发人员可以移植有趣的STL功能(例如charconv),或者两个项目都可以共同开发一些创新。

MSVC STL是在Apache v2.0许可下分发的,带有LLVM例外,该许可证是最近由Clang / LLVM / libc ++项目创建的。

Apache许可证中添加的例外取消了在向最终用户交付STL编译的二进制文件时提及使用源产品的要求。

选择此开放源代码许可证是因为它具有与libc ++相同的许可证 这将使在库之间共享代码更加容易。 需要明确的是,MSVC STL并未与libc ++合并; 它们仍然是不同的库,它们支持具有不同数据结构表示形式的不同平台。

另一方面,项目的关键目标之一就是完全符合要求 规范,确保高性能,易用性(调试,诊断,错误检测工具)以及与Visual Studio 2015/2017早期版本的源代码和ABI级别兼容性。

在这些领域中 Microsoft对开发是否可移植到其他平台以及添加自定义扩展不感兴趣。

如果您想了解有关Microsoft所作声明的更多信息,可以查阅该声明。 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。