参与贡献

LLVM 欢迎各种形式的贡献。要开始参与,请查看以下主题

为 LLVM 贡献代码

关于如何为 LLVM 做出贡献的概述。

LLVM 开发者政策

LLVM 项目关于开发者及其贡献的政策。

LLVM 代码审查政策与实践

LLVM 项目的代码审查流程。

LLVM 社区支持政策

LLVM 针对核心和非核心组件的支持政策。

Sphinx 快速入门模板

用于编写新的 Sphinx 文档的模板 + 教程。它旨在以源代码形式阅读。

如何提交 LLVM bug 报告

关于如何正确提交您在 LLVM 系统中遇到的任何 bug 信息的说明。

LLVM Bug 生命周期

描述了 bug 如何被报告、分类和关闭。

LLVM 编码标准

详细介绍了 LLVM 编码标准,并提供了关于编写高效 C++ 代码的有用信息。

LLVM GitHub 用户指南

描述了如何在 GitHub 上使用 llvm-project 仓库和代码审查。

二分法查找 LLVM 代码

描述了如何在 LLVM 的仓库上使用 git bisect

关于 git 仓库的策略

围绕 git 仓库的策略集合。

开发流程

关于 LLVM 开发流程的信息。

创建 LLVM 项目

针对使用 LLVM 基础设施的新项目的操作指南和模板。这些模板(目录组织、Makefile 和测试树)允许项目代码位于 llvm/ 树的外部(或内部),同时使用 LLVM 头文件和库。

如何向公众发布 LLVM

这是准备 LLVM 发布的指南。大多数开发者可以忽略它。

如何验证新版本

这是在发布过程中验证新版本的指南。大多数开发者可以忽略它。

如何将您的构建配置添加到 LLVM Buildbot 基础设施

关于向 LLVM buildbot master 添加新构建器的说明。

当前版本的发布说明

这描述了新功能、已知 bug 和其他限制。

论坛 & 邮件列表

如果您在这些文档中找不到您需要的内容,请尝试查阅 Discourse 论坛。还有针对 LLVM 项目所有提交的提交邮件列表。《LLVM 社区行为准则》适用于所有这些论坛和邮件列表。

LLVM Discourse

关于 LLVM 和相关子项目的所有事物的论坛。其中有针对 LLVM 内各种领域的类别和子类别。您还可以查看标签或搜索特定主题。

提交存档 (llvm-commits)

此列表包含 LLVM 开发者向仓库提交代码更改时所做的所有提交消息。它也可用作补丁审查的论坛(即在此处发送补丁)。它对于那些想要紧跟 LLVM 开发前沿的人很有用。此列表的邮件量非常大。

Bug & 补丁存档 (llvm-bugs)

每次 bug 被打开和关闭时,此列表都会收到电子邮件。它的邮件量比 LLVM-dev 列表更大。

LLVM 公告

如果您只想了解项目范围内的公告,例如发布、开发者会议或博客文章,那么您应该查看 LLVM Discourse 上的公告类别。

在线同步会议

针对特定主题组织了许多定期通话。可以预料的是,主题范围会随着时间的推移而变化。在撰写本文时,组织了以下同步会议。《LLVM 社区行为准则》适用于所有在线同步会议。

如果您想组织新的同步会议,请在下表中添加信息。还请为其创建日历事件,并邀请 calendar@llvm.org 加入该事件,以便它显示在LLVM 社区日历上。请参阅关于在 LLVM 社区日历邀请中添加内容的指南,以获得关于在日历邀请中添加哪些内容的更多指导。

表 128 LLVM 定期同步会议

主题

频率

日历链接

会议纪要/文档链接

循环优化工作组

每月第一个星期三

ics

会议纪要/文档

RISC-V

每隔一周的星期四

ics gcal

会议纪要/文档

ML 引导的编译器优化

每月

会议纪要/文档

LLVM 安全组

每月,每月第三个星期二

ics gcal

会议纪要/文档

CIRCT

每周,星期三

会议纪要/文档

flang

