参与 Clang 项目

当你检出并构建 clang 并尝试使用它后,你可能会想知道你可以做些什么来改善它并为它的开发做出贡献。或者,你可能只是想关注项目的开发,看看它的进展。

贡献

查看 黑客攻击 文档以了解如何编写补丁。

关注进展

Clang 是 LLVM 项目 的一个子项目,它有一个 Discourse 论坛和邮件列表

与项目中的其他开发人员交流的最常见方式是通过 Clang 前端 Discourse 论坛 。clang 论坛是一个非常友好的地方,我们欢迎新人。论坛存档,所以你可以浏览以前的讨论或通过网页跟踪开发,如果你喜欢的话。

如果你正在寻找需要处理的事情,请查看我们的 开放项目 页面或浏览 LLVM 错误跟踪器

为 Clang 贡献扩展

Clang 旨在支持实验,允许程序员轻松扩展编译器以支持很棒的新语言功能和工具。在某些时候,这些扩展的作者可能会建议将这些扩展作为 Clang 本身的一部分,以使整个 Clang 社区受益。然而,扩展(尤其是语言扩展)对 Clang 具有长期的维护成本。扩展的益处需要与这些成本相权衡。Clang 项目使用以下标准进行评估

  1. 有显著用户群的证据:这基于许多因素,包括现有用户群,用户如果可以使用该功能,他们可能会采用该功能的可能性,以及由此带来的任何次要影响,例如库采用该功能并为其用户提供利益。
  2. 必须驻留在 Clang 树中的特定需求:有些扩展最好表达为单独的工具,即使它们最终被托管为 LLVM 伞形项目的一部分,也应该保持为单独的工具。
  3. 规格:规格必须足以理解功能的设计以及解释特定示例的含义。规格应该足够详细,以至于另一个编译器供应商可以实现该功能。
  4. 在适当的管理组织中的表示:对于受标准委员会(C、C++、OpenCL)管理的语言的扩展,扩展本身必须在该委员会中有一个积极的提议和支持者,并且有合理的被接受的机会。Clang 应该驱动标准,而不是偏离标准。此标准不适用于所有扩展,因为一些扩展超出了标准机构的范围。
  5. 长期的支持计划:随着 Clang 的发展,越来越大或越来越复杂的 Clang 扩展需要相应的承诺来支持它们,包括随着时间的推移改进它们的实现和规范。贡献者做出承诺的能力与承诺本身一样重要。
  6. 高质量的实现:实现必须很好地融入 Clang 的架构,遵循 LLVM 的编码约定,并满足 Clang 的质量标准,包括诊断和完整的 AST 表示。这对语言扩展尤为重要,因为用户将通过编译器的行为来了解这些扩展是如何工作的。
  7. 测试套件:广泛的测试对于确保语言扩展不会被 Clang 的持续维护破坏至关重要。测试套件应该足够完整,以至于另一个编译器供应商可以想象地针对它验证他们对该功能的实现。
  8. 对单一仓库中受影响的其他项目的支持故事:如果扩展可能会影响项目的其他部分(libc++、lldb、compiler-rt 等),则提议需要记录对这些项目的影响以完全支持扩展以及预期支持的级别。受影响的项目社区需要同意该计划。