微软发布了其实现的STL(标准C ++库)中的代码

STL开源

CppCon 2019会议是 实现 微软的重要公告, 好在她 公布了STL库源代码的发布 Visual C ++随附的C ++标准,该公告自发布之日起可用 在免费许可下,特别是Apache 2.0 (这是相当宽松的)。

LLVM / Clang C ++标准库libcxx已使用此许可证,这应该有助于项目之间的代码交换。 该库的所有源代码都是可用的,并且可以与Visual C ++一起编译,但是尚未包括测试。

该开放项目有望在GitHub上开发并接收请求请求 具有新功能和补丁的第三方。 要成为会员,您必须签署CLA代码转移协议。

MSVC团队认为,从STL到GitHub的迁移将帮助Microsoft客户保持开发流程的最新状态,尝试创新并帮助开发项目。

相反, 开发人员将能够在其他项目中使用新标准的现成实现。

例如,您可以与LLVM项目中可用的libc ++库交换代码。 Microsoft强调STL和libc ++不会合并,它们仍然是不同的库, 具有不同的结构和平台。 但是,您现在可以使用两个库的新功能,而不必担心许可问题

标准库的此实现不旨在与GCC或Clang提供的实现竞争,例如:Microsoft项目不计划支持Microsoft以外的其他平台。

但是,开发人员的目标是实现高质量的实施:符合标准且非常快速。

Visual C ++版本2015和2017保证二进制兼容性 (该库是2019年版本提供的库),但在标准定稿之前已实现的功能(工作文件和技术规范C ++标准委员会)除外。

WCBF02分支(仍在Microsoft内部)在二进制级别包含不兼容的更改,但在源代码级别不包含(对于标准库的更新,有必要重新编译项目,而不仅仅是更改DLL)。 该分支包含许多改进和修复,将很快公开发布。

与某些被描述为免费的项目不同, Microsoft建议报告缺陷并为项目代码做贡献 (在这种情况下,有必要签署CLA,以赋予Microsoft必要的权利来重新分配文稿,尤其是在项目许可证变更的情况下,LLVM面临着几年的困难)。

在不远的将来, Microsoft应该将其内部测试套件添加到项目中。 内部升级的错误列表正在迁移到GitHub。 目前,编译是通过MSBuild完成的,但正在进行向CMake的迁移。 正在实现C ++ 20功能。

其他Visual C ++组件不应免费获得许可证。 Microsoft通过声明标准C ++库完全独立于编译器(例如,与标准C库相对),并且与其他编译器组件相比发展非常迅速,证明了这一选择的合理性。

STL源代码位于 现在可以在Github上使用 感兴趣的人将可以在这里下载或检查其代码。

GitHub存储库包含该产品的所有源代码, 具有更多信息的新CMake和README构建系统。 该库是根据Apache 2.0许可获得许可的(某些二进制文件除外)。

显然, 这不会影响只想使用STL的开发人员, 因为它可以在Visual Studio IDE中使用。 但是,想要参与STL开发的开发人员可以使用GitHub存储库进行。

迁移到GitHub的工作仍在进行中,但是现在可以克隆和构建代码了。


发表您的评论

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

*

*

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