多个会议系列,在此处记录

OpenMP

多个会议系列,在此处记录

LLVM 别名分析

每 4 周的星期二

ics

会议纪要/文档

LLVM 指针认证

每月,星期一

ics

会议纪要/文档

LLVM 嵌入式工具链

每 4 周的星期四

ics gcal

会议纪要/文档

Clang C 和 C++ 语言工作组

每月的第 1 个和第 3 个星期三

gcal

会议纪要/文档

LLVM SPIR-V 后端工作组

每周,星期一

会议详情/议程

SYCL 上游工作组

每隔一周的星期一

gcal

会议详情/议程

向量化改进工作组

每月第三个星期二

ics

会议详情/议程

对于事件所有者,我们的 Discord 机器人还支持发送即将到来的同步会议的自动公告。请参阅 Discord 机器人事件 Ping 部分以获取信息。

过往在线同步会议

一些在线同步会议已不再举行。我们在此处继续指出它们,以跟踪会议记录,并以防将来有人想要恢复它们。

表 129 LLVM 已停止举行的同步会议

主题

频率

日历链接

会议纪要/文档链接

可扩展向量和 Arm SVE

每月,每月第三个星期二

ics gcal

会议纪要/文档

LLVM 中的 MemorySSA

每 8 周的星期一

ics gcal

会议纪要/文档

GlobalISel

每月第二个星期二

gcal

会议详情/议程

向量谓词化

每隔一周的星期二,UTC 下午 3 点

会议纪要/文档

MLIR 设计会议

每周,星期四

会议纪要/文档

在线答疑

许多经验丰富的 LLVM 贡献者定期安排时间进行聊天,为任何寻求指导的人提供帮助。请查找谁在何时通过哪种媒介提供帮助,以及他们的专业领域是什么的列表。不要太害羞,请拨入!

在线答疑也列在LLVM 社区日历上。当然,人们有时会休假,所以如果您拨入但发现没有人,很可能是他们那天碰巧休息。

LLVM 社区行为准则》适用于所有在线答疑。

表 130 LLVM 在线答疑

姓名

范围内的主题

何时?

哪里?

语言

Kristof Beyls

关于如何为 LLVM 贡献代码的一般问题;组织聚会;提交演讲;以及其他与 LLVM 相关的一般主题。Arm/AArch64 代码生成。LLVM 安全组。LLVM 在线答疑。

每月的第 2 个和第 4 个星期三上午 9:30 CET,持续 30 分钟。ics

Jitsi

英语,弗拉芒语,荷兰语

Alina Sbirlea

关于如何为 LLVM 贡献代码的一般问题;女性在编译器领域;MemorySSA、BatchAA、各种循环优化 pass、新的 pass 管理器。

每月,第二个星期二,太平洋时间上午 10:00/欧洲中部时间晚上 7:00,持续 30 分钟。ics gcal

GoogleMeet

英语,罗马尼亚语

Aaron Ballman (他/他)

Clang 内部原理;前端属性;clang-tidy;clang-query;AST 匹配器

每月,第二周星期一和第三周星期五,东部时间上午 10:00 和下午 2:00,持续 60 分钟。ics gcal

GoogleMeet

英语,挪威语(不流利)

Johannes Doerfert (他/他)

OpenMP、LLVM-IR、过程间优化、Attributor、研讨会、研究,……

每周,星期三上午 9:30(太平洋时间),持续 1 小时。ics

MS Teams

英语,德语

Tobias Grosser

关于如何为 LLVM/MLIR 贡献代码的一般问题、Polly、循环优化、FPL、LLVM 研究、计算机科学博士学位、Google 编程之夏。

每月,最后一个星期一,伦敦时间 18:00(通常是太平洋时间上午 9 点),持续 30 分钟。

视频通话

英语,德语,西班牙语,法语

Alexey Bader

SYCL 编译器、offload 工具、OpenCL 和 SPIR-V、如何贡献代码。

每月,第二周星期一,太平洋时间上午 9:30,持续 30 分钟。

GoogleMeet

