Linux 内核邮件列表中围绕内核中使用 Rust 编程语言的讨论仍在继续... Linus Torvalds 在很大程度上没有参与 LKML 围绕 Linux 内核 Rust 政策的讨论,也没有参与对 Rust 持不同意见的内核开发人员和维护人员之间的内斗。 不过今天晚上,Linus Torvalds 还是决定参与讨论。
#N-NI+qX
m
.2)P~a 虽然几天前有评论称 Linus Torvalds 据说他会不顾维护者的反对合并 Rust 内核代码,但在回应 Christoph Hellwig 时,他进一步澄清了自己的立场。 戴着 DMA 维护者帽子的 Hellwig 一直反对将 Rust 代码与内核中的 DMA 区域合并。
~5aq.hF1,A m9^?p Linus Torvalds 今晚做出了回应,他澄清说,维护者可以选择在他们监管的内核区域中积极使用 Rust 绑定并参与其中,也可以采取放手不管的方式,让 Rust 与他们的代码形成互补。 但内核维护者不能反对新的 Rust 代码成为其 C 代码的有效"用户"。 Linux 内核维护者既可以参与任何拟议的 Rust 代码,也可以选择不参与,让它在内核中互补,但他们不能任意阻止它成为自己代码的用户。
d OY+| P\ H
>@yC “我满怀希望,并试图看看这个长线程是否会产生任何建设性的结果,但这似乎是倒退(或至少不是前进)。
3mWd?!+m= Xg#g`m%(M 事实上,您反对的拉取请求根本没有触及 DMA 层。
e W*nRha Hl&]r'bK 它实际上只是它的另一个用户,在一个完全独立的子目录中,没有以任何方式、形式或形式更改您维护的代码。
ZgO7W]Z4 {rr
ED 我发现你抱怨代码的新用户,然后你不断提出这些完全垃圾的论点,这让我很沮丧。
IXp P.d k07 JMS? 老实说,你一直在说“作为 DMA 维护者,我控制 DMA 代码的用途”。
v~73 d>F=|dakL 而这并不是*任何*工作的运作方式。
dL"$YU9z vO" $Xw 接下来是什么?说特定的驱动程序不能做 DMA,因为你不喜欢那个设备,而作为 DMA 维护者,你控制谁可以使用 DMA 代码?
(mHFyEG R{.wAH( 这正是你正在尝试的与 Rust 代码有关。
57+^T}/> ?7:"D e 你说你不同意 Rust——这很好,没有人要求你编写或阅读 Rust 代码。
GpF, =: Cg
85 但是你采取这种立场意味着 Rust 代码甚至不能使用或与你维护的代码交互。
hBLg;"=Em cd}TDd(H% 所以让我非常清楚:如果你作为维护者觉得你控制着谁或什么可以使用你的代码,那你就错了。
iZ[o2Tre r jU $*+ 从技术上来说,我尊重你,我喜欢和你一起工作。
_*Vq1D ]C nngL,-v#F 不,我不是在寻找唯唯诺诺的人,我喜欢你指出我的胡言乱语。我有时会说一些蠢话,需要有人站出来告诉我我在胡说八道。
2!dIW5I 7 pg8kq@ 但现在我要指出你的*你的*。
l;Zc[6 `Pl=%DR 所以这封电子邮件不是关于一些“Rust 政策”。这封电子邮件是关于一个更大的问题:作为维护者,你负责你的代码,当然——但你不负责谁使用最终结果以及如何使用。
1`_Mc ] r3Z-mJ$: 你不必喜欢 Rust。你不必关心它。这一点从一开始就很清楚,没有人会被迫突然学习一门新语言,那些想纯粹在 C 端工作的人完全可以继续这样做。
R|!4Y` \@OKB<ra 所以回到你声明的核心:
oG@P M+{ hUGIy( “文档声称没有子系统被强迫采用 Rust”
sut j
G`m "_'9KBd! 这是非常正确的。
9L:v$4{LU C& Nd|c 你没有被强迫采用任何 Rust 代码,或关心 DMA 代码中的任何 Rust 代码。你可以忽略它。
3 ;.{
O%bX RW>Z~Nj 但“忽略 Rust 方面”也自动意味着你在 Rust 方面没有任何发言权。
RWA|%/L hPFIf>%} 你不能两全其美。你不能说“我不想和 Rust 有任何关系”,然后在下一句话中说“这意味着我将忽略的 Rust 代码不能使用我维护的 C 接口”。
@zfeCxVOA
e%'9oAz 想要参与 Rust 方面的维护者可以参与其中,通过参与其中,他们将对 Rust 绑定的外观有一定的发言权。他们基本上也成为 Rust 接口的维护者。
#FaR?L![Y IRo[|&c 但选择“我不想处理 Rust”选项的维护者基本上也不必为 Rust 绑定操心 - 但结果他们也不会对 Rust 方面发生的事情发表任何意见。
`p1`Sxz? W,Dr2$V 因此,当您更改 C 接口时,Rust 人员将不得不处理后果,并且必须修复 Rust 绑定。这就是这里的一种承诺:在承诺他们不必处理 Rust 问题的情况下,围绕不想处理 Rust 问题的 C 开发人员有一道“保护墙”。
>R !^aJ 1ygu>sKS&A 但那道“保护墙”基本上是双向的。如果您不想处理 Rust 代码,您就对 Rust 代码没有任何发言权。
ew?UHV N@)4H2_u \ 换句话说:“没有人被迫处理 Rust”并不意味着“每个人都可以否决任何 Rust 代码”。
`5 e#9@/e +~FH'DsT 看到了吗?
Bfw>2 zi*D8!_C 不,我实际上并不认为这需要那么黑白分明。我已经用非常黑白分明的术语陈述了上述内容(“也成为 Rust 绑定的维护者”与“根本不想处理 Rust”),但在很多情况下,我怀疑这将是一条不那么苛刻的界线,子系统维护者可能*知道* Rust 绑定,并愿意与 Rust 方面合作,但可能不会积极参与。
0TA/ExJ-LT k )){1O 所以它真的不必是“全有或全无”的情况。
u> >t"w PVEEKKJP]J Linus”
I[t)V*L9 y'pG'"U]_ 这就是 Linux 内核代码 Rust 争论的现状。
a.8 nWs^