作者dzwei (Args&&... args)
看板Linux
标题[闲聊] Linux Kernel 6: Rust lang 支援
时间Sat Oct 8 10:41:04 2022
https://tinyurl.com/kx9z6pks
Linux Torvalds 与多数Kernel开发者
也一致同意Rust是第二个开发语言了
毕竟Rust现代、快速、优雅
边界检查与执行续安全也包含在里面
有Modern C++的特性
但是没有C++的历史包袱
不过6.0很多东西还没commit进去
可能要到6.1才有比较完整的支援
这里有Binging相关的文章
https://lwn.net/Articles/829858/
还有请大神来补充
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.24.236.14 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1665196868.A.ED2.html
※ 编辑: dzwei (114.24.236.14 台湾), 10/08/2022 10:43:44
※ 编辑: dzwei (114.24.236.14 台湾), 10/08/2022 10:44:32
1F:推 Bencrie: 这样可以期待 vendor 可以少写一些烂 code 是吗 XD 10/08 12:33
是 Rust目前的目的
主要是针对Driver那块
schd mm vm那类
目前看来短期好像没有要改写的计画
不过Binding的API文件
内容还太少
正规C语言Linux开发者
短时间应该也不太好上路
Ruest的确是不想用C++的首选没错
※ 编辑: dzwei (114.24.236.14 台湾), 10/08/2022 13:16:43
※ wtchen:转录至看板 C_and_CPP 10/08 15:49
2F:推 ivon852: Asashi Lina最近一直猛提这件事ww 10/08 21:01
3F:→ ivon852: Rust已成为热门语言...rewrite everything in rust 10/08 21:02
其实是新的东西
能rust写就不要用C
他那个记忆体管理的方式
是C++ 的
* Smart Pointer
* R-Value Reference (Perfect Forward)
* Scope out Safe Drop (包括thread的lock)
那套RAII
高效能记忆体管理太好太方便了
语法糖下这些可以比C++精简很多
同期的Go Lang 这点就不是很好
Go Lang好像还在依赖GC的管理机制...
不过其实rust
有一个让人又爱又恨的缺点
就是编译速度很慢
因为检查的东西很多
※ 编辑: dzwei (114.24.236.14 台湾), 10/08/2022 21:32:22
4F:推 s9209122222: 看来是时候该学程式语言了,会比 Java 简单吗? 10/08 21:57
5F:→ s9209122222: 一直觉得 Java 语法对於我这个程设初学者很莫名其妙 10/08 21:59
6F:→ s9209122222: ,不像 C 比较好懂…… 10/08 21:59
这里是我相见恨晚的电子书
https://tinyurl.com/mtmnnr6a
刚入门的时候 那本圣经 The rust Programing lang
真的读起来的痛苦程度
不会小於effective C++那类XD
不过建议还是要有modern C++的观念再开始学rust
不然所有权那边会死透
其实rust lang的本质
就是把C++03的包袱拿掉
全力专注在modern C++
并建立语法糖
还有一点就是rust的标准後端是LLVM
虽然也有实验性的GCC後端
但一些cross-compile的环境可能不会很好用
此时突然羡慕risc-V阵营预设的LLVM後端(?)
其实以前发过一篇废文
但内容可以检视自己对Modern C++的基本概念了解多少
https://tinyurl.com/yufrv7hh
※ 编辑: dzwei (114.24.236.14 台湾), 10/08/2022 22:46:20
7F:推 Bencrie: 我等 firefox 打赢 chrome 再来学好了 10/08 23:57
其实这样比不准
https://tinyurl.com/2p92eh6t
因为rust只占了firefox不到10%...
※ 编辑: dzwei (114.24.236.14 台湾), 10/09/2022 00:04:23
8F:推 Bencrie: 但是比例会上升吧,moz://a 发明的东西当然自己要捧场 XD 10/09 00:07
好像好几年了 都还是这个比例
目前三巨头 Apple Google M$
其实也只有M$比较积极在推Rust
Google总不能砸了自家很骄傲的Go-lang
只是Linux Kernel把Rust变成第二语言
倒是出乎我的意料之外
连很嘴的Linus都很看好这点
※ 编辑: dzwei (114.24.236.14 台湾), 10/09/2022 00:12:05
9F:推 roccqqck: golang用途不一样 10/09 00:24
印象中主要是给web後端用的
但是开发是基於C而非C++
所以刚接触的那阵子
有人说有机会放进去C写的Linux Kernel里面
但我觉得Go lang真的太难学了
还有那个文件系统
所以很快就放弃了XD
我觉得rust比较偏向软体面
虽然说rust是有可以用於embedded的候选
但没想到Linux直接这样上了
10F:→ roccqqck: google在研发另一个叫carbon的语言要取代C++ 10/09 00:24
11F:→ roccqqck: discord cloudflare都在用rust 10/09 00:25
12F:→ roccqqck: 还有facebook 10/09 00:25
感谢补充资讯
13F:推 Bencrie: C++ 每隔一阵子就会自己取代自己 10/09 00:26
C++2X那个opt
就是rust的opt呀
但是没有rust简洁易用
所以C++2X其实让我蛮失望的XD
14F:→ roccqqck: carbon对c++ 有点像是kotlin对java 10/09 00:27
对耶 google是Carbon才是
※ 编辑: dzwei (114.24.236.14 台湾), 10/09/2022 00:39:13
16F:推 greedycat: Driver 要改用 rust 写了吗?以後面猪屎屋难道要考 rus 10/09 04:29
17F:→ greedycat: t 可以等我进去再改吗QQ 10/09 04:29
没那麽快啦XD
保守估计也要五年
也搞不好这五年rust就撞壁了(?)
※ 编辑: dzwei (114.24.236.14 台湾), 10/09/2022 16:49:38
18F:→ cs8425: golang要对标应该是java跟.net 都有runtime跟gc 10/09 20:26
19F:推 roccqqck: go对手应该是java没错 不过go事实上没有jvm那种runtime 10/09 21:08
20F:→ roccqqck: 10/09 21:08
21F:→ roccqqck: 取而代之是超级简单的cross compile成binary 10/09 21:08
22F:→ roccqqck: go语法满简单的比java .net简单 10/09 21:09
23F:→ roccqqck: 我觉得跟kotlin或typescript差不多 10/09 21:09
24F:→ roccqqck: rust语法据说也很简单 它难的地方是记忆体的机制 10/09 21:10
25F:推 roccqqck: 但是rust只要能编译过 记忆体就是安全的 10/09 21:14
26F:→ dzwei: let s: str = "mystr" 10/09 21:44
27F:→ dzwei: let s: &str = "mystr"; 10/09 21:45
28F:→ dzwei: 第一个不会过 第二个会过 熟悉C/C++的人 看到这个 马上就 10/09 21:46
29F:→ dzwei: 能理解成 const char* str = "mystr" 10/09 21:46
30F:→ dzwei: 就知道为啥要加&才能过编译了 10/09 21:47
31F:→ dzwei: 如果let没有 :xxx 这个後缀 建议理解成modern C++的auto 10/09 21:48
32F:→ dzwei: auto x = 10; x = "mystr"; 编译不过 因为x已经被推论成int 10/09 21:49
33F:→ dzwei: let mut x = 10; x = "mystr";也不会过 理由如上 10/09 21:50
34F:→ dzwei: rust与C++型别的观念大致上是互通的 10/09 21:51
35F:→ dzwei: 然後 a=b C++预设是copy by value,而rust是类似C++的 10/09 21:54
36F:→ dzwei: std::move。 10/09 21:55
37F:→ dzwei: let本身就有C++的constexpr的意义在里面 10/09 21:55
※ sivle:转录至看板 LinuxDev 10/11 13:56
38F:推 tonytonyjan: 等 rust 可以在 heap 放 array 我再支持 12/10 10:02
39F:→ dzwei: 等等 Vec不就是放在heap上面的array麻? 12/10 15:50