英语,俄语

Maksim Panchenko

BOLT 内部原理、IR、新的 pass、提案等。

每月,第二周星期三,太平洋时间上午 11:00,持续 30 分钟。

Zoom

英语,俄语

Quentin Colombet (他/他)

LLVM/MLIR;代码生成(指令选择 (GlobalISel/SDISel)、机器 IR、寄存器分配等);优化;MCA

每月,第一个星期三,太平洋时间上午 8:00,持续 30 分钟。ics gcal

Google meet

英语,法语

Phoebe Wang (她/她)

X86 后端、关于 X86 的一般问题、女性在编译器领域。

每月,第三个星期三,北京时间上午 8:30,持续 30 分钟。

MS Teams

英语,中文

Amara Emerson

GlobalISel 问题。

每月,第四个星期三,太平洋时间上午 9:30,持续 30 分钟。

Google meet

英语

Maksim Levental 和 Jeremy Kun

MLIR 新手和一般讨论 (直播)

每两周,星期三,美国太平洋时间下午 2:00,持续 90 分钟。

直播聊天或 Google meet

英语

Renato Golin

通用 LLVM、MLIR & Linalg、分布式计算、研究、社交。

每月第一个星期五,英国时间 14:00,持续 60 分钟。

Google meet

英语,葡萄牙语

轮换主持人

入门、初学者问题、新贡献者。

每周二美国东部时间下午 2 点(太平洋时间上午 11 点),持续 30 分钟。

Google meet

英语

对于活动所有者,我们的 Discord 机器人还支持发送即将到来的在线答疑的自动公告。请参阅 Discord 机器人事件 Ping 部分以获取信息。

在线答疑主持人指南

  • 如果您有兴趣成为在线答疑主持人,请将您的信息添加到上面的列表中。请为其创建日历事件,并邀请 calendar@llvm.org 加入该事件,以便它显示在LLVM 社区日历上。请参阅关于在 LLVM 社区日历邀请中添加内容的指南,以获得关于在日历邀请中添加哪些内容的更多指导。

  • 在开始在线答疑会话时,如果您尚未设置 Discord 机器人集成,请考虑在 #office-hours Discord 频道上输入类似 “大家好,在接下来的半小时内我将在 视频聊天 URL 提供聊天。我期待在视频聊天或此处进行对话。” 这样的内容。

    这样做可以帮助
    • 克服首次拨入的潜在焦虑,

    • 喜欢在拨入之前先通过文本聊天交换几条消息的人,以及

    • 提醒更广泛的社区在线答疑的存在。

  • 如果您决定不再主持在线答疑,请从上面的列表中删除您的条目。

Discord

可以在社区的 Discord 聊天服务器上找到 LLVM 项目(包括 Clang 等子项目)的用户和开发者。服务器受到积极管理。

#buildbot-status 频道有一个用于 LLVM buildbot 状态更改的机器人。当构建从通过变为失败时,以及当构建从失败变回通过时,机器人将使用指向构建机器人的链接更新频道。这是主动监控构建状态的好方法。

当您的电子邮件出现在 blamelist 上时,机器人还支持 @mention-ing 您。有关更多详细信息,请向机器人发送 DM help

Discord 机器人事件 Ping

我们的 Discord 机器人支持自动发送关于 LLVM 社区日历上即将发生的事件的消息到 Discord。此行为在每个事件的基础上进行控制,通过事件描述中的元数据。每个元数据应在事件描述中单独占一行。

当前支持的元数据是

  • discord-bot-event-type - 必需。指定事件类型。有效值为 office-hourssync-up

  • discord-bot-channels-to-mention - 有时必需。要在其中发布通知的 Discord 频道列表,以逗号分隔。如果您的 discord-bot-event-typeoffice-hours,则 #office-hours 频道将隐式附加到此列表(因此,您无需指定此项)。否则,您必须在此处指定一个值。

  • discord-bot-mention - 可选。要在每个事件通知中 ping 的人员列表,以逗号分隔。所有提及的名称都必须是 Discord 用户名,并且必须带有前导 @。例如,@foo, @bar

  • discord-bot-reminder-time-before-start - 可选。在事件开始前多少分钟发送 ping。这应格式化为整数。默认为 30。

  • discord-bot-message - 可选。要附加到所有事件 ping 的文本。

