作者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/m.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