发布具有Microsoft CodeGen功能的Clang编译器(2016年3月)

[原文发表地址] 发布具有Microsoft CodeGen功能的Clang编译器(2016年3月)

[原文发表时间] 03/31/2016

很高兴来宣布具有Microsoft CodeGen功能的Clang编译器(又名Clang/C2)工具集。此次发布修复了大量的社区中开发人员报告的bug以及我们在测试中发现的一些bug。比如,你们中的许多人都报告了不能使用Clang/C2编译较大的项目。我们在此次更新中启用了/bigobj选项,所以现在你们可以使用Clang/C2来编译较大项目。此外,我们还修复了一些编译器、类库、调试器上的一些bug,并且改进了安装过程中的安全性。

 

你是不是只下载了Visual Studio 15预览版?不用担心,在VS15上同样可以使用Clang/C2。在2016年3月的这次更新中,无论是初始设置对话框中的一个选项还是通过选择 新建项目->Visual C++->Cross Platform下的一个模板都可以来在VS15里使用Clang/C2。

clang

这次是第三次发布具有Microsoft CodeGen功能的Clang编译器。这篇文章只是讨论一下自从一月份的更新之后的变化。所以如果你是首次接触Clang/C2,你应该先去浏览一下之前的两篇文章。11月初次发布的那篇博客里提出了许多关于工具集的信息,一月份发布更新的博客中覆盖了我们首轮的工作进展和bug修复。(这些文章全部都指向一个关键字“Clang”)。

此次发布基于Clang 3.7,并且这次将C2.dll的版本修订到了19.0.25115.0。

 

新特性

  • 支持/bigobj开关,使编译器可以支持超过64K的对象文件。这对于大型机器生成源文件或是大量使用模板的代码是非常必要的。

客户提出的bug的修复

  • 修复了当路径中包含(-)连字符,关于给Clang.exe指定路径名称的一个bug。
  • 修复了IDE中的一个关于路径中的附加反斜杠(\)影响随后的引号(“)的bug。
  • 修复了关于Boost中char16_t/char32_t视为不被识别的为内置类型的断言错误。

安装和打包中bug的修复

  • 未来的更新将会通过 “Notifications” 工具箱来为那些早已安装了组件的开发人员提供更新。

STL和CRT中的bug的修复

  • 修复了许多来自库代码编译的内部编译错误。
  • 启动Clang正确拷贝抛出的异常。
  • 现在CRT使用_builtin_offset来在Clang中进行编译。
  • 修复了两个阻碍Ranges v3在Clang上编译的bug。

调试器中的bug修复

  • 区分”HRESULT”和”long”。
  • 修复了模板特化的基类丢失调试信息的bug。

怎么获取这次更新

  • 方法1:
    • 控制面板->程序->程序和功能。
    • 右键点击”Microsoft Visual Studio Enterprise 2015”(或者”Microsoft Visual Studio 15 Preview”如果你有Visual Studio下个版本的安装预览)。
    • 点击”更改”。
    • 点击”修改”。
    • 选择” Clang with Microsoft CodeGen”—2016年3月发布。以前的版本将会被标记为”过期的”。
  • 方法2:
    • Visual Studio 2015: 直接下载并运行VS 2015安装包
    • Visual Studio 15预览:使用Visual Studio 15安装包

Bug报告:

当提交Clang/C2特有(不再Clang/LLVM上重现的)的bug时,请确保一下操作:

  • 请在https://connect.microsoft.com/VisualStudio上提交你的问题。
  • 请在你的bug报告的标题前加上[Clang/C2]的前缀。
  • 如果可以,请确保提交的关于重大bug的报告中包含预先处理过的资源文件和相关的运行脚本。并将搜索字符串:” PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:”添加在你的build日志中。
  • 你也可以在clangc2 @microsoft.com 给我们发邮件问问题。