![]() |
1
hxndg 3 天前 ![]() 我建议 RUST 开发者直接开发新的内核再争论吧,毕竟使用 RUST 开发出安全的内核,需要安全的语言+安全的开发,缺一不可。不是说语言安全就够了。
|
![]() |
2
rrfeng 3 天前 ![]() ?张口就来
|
![]() |
4
VchentozV OP |
7
liaohongxing 3 天前 ![]() 前几天 v2 相关讨论 https://v2ex.com/t/1109794
|
![]() |
8
PTLin 3 天前 ![]() https://www.zhihu.com/question/11940762516/answer/99152469629
你可以看看这个回答,这次事件根本不用绕到 c 和 rust ,单纯就是因为人的原因和技术政治原因。 本质上就是假如 Linux 要引入一门新的语言诞生的问题,因为 c 实在太老了,真正会的人只会越来越少,所以 rust 被合并进去了,可以当成是一种现代化尝试。并且你把 rust 换成任何一个语言照样会爆发类似这次的争吵。 |
![]() |
9
janus77 3 天前
这种就是典型的你行你上问题。。。不想多说
|
![]() |
10
VchentozV OP @PTLin c/c++ 这么简单的东西...越来越少...
妈的, 我昨天看到一个笑话, 微软研究者说使用 AI 会降低人的批判能力. 这他妈的不是又当又立吗? 反正我倾向于人类走向 wall-e 语言的世界. 我昨天还被我妈怼, 写字的能力弱化了, 写通知的能力弱化了, 语文表达能力弱化了, 在她眼里我就是个渣渣... 世界真的进步了吗? 我狂笑三声 |
![]() |
11
PTLin 3 天前 ![]() 大概意思就是,我是个前端,要加个页面,需要使用后端的一个接口。
然后通知了后端一声,说我要用这个东西了。 然后后端来了一句,我不允许你来更改我的代码,我也不想我改这个接口的时候还要通知你。 |
12
Yadomin 3 天前
那确实是有的啊,没人用而已
https://github.com/redox-os/kernel |
13
JoshuaEstell 3 天前
单片机还在用着汇编和 C ,怎么都不可能淘汰,甚至有些还是用的 C89
|
![]() |
14
PTLin 3 天前 ![]() @VchentozV 那只是你是这么觉得,事实上之所以进入内核的是 rust 而不是 cpp 就是因为 cpp 实在太复杂了,而且很多特性没法禁用,会给 review 造成问题。并且会 cpp 的群体和 c 很重合,主力军都不小了,需要一点更新的东西和更年轻的人来参与到 Linux 中。
|
![]() |
16
darkengine 3 天前
建议分裂出一个 Rinux 内核 /doge
|
![]() |
18
VchentozV OP @capric 其实主要 c++ 编译器做了很多"看不见"的事情, 你可以看看 c++ 对象模型.
至于多态继承什么的, 其实我觉得很多时候, 可以看看 CRTP/静态多态 + SOLID 原则在 C++ 上的应用, 或者说用 Java 的写法写 c++. 我后来也喜欢 c 比较简单, 虽然干活累一点. 我有一段时间 c++真的为了偷懒都喜欢写一些可复用的模板, 以至于 visual studio 的 intellisense 直接没响应了. 特别是我用了一些 c14 之后的特性, 比如我把 function 的参数都做成模版类型推导. i9 的机器直接卡爆. 感觉 屌软 在全员使用 C# 之后, c++ 就被抛弃了... 所以各种 c++ draft 的开发都比较慢, 但还是比 gcc 快.... |
19
lloovve 3 天前 via iPhone ![]() Rust 连单片机领悟都没混出像样点的东西,全面进 linux 别妄想了,后面可能会吧合并进去的几个 rust 东西直接移除,因为这样已经被污染内核了,造成跨平台移植困难
|
![]() |
21
PTLin 3 天前 ![]() 说实话,想要了解这次的冲突,起码要大概会点内核,明白大概的子系统,要很熟悉 rust ,并且看过 rust for linux 是怎么做抽象的和现在的项目进程才能说出点正常的评论。
不然就会犯以为现在 rust 重写了 Linux ,或者核心部分由 rust 编写了的错误。 实际上现在 rust 也就能写写驱动,做对 c 语言 api 的抽象,并且只抽象出来了非常小的一部分内核功能,这次的焦点 dma 的抽象都没有,离什么 rust 重写内核还差了十几年,而且 Linux 现在本身根本没有哪个部分是 rust 开发的。 |
22
CodeAllen 3 天前 ![]() C++11 、14 、17 、20 、23 、26
C89 、C95 、C99 、C11 、C17 、C23 标准都有这么多,还简单?而且 C 标准和 C++标准是独立的 |
![]() |
23
XIVN1987 3 天前
支持。。
Linux 有太多 C 代码了,,就算用 Rust 写部分模块,,可 Rust 模块和 C API 之间的接口没法保证内存安全,,建议干脆完全用 Rust 写一个全新的 OS ,,彻底保证内存安全。。 |
![]() |
24
VchentozV OP @capric 你也可以看看 ATL 早期的库. 我其实觉得 ATL / WTL 这些算是 c++ 用得比较成熟的东西了. 包括 Don Box 发明的 COM 和面向接口编程, 真的是 c++ 集大成的天才设计. 我觉得微软最牛逼的贡献之一, 就是解决了大规模并行开发的范式.
|
![]() |
25
VchentozV OP @CodeAllen 复杂的是 C++ 支持的范式太多, 然后各种范式像 spaghetti 那样搅和在一起, 这个人是这个人的写法, 男个人是那个人的写法, 说白了, 我看你不顺眼.
|
27
c0t 2 天前 via iPhone
别太理想化,rust 年初在 project goal 里把 rust for linux 定为代表项目,现在 project goal 里列出来的问题又解决了多少呢…大社区驱动的项目完全取决于贡献者的热情,比如 @compiler_errors 之于 async ,我几乎读过所有 active 的 RFC ,rust 的变化相对还是很慢的,任重而道远咯
|
![]() |
28
pagxir 2 天前 via Android ![]() AI 那么强,都说要替代程序员了。为什么不让 AI 把 Linux 内核重新用 rust 重写一遍
|
29
sir283 2 天前 via Android
linus 为了稳定跟统一性,肯定不会让 rust 进入上游啊。
这就好比一个公司业务用 Java 的 ssm 框架跑的好好的,稳定十来年了,结果你一来,说什么这个框架太老了,不行,要换成最新的 golang 来跑。这是一样的道理。 |
30
MrKrabs 2 天前 via iPhone ![]() firefox 整明白了吗?
|
31
cnbatch 2 天前
Rust 写的新内核,是指 Redox?
还是指 API 兼容原 Linux 的 Rust 版 Linux 内核? |
32
thevita 2 天前
rust 的 内核当然是有的
https://github.com/asterinas/asterinas Asterinas is a secure, fast, and general-purpose OS kernel, written in Rust and providing Linux-compatible ABI. |
33
cndns 2 天前 via Android
|
![]() |
34
hxndg 2 天前 ![]() @rrfeng 有啥张口就来的,接触的几个 Rust 神教都说 Rust 安全,但是光语言安全并不能证明开发出来软件安全,某企业的网关用 RUST 开发的,效率很好,但是有缓慢的内存泄露。我本身也是写过这玩意的代码的,但是涉及到写高性能的一些代码的时候我还是得切回 C/C++
前段时间我还本地改过 wirefilter 换底层正则库用 hyperscan ,但是 hyperscan 还是得底层 C 库支持,我建议先把重量级底层库替换再继续 @VchentozV 成熟是个定义,也许 Ruster 已经认为 Rust 成熟了。 @PTLin 技术政治原因没什么问题,不过 C 太老不觉得是被取代的理由, 多扯一句,rust 大规模进入内核是必然的吗?还是那句话,这个事情能带来什么肉眼可见的收益再说吧。 |
35
catazshadow 2 天前
rust 还是先解决自己连全局变量都不好使的毛病再来说 system programming 吧
|
![]() |
36
PTLin 2 天前
@hxndg 不是取代,是一直都有加入第二门稍微现代一点的语言到内核里建议,c++ for linux 的设想都十多年了,并且都有人写出 patchset 了,最后没被接受,最后不了了之了。
rust 所谓的内存安全其实不包含内存泄漏,而且现在的”内存泄漏“很大可能是是 glibc 分配器的问题,很多 rust 用 tokio 的程序换成 mimalloc 会好很多。并且所谓的安全其实反倒不是太重要,开发体验的提升才重要,毕竟 c 这个老古董,懂得都懂了,内核里现在都开始引入类似 go 里面 defer 的机制了。 并且这次吵起来中的人里就有维护 macbook 的那个 linux 发行版的人,因为那个内核里图形驱动就是 rust 写的,这个项目虽然不完善,现代的开发体验本身就是收益。 最后 rust 现在只是 kernel api 的抽象,最多只能用来写内核模块,短期内都不会出现 rust 写核心部件的情况。 |
37
w568w 2 天前 ![]() 从这帖子下的暴论就能看出有的人真的是张口就来。
@hxndg > 接触的几个 Rust 神教都说 Rust 安全……但是有缓慢的内存泄露 经典「对于别人论点中不懂的名词望文生义,然后打虚空靶」,你知道 memory safety 是什么意思吗?你知道内存泄漏是 safe 的吗?维基的定义给你,这可不是你口中的「 Rust 信徒」信口开河瞎编的词语哦: https://en.wikipedia.org/wiki/Memory_safety > 我本身也是写过这玩意的代码,但是涉及到写高性能的一些代码的时候我还是得切回 C/C++ 所以为什么要切回呢?为了「高性能」?但你明明说 Rust 的缺点是「可能内存泄漏」啊?看不懂你的前后逻辑。 > hyperscan 还是得底层 C 库支持,我建议先把重量级底层库替换再继续 孤例代表整体的谬论。rustls 替换 OpenSSL 、uutitls 替换 coreutils 算「重量级」吗?另外 Rust 本身标准库的正则性能就不低,我好奇为什么需要上 hyperscan ? 不信?数字说话,rust std 里的 regex 性能就是能和 hyperscan 打平手: https://github.com/rust-leipzig/regex-performance > rust 大规模进入内核是必然的吗?还是那句话,这个事情能带来什么肉眼可见的收益再说吧。 但现在连个「用 C 子系统的 Rust 接口定义」都不让进主线了,哪来的直接收益可以看呢?经典又要马跑又不准马吃草。 说到收益,Asahi Linux 用 Rust 编写的 Apple 设备驱动没有出现过重大内存安全问题算不算? @catazshadow > rust 还是先解决自己连全局变量都不好使的毛病 什么乱七八糟的,要么你已经五年以上没有用过 Rust 了,要么你根本没搞懂 Rust 中的全局变量怎么写。我用 Rust 从来没有遇到过全局变量不好使的问题。 |
38
james122333 2 天前 via Android
太难了 一堆人在吹用 rust 的好处 但在我眼里它有许多致命的坏处 撰写成本过高 工作上不能快速更动并翘二朗腿的语言不是很适合搬砖 太占硬盘还有编译慢都很致命 私下用如果排除以上因素还外加一个语法糖很魔幻 语法糖并没有什么哲学大架构的意义 考虑的小细节也是太多
|
39
w568w 2 天前 ![]() @w568w
再补充一句,要是说「编译速度慢」「依赖 LLVM Backend 」「工具链复杂化」「与 C 开发者协调困难,拖慢开发进度」「严格类型系统鼓励过早抽象,造成重构优化困难」,我都算 Ta 骂到点子上了。 但有的人偏偏既不懂 Rust ,又不懂 Linux ,没看过 RIL 的仓库,还根本不知道这次事件的来龙去脉是什么、双方分别是谁,看几个 AI 翻译的生成文章就开始张口就来,属实贻笑大方了。 |
40
kitrap 2 天前 via Android
c 的内核安全成熟,为啥里要搞一坨 rust 出来?一直都没有个充分的理由。想推 rust 的是手里有锤子看什么都是钉子?
|
![]() |
41
hxndg 2 天前 ![]() @w568w
说明你根本没看懂我在说啥,你的反驳很符合《学会提问》里面的一些观点,看起来非常专业,但是你攻击的点不对。 我的观点“使用 RUST 开发出安全的内核,需要安全的语言+安全的开发”,我并不觉得语言安全就一定要大规模推广,恰恰相反,重点还得“安全的开发”。所以我并不是要说 rust 导致内存泄露,重点是安全的开发 解释一下为什么要切回 C/C++,因为需要对 Suricata 做二次开发,涉及到引入新协议和多模态匹配的开发。Suricata 的多模态匹配部分是 C ,协议解析器是 Rust 的 至于你说的 rust std 的 regex 性能和 hyperscan 打平手。。。我后续会看一下这个 bench 的内容,起码我一年前写的时候我测试的同时匹配 20000 条正则规则时,hyperscan 的多模态匹配效率高很多(和条件相关) 孤例代表整体的谬论,这个的反驳我认可,但是我所谓的替换是指当我要编写代码的时候第一反应是安装 Rust 版本的基础哭而不是旧版本 最后一点“经典又要马跑又不准马吃草。”,这有什么好奇怪的呢?什么事情不是得先做出来比当前优秀的成果才能推广的?真以为这世界非常友善? |
![]() |
42
hxndg 2 天前
@PTLin
嗯,我理解是引入现代的语言,C++这个我觉得没可能,毕竟现在 C++自己都在革自己的命。。。 你们的假设我在攻击 Rust 还有内存泄露,有没有可能我是想说即使用所谓安全的语言,不经过安全的开发,也会开发出来不安全的软件。 |
43
w568w 2 天前
@hxndg #41
> 重点是安全的开发 所以你想表明什么,Rust 提供了一定安全,但因为没有把所有其他 Bug (包括内存泄漏,以及 C 语言的 Bug )从根本上全部解决,所以引入的意义很小? 我明确一下我的观点:「目前,Rust 加入 Linux 是为了预防未来的新模块中引入新的内存安全问题」,至于已有的 bug ,当然要靠 C 开发者来修咯。 > 解释一下为什么要切回 C/C++,因为需要对 Suricata 做二次开发 > 我所谓的替换是指当我要编写代码的时候第一反应是安装 Rust 版本的基础哭而不是旧版本 这都是你自己的情况,我没法读心提前知道。Again ,直接说「 Rust 不适合我的场景」不就好了,没看懂这和你前面的举例有什么关系。 |
44
catazshadow 2 天前
@w568w 来来来,Arc<Mutex<[T, SIZE]>>的全局变量要怎么用零初始化? C 的全局变量只要一行,rust 要几行?
|
![]() |
45
hxndg 2 天前
@w568w
我觉得你需要审视一下你对我观点的假设,我前面的观点都是“重点是安全的开发,而不是语言,人很重要“,所以建议直接 choose the hard way ,走自己的路。 而不是“Rust 没能解决所有问题,所以引入的意义很小”,涅槃谬误也太荒谬了。 至于你的观点,你说的“预防未来的新模块中引入新的内存安全问题“,所谓新的内存安全问题指什么,我很好奇, 你说“ Rust 不适合我的场景」”,当然可以这么说,我想表达的是,只有 Rust 成为最优选择的时候,Rust 语言才会有话语权,当然,这依然是纯观点,哈哈 |
![]() |
46
leconio 2 天前 via iPhone
Rust 大势所趋,但内核不是一个人开发的,贸然切换会丢失现有人力,举步维艰
|
48
w568w 2 天前
@catazshadow #44
首先,全局变量不能使用 Arc 初始化,因为它依赖原子计数器,而原子操作是平台定义的而且需要分配内存,请你回去重新学习一下。 强调一下,这不是语言的问题,相同的语义在 C 中也不可能实现,因为这就不是编译期静态初始化能完成的事。具体请读: https://users.rust-lang.org/t/what-prevents-arc-from-having-a-const-constructor/49532 另外,如果你试图编译 static ... = Arc::new ,编译器输出的报错会直接告诉你使用 LazyLock 即可,这也是一个解决方案。 然后,[T, SIZE] 这个语法我没查到,我猜你想说 [T; SIZE]?实现在这里: static GLOBAL: Mutex<[i32; 1024]> = Mutex::new([0; 1024]); 还有别的问题吗? |
49
catazshadow 2 天前 ![]() @w568w
rust 不能就不是语言的问题了。怪不得要被 linux 踢出来呢,果味十足,教人编程啊 来来来,还没完,T 是个 struct 的时候,你要几行啊?是不是还要来个 copy trait 啊?这要几行啊? |
50
catazshadow 2 天前
@w568w 对了,原子变量不能静态分配是吧?那我这 DEFINE_SPINLOCK() 是干啥的?你写过几行内核啊?
|
![]() |
51
JensenQian 2 天前 via Android
这边建议 linux 内核和三星的手机一样
一个猎户座版本,一个高通版本 |
![]() |
52
fgwmlhdkkkw 2 天前 via Android
我支持 C ,效率和灵活性加起来要比单纯的安全更重要一点。因为写 C 的程序员的初衷也不会是不安全。
|
![]() |
53
fgwmlhdkkkw 2 天前 via Android
相较于裸指针来说,Rc 都是消耗,更何况 Arc 。全世界这么多 linux 设备,为了计算 Rc 和 Arc 要多消耗多少能源呀。🤪
|
54
w568w 2 天前 ![]() @catazshadow #50
刚打了一大段字被 V2EX 吞了,比较坏心情。我说重点吧。 > 怪不得要被 linux 踢出来呢,果味十足,教人编程啊 鄙人不才,翻过两页 Rust 教程,教人写全局变量不成问题。至于第一句,我认为你完全在撒泼、无理取闹了。不知道你在对谁说话,我又不是 RIL team member 。 > T 是个 struct 的时候,你要几行啊 当然是一行。 > 是不是还要来个 copy trait 啊?这要几行啊? 咄咄逼人的语气,不明白你想说什么。首先,如果要做公平的比较,显然 C 的所有 struct 都是(在 Rust 语义上) Copy 的吧。如果禁止 Rust struct 实现 Copy ,那在 C 中根本找不到对应的语法特性了,比较没有意义。 但尽管如此,丢代码,这段代码还实现了动态确定每个元素赋值的需求(而不像 C 只能赋常数): https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=c180d3fc345e865024298088c079ad3e > 原子变量不能静态分配是吧?那我这 DEFINE_SPINLOCK() 是干啥的? ……什么乱七八糟的。旋转锁对应的是 Mutex ,我说的是「 Arc 不能静态分配」。 > 你写过几行内核啊? 移植重写过 NPU 驱动: https://github.com/w568w/alarm_repo/blob/main/linux-orangepi-3b-dev/0003-rknpu-add-rknpu-driver.patch 为 SBC 移植 u-boot: https://github.com/w568w/u-boot-orangepi-3b |
55
w568w 2 天前 ![]() @w568w #53 fix:上面那段代码的正确链接应该是 https://play.rust-lang.org/?version=beta&mode=debug&edition=2021&gist=978f5add73e7fa241821b926ec0f8efc ,都躺在剪贴板里,发错了。
|
56
w568w 2 天前 ![]() @catazshadow
所以为什么这么咄咄逼人呢,为什么我提代码你就要开始扣帽子 + 需求加码呢? 我很好奇「不能在一行内声明一个没有实现 Copy trait 的 struct 成员的静态预初始化数组」,就是你所说的「 Rust 连全局变量都不好使」?这样的需求你在 C 中甚至不可能碰到(因为 C 里所有 struct 都是 "Copy" 的)。 |
![]() |
57
msg7086 2 天前
@pagxir #28 你别说你还真别说,确实不远了。
很多项目的开发成本来源于人工,用 AI 以后对人工需求下降,很多不可能经济地实现的事情现在已经变成可能了。 前几天刚给一个开源项目发了 2 个 PR ,半 AI 半人工的优化,找到热点以后让 AI 做针对性优化,性能大幅提升。 这种本来可能要花几个小时甚至几天才能做好的事情,现在一个晚上就能写完了。 我只要花时间开 profiling 找到哪个函数最慢,然后告诉 AI 我要优化这段代码,AI 基本就能把事情干完了。 |
![]() |
58
cooltechbs 2 天前
有啊。Redox 了解一下。可惜曲高和寡。
|
59
mayli 2 天前
主要是开发和使用都费劲,rust 现在高层还可以,但是底层(内核)部分还是少
而且一堆驱动和文件系统都费劲,这玩意需要堆人力,或者把内核模块化,然后 ffi 调用现有接口。 然后是性能,你这要是比人力优化的还慢,那就只能是玩具了。 |
60
lsww 2 天前
开发相对好说,稳定需要时间检验。
|
![]() |
61
my3157 2 天前 via Android ![]() 我个人对开源项目的看法是,任何付诸行动而不是停留在口头上的行为都值得称赞(比如 RIIR),另外不就是因为拥抱变化才有了如今的百花齐放的开源项目么?
回归到问题本身,内核要不要引入第二种语言,我觉得只要有人愿意做,能控制质量和范围,逐步推进,多几种语言都没事,反而能吸引更多的贡献者 至于 Rust 和 C 或者别的语言之争,实在是没啥意思,不是踩低别人就能抬高自己,反之亦然,纯属个人或小部分人的口舌之快,不知道为啥有人这么执着,就像有的人对 if err != nil 深恶痛绝,有的人对 python/perl 里面的各种奇技淫巧爱不释手 |
![]() |
62
Mark24 2 天前 via Android
zig 也想进入内核,汇编觉得用 c,rust 都不够好,go 觉得我也可以试试,Crystal 如果 go 可以我也行。怎么办?
|
![]() |
63
glcolof 2 天前 ![]() @PTLin 内核增加一种新语言,并不会扩大维护者数量,只会降低维护者数量——理论上看起来可以取并集,现实中大部分时候只能取交集。
而且这个新语言还是使用人数更少、入门难度更大的 Rust ,这让“因为 c 实在太老了,真正会的人只会越来越少”这句话变得非常讽刺。 如 OP 说的,建议 Rust 发展自己的操作系统,或者开个 Linux 的新分支。 |
![]() |
64
PTLin 2 天前
@hxndg 你说的对呀,本来就是所谓内存安全的语言也未必开发出整体逻辑安全的软件呀,这个不是共识吗,rust 又不是你用了就没 bug 了,只是通过语法消除一点内存方面的问题。
|
65
yangyaofei 2 天前 ![]() 看高贵的 rust 信徒和其他人(包括正常 rust 使用者)辩经挺好玩的, 就是看多了有点无聊, 没有新的创意.
想起某个可爱的前同事,和他聊到空指针, 他表示应该弄出一门语言从定义到使用都直接去掉空这个概念, 这样就能避免这个问题了. |
![]() |
66
hd7771 2 天前
编程语言 O 神建议另起炉灶呢
|
67
w568w 2 天前 ![]() @yangyaofei #65
其他人(高贵的 Rust 信徒)我不清楚,既然这楼里只有我发表过相关论述,我就假定你在说我,故对号入座了。如果不是,还请见谅。 > 和其他人(包括正常 rust 使用者)辩经 我对正常 Rust 使用者的定义是,起码会写出能通过编译的代码,看到报错有基本的检索信息能力。楼上属于根本没怎么正经用过 Rust ,张口就来 Arc<Mutex<>> 静态变量。这是初学者常犯的错误(编译不通?加个 Arc<Mutex<>> 试试),但拿着一个入门常犯的错误来说一门语言不好,解释完正确写法还反将一军扣帽子是否沾点……? 我举个你可能熟悉的例子,这就好比一新人拿着 (1, 2).append(3) 得出「 Python 设计是一坨屎,**才用」,你和他解释 Tuple 和 List 的可变性区别,他直接开始问候你好为人师、高高在上。 至于什么 Rust 信徒,你可以翻我的发言记录咯,为什么我指出其他语言里的理解问题都没人说话,一指出 Rust 问题,立刻就被扣上信徒帽子?这是技术社区该有的氛围?怎么跟小孩过家家似的。 > 可爱的前同事,和他聊到空指针, 他表示应该弄出一门语言从定义到使用都直接去掉空这个概念, 这样就能避免这个问题了. 事实上,几乎所有新语言,包括 Go 、Zig 、Kotlin 、Dart 、TypeScript 、Julia 、Nim 、V ,全都要么严格限制了 null 的使用(可空类型),要么直接去掉了 null 。Rust 根本不是什么首创,也肯定不会是最后一个。连 null 的发明者自己很多年前都说 it's a mistake ,怎么还有人觉得去掉这个概念是天真的?眼光是否太狭隘了? @hd7771 > 编程语言 O 神建议另起炉灶呢 经典闭眼输出立场不看事实。 ==== 不过有一点是说对了,不管是哪个编程语言的社区,都有一群装睡叫不醒的人。你和他谈技术,他和你摆立场和屁股。社区政治才是核心啊。 |
![]() |
68
maix27 2 天前
@PTLin #11 实际上后端说的是“你前端不要这样,你要用这个东西就用,别往后端代码里丢,你写前端页面啥的没问题“
后端说“我不是讨厌 Rust ,Rust 很好”( AT 立场属于是)但你不应该直接放内核里,这样对于维护项目有很大压力,我们这个大项目能活这么久就是 ld 把关做的好,没有 代码边界,如果你喜欢 Rust ,可以在新项目里用,我不希望你把这个项目搞砸。“ 前端被拒绝了很难过,然后发社交媒体写小作文,给 ld 和整个团队上压力。 “我们偷偷干,发 patch 进内核树,给 ld 发提案让他评价,如果 ld 不发表意见,后端的意见不重要 继续往内核里插,如果 ld 和后端都不同意,那么我们前端项目基本就死了。 直到 Linus 或 Christoph 采取行动。其他一切都在拐弯抹角。”。(好家伙以偏概全是吧,不同意一个提案直接全项目死加离职小作文,给谁摆脸呢) 我不知道你们家前端咋想,但攻击性这么强的前端对团队协作应该没好处吧? |
![]() |
69
maix27 2 天前
|
![]() |
70
VchentozV OP |
71
zzz22333 2 天前 ![]() @PTLin #8 "因为 c 实在太老了,真正会的人只会越来越少" 只是你没接触到用 C 的工程师而已,所以给你的感觉是没人用 C 语言。 实际上不管是手机厂,云厂商,汽车行业,机器人行业,物联网行业,用 C 的都很多。
|
![]() |
72
VchentozV OP @maix27 说不定每一门语言兴起的时候都是这种样子, 没经历过上古时代, 无法妄加评论。想想国外的程序员兴起了多少年,国内兴起了多少年。再看看 35 岁危机。扯远了。
|
73
zzz22333 2 天前
作为只会 C 语言的开发者,不希望 Rust 进 Linux ,Linux 本身的东西都够吃一壶,还引入新的语言,搞死人。
|
![]() |
74
maix27 2 天前 ![]() @VchentozV #10 压根就不是技术
![]() 那拒绝的“后端老哥”也说了,不是政治原因,而是因为项目规模太大了,你别急着往核心项目里插其他语言的代码,Linux 能活到现在,发展的这么良性,就是 Linus 独裁者做的好,没有跟国内这些短命项目一样,出点啥新语言就插核心业务里。 人家也说了 Rust 没问题,Rust 很好,你要是想用就做新项目用,别插内核里把项目搞黄。 现在 Rust 到底能不能成器是不知道。项目搞黄倒是真的,先说 Rust 项目死了,然后写小作文发社交媒体,威胁 Linus 和那后端。 话说你们 Rustocean 都这么魔怔的吗,这 Rust 人也不是纯粹的开源开发者吧?而是一个大公司的员工,反正他内部能转岗,说白了靠这项目搞 KPI 罢了,哪像那后端老哥和 Linus 这样真的是维护了半辈子。 |
![]() |
76
maix27 2 天前
@VchentozV #72 老哥 sorry ,回错了,我回 PTLin 的
|
78
victorc 2 天前 ![]() 你用 rust 多写点代码就知道,这是 tm 一托 shit 一样的玩意,也配进内核,那会搞疯所有人
|
79
mizuki9 2 天前
@yangyaofei 空永远不能被消除,如果某个新语言声称去掉了空,不过只是发明了另一个“空”,甚至说不定更复杂难懂
|
80
hellomsg 2 天前
“都推进到 95%了,为什么 curl 还是放弃基于 Rust 开发了四年的 HTTP 后端替代”
|
81
fox0001 2 天前 via Android
GNU Hurd ,已经说明问题了吧
|
82
yangyaofei 2 天前 ![]() @VchentozV #70 就我浅显的知道的语言, 对空的去除基本上就是强制在进行操作之前进行判断和处理, 这挺好的, 但是离没有空还远得很, 毕竟空本身就是存在的.
同样的, rust 里面所谓的内存安全不泄露也是一种强制的行为或者说语法, 别的语言也可以做, 这没什么, 挺好的, 当时看的时候觉得很赞, 但是呢, 不是还有 unsafe, 不是还要调用 c 库, 不是还有内存泄露, 然后狂热的改造和逼迫改造来达到完美的无内存泄露, 一点点翻白能翻白的地方, 直到整个都是 rust 这样, 但是万一他就是有一些地方翻白不了呢. 理想乡是挺好的, 为了某个伟大的主义去实践. 但是总把(实践的)问题放在别人不懂没有真正实践那个伟大的主义才导致的问题这个点上, 只能让人觉得这个主义的普适性和完备性以及内部的逻辑自洽有待商榷. (不是指 OP 你, 虽然那些人会自己找上来的, 即使不想和他们交流) |
83
yangyaofei 2 天前
@mizuki9 #79 对, 因为空本身就是一个存在的东西, 用佛教的说法, 空这个东西本身就是非空的. 但是那种特性还挺好的, 相当于自动或被动的写 if 判断
|
![]() |
84
Nugine0 2 天前
@maix27
实际上是后端在只改动前端代码的 PR 里跳出来,说我看不懂这些代码你们别改了,到时候我改后端接口还得学前端语言。 前端说那我们自己维护前端这块,不需要你负责。 后端就认为前端在夺权,直接撕破脸开喷。 前端炸了,一纸小作文捅到社交媒体上。 ld 这时不潜水了,指责前端把事情闹大。 要我说没一个无辜的,最先引战的负主责。 |
![]() |
85
Nugine0 2 天前 ![]() 现在的社区氛围,Rust 用户在就事论事,反 Rust 魔怔人上来就扣帽子满嘴冒火。
我就请问了为什么对事不对人那么困难。 |
![]() |
86
maix27 2 天前 ![]() @Nugine0 #84 具体看第一条,我回 PTLin 的回答,没必要回我了,zhihu 没少见你装理中客拉偏架。
“那我们自己维护前端这块,不需要你负责。” 这后端就是那上游的唯一贡献者,到时候出问题你下游的💩别让上游擦,真到处拉屎给核心 C 开发者搞急了给你投票让禁用 Rust 。 转一下> 当然 Christoph 也不是毫无道理,他作为 DMA 子系统维护者,理论上有权对 DMA API 做 breaking change ,但是如果他真的这么做了,作为代价,他要帮所有下游使用者修复所有的编译错误,如果这个 breaking change 造成 Rust DMA Binding 失效,那他就无能为力了。 chirs 认为核心 dma 是自留地,api 应该是自己说了算。当他自己做 break change 时,有能力将目前下游全部修好。但是 r4l 加进来会导致他不能一己之力将下游修好,同时他不信任不愿意其他维护者协助。 < 人家后端同意你在(前端)驱动里拉屎,人家不同意在 DMA 里拉屎,够不够清楚? 说难听点,你老员工能干好的活,现在你新员工进来要抢权,到时候做差了又指望老员工背锅,这谁能受得了?人家明明白白跟你说,你先做小活干着,获取信任和经验,干个 5 ~ 15 年(哪个老员工没干这么久?)到时候再来说这个事。 好,请问你现在能告诉我 Rust 进 Linux 项目多久吗? Linux 项目发起多久了? |
![]() |
87
maix27 2 天前 ![]() @Nugine0 #85 别说 Christoph 不愿意,Linus 怕是也不愿意,人家也是让你先从边缘业务开始改造,谁让你改核心业务了?
> 现在的社区氛围,Rust 用户在就事论事,反 Rust 魔怔人上来就扣帽子满嘴冒火。 你对个锤子事,开马车的当然在对待落后交通工具的时候就事论事,等开汽车的上来你还能就事论事吗? 而且 Linux 这个项目能直接像你一样把 Rust 当先进生产力来看待吗?能直接用马车汽车的例子吗? 冒火不是很正常,V2/zhihu 的网友 5 ~ 10 年码龄以上的不少吧?工作中这样改技术栈的例子见的也不少吧?改一次的成本有多大人家应该是知道的。 更别说人家 Linux 项目,求的就是稳定,20 几年多少语言都进不了库,给你写写驱动算不错了,你真把别人当 sb 给你搞政治正确? > 为什么对事不对人那么困难 因为事是靠人做的,人做的不好要背锅,人没活做要死,你可以换位思考下,不要天天抱怨装理中客。我国为啥不裁员还加工资,为啥不招新人同时裁老人?信任不懂?你老板能随时裁老人,其他老人和新人自然对你也没啥信任可言,当然你要是做互联网业务当我没说,互联网是特别的。明不明白? |
![]() |
88
Nugine0 2 天前 ![]() @maix27
结论不符合你心意就是“装理中客拉偏架”呗。这种帽子到处都在扔,看来如今我也收到了。 https://rust-for-linux.com/rust-kernel-policy > The "RUST" subsystem maintains certain core facilities as well as some APIs that do not have other maintainers. However, it does not maintain all the Rust code in the kernel — it would not scale. > Nevertheless, the team can be approached for help if needed — indeed, the intention has always been to build a mixed team of people that could help across the kernel to bootstrap Rust. > Eventually, the "RUST" subsystem could also act as "fallback maintainers" for Rust code too, similar to how akpm serves as a last resort maintainer. 没说必须让你擦,你不行还能找人。 > However, exceptionally, for Rust, a subsystem may allow to temporarily break Rust code. The intention is to facilitate friendly adoption of Rust in a subsystem without introducing a burden to existing maintainers who may be working on urgent fixes for the C side. The breakage should nevertheless be fixed as soon as possible, ideally before the breakage reaches Linus. 你做 C 的 breaking change ,也允许临时破坏 Rust 构建。 > 人家后端同意你在(前端)驱动里拉屎,人家不同意在 DMA 里拉屎,够不够清楚? 写驱动要用 DMA ,你一万个不同意,就因为你 hate Rust 。这下下游没法干了,你这是合作的态度? > 好,请问你现在能告诉我 Rust 进 Linux 项目多久吗? Linux 项目发起多久了? https://en.wikipedia.org/wiki/Rust_for_Linux https://fosdem.org/2025/events/attachments/fosdem-2025-6507-rust-for-linux/slides/236835/2025-02-0_iwSaMYM.pdf 一批关键维护者,Google, Arm, Microsoft, Red Hat 等公司支持 Rust for Linux ,不然你以为 Linus 为什么推得动 Rust for Linux 进主线?人家内部斗争闹着玩呢? |
![]() |
89
maix27 2 天前 ![]() @Nugine0 #88 又开始扣 Hate Rust 帽子了,我说了,你要别人客观,就事论事,自己得先客观,别动不动扣“hate rust”的帽子。
Every additional bit that another language creeps in drastically reduces the maintainability of the kernel as an integrated project. The only reason Linux managed to survive so long is by not having internal boundaries, and adding another language completely breaks this. You might not like my answer, but I will do everything I can do to stop this. This is NOT because I hate Rust. While not my favorite language it's definitely one of the best new ones and I encourage people to use it for new projects where it fits. I do not want it anywhere near a huge C code base that I need to maintain. 看清楚了吗?人家没恨。别动不动扣帽子。 为啥说你装理中客?你上知乎看看就知道呗,你对那问题下所有举例子的一律不回复,能杠的就杠,还写篇回答装理中客,现在又在这喊冤,真没必要👬。 Google, Arm, Microsoft, Red Hat 等公司支持 Rust for Linux ,不代表就要动核心,Linus 也支持不代表现在就全部重写,我说了现在大家不是完全信任 Rust ,Rust 也没证明它对得起大家的信任,有几个项目用这个改写的已经迁移回去了,你能不能看清楚? 你是政治 zz 的获益者吗? Rust 不绝对就是绝对不 Rust 是吧?极端主义都卷到这来啦? > 写驱动要用 DMA ,你一万个不同意,就因为你 hate Rust 。这下下游没法干了,你这是合作的态度? 你是写驱动吗? ![]() If you want to make Linux impossible to maintain due to a cross-language codebase, do that in your driver so that you have to do it instead of spreading this cancer to core subsystems. (where this cancer explicitly is a cross-language codebase and not Rust itself, just to escape the flameware brigade). |
![]() |
90
Nugine0 2 天前 ![]() @maix27
你自己也承认你在对人不对事,承认你在冒火。帽子飞来飞去,你认为我“装理中客”,那我也没办法。 这样吧,你想让我回复哪个评论,你就贴链接出来,或者知乎私信我。 > This is NOT because I hate Rust Hellwig 这段叠甲承认他 hate Rust ,否认他干出这事是因为 Rust 。实际上呢?你猜? 下游写驱动要用 DMA ,没改到核心 C 代码,只是做了个 Rust binding ,也答应一旦被 break 会修复。 看到没,是要用,不是要改。 但 Hellwig 想单人掌控所有调用 DMA 的地方,完全不接受其他人合作。我是没看到有哪个人这样写项目的。 |
![]() |
91
lesismal 2 天前
两人都是大神, 各有对错, linus 的立场是非常正确的, 项目中有这种路线冲突之类的问题很正常, 应该沟通寻求各方都能接受的方案.
项目内的事情没必要发作文, 他们两个争论什么其实不是重点, 写作文才是导致问题爆发的点, 写作文才是真的搞政治的魔怔行为, 完全意识不到自己的问题而且随便去发作文说明他本身就心智不咋地. 强烈支持 linus ! 对于 rust, 至少我见到的有足够基础的人都是赞美, 几乎没有人贬损 rust, 最多就是觉得它难度大不好学. 反 go 的那帮人的言论, 才是真的魔怔. |