具有有效元数据的事件描述示例是

Regular office hours to chat with people about LLVM! We can help with
questions, troubleshooting bugs, etc.

discord-bot-channels-to-mention: #beginners, #foo
discord-bot-event-type: office-hours
discord-bot-mention: @gburgessiv, @bar
discord-bot-message: Come join us for office hours!
discord-bot-reminder-time-before-start: 5

此元数据将提示 Discord 机器人

  • 在给定事件开始前 5 分钟发送 ping,并在 ping 中提及 @gburgessiv@bar

  • 将 ping 发送到 #beginners#foo#office-hours 频道

  • 在 ping 中包含文本 “欢迎加入我们的在线答疑!”

在发送 ping 前几分钟,机器人将再次检查事件是否已被取消。

如果您需要帮助进行故障排除,或者有功能请求/问题,请随时 ping @gburgessiv!

聚会和社交活动

除了开发者会议和研讨会之外,还有几个名为 LLVM Socials 的用户组。我们非常鼓励您加入您所在城市的其中一个。或者如果没有,就创建一个新的

如何在您所在的城镇启动 LLVM Social

社区范围提案

关于社区行为方式以及如何更好地改进工作流程的重大变更提案。

将 LLVM 项目迁移到 GitHub

从 SVN/Git 迁移到 GitHub 的提案。

Bugpoint 重新设计

Bugpoint 工具重新设计的文档。

Test-Suite 扩展

针对 llvm 测试套件的附加基准/程序的提案。

变量名计划

更改变量名编码标准的提案。

向量谓词化路线图

关于 LLVM 中谓词向量指令的提案。

LLVM 社区日历

我们的目标是维护一个公开的日历视图,其中包含 LLVM 社区中发生的所有事件,例如 在线同步会议在线答疑。日历可以在 https://calendar.google.com/calendar/u/0/embed?src=calendar@llvm.org 找到,也可以在下面内嵌查看

请注意,LLVM 社区日历的 Web 视图以协调世界时 (UTC) 显示事件。如果您使用 Google 日历,请考虑使用右下角的 + 按钮订阅它,以便在您的本地时区与其他日历一起查看所有事件。

关于在 LLVM 社区日历邀请中添加内容的指南

要添加您的事件,请为其创建日历事件,并邀请 calendar@llvm.org 加入。您的事件随后应显示在社区日历上。

请在您的日历邀请中添加以下信息

  • 撰写一段文字描述事件的内容。包括事件的目标受众以及讨论的主题类型等信息。

  • 明确声明《LLVM 社区行为准则》适用于此事件。

  • 明确指出

    • 组织者是谁。

    • 在发生任何行为准则问题时,联系人是谁。通常,这将是组织者。

  • 如果您有事件的会议纪要,请添加指向这些纪要的链接。会议纪要的一个好去处可以是 LLVM Discourse 上的帖子。

  • 如果您正在主持同步会议或在线答疑活动,并希望通过 Discord 机器人进行公告,请添加相关的元数据(完整描述在 Discord 机器人事件 Ping 部分中提供)。

邀请示例如下

This event is a meetup for all developers of LLDB. Meeting agendas are posted
on discourse before the event.

Attendees are required to adhere to the LLVM Code of Conduct
(https://llvm.net.cn/docs/CodeOfConduct.html). For any Code of Conduct reports,
please contact the organizers, and also email conduct@llvm.org.

Agenda/Meeting Minutes: Link to minutes

Organizer(s): First Surname (name@email.com)

discord-bot-channels-to-mention: #lldb
discord-bot-event-type: sync-up
discord-bot-mention: @host-username, @another-host
discord-bot-message: Come join us to chat about LLDB!
discord-bot-reminder-time-before-start: 30