Fw: [閒聊] Linux Kernel 6: Rust lang 支援

看板LinuxDev作者 (KC)時間2年前 (2022/10/11 13:56), 2年前編輯推噓0(000)
留言0則, 0人參與, 2年前最新討論串1/1
※ [本文轉錄自 Linux 看板 #1ZGED4xI ] 作者: 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://www.ptt.cc/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

10/08 12:33, 2年前 , 1F
這樣可以期待 vendor 可以少寫一些爛 code 是嗎 XD
10/08 12:33, 1F
是 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

10/08 21:01, 2年前 , 2F
Asashi Lina最近一直猛提這件事ww
10/08 21:01, 2F

10/08 21:02, 2年前 , 3F
Rust已成為熱門語言...rewrite everything in rust
10/08 21:02, 3F
其實是新的東西 能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

10/08 21:57, 2年前 , 4F
看來是時候該學程式語言了,會比 Java 簡單嗎?
10/08 21:57, 4F

10/08 21:59, 2年前 , 5F
一直覺得 Java 語法對於我這個程設初學者很莫名其妙
10/08 21:59, 5F

10/08 21:59, 2年前 , 6F
,不像 C 比較好懂……
10/08 21:59, 6F
這裡是我相見恨晚的電子書 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

10/08 23:57, 2年前 , 7F
我等 firefox 打贏 chrome 再來學好了
10/08 23:57, 7F
其實這樣比不準 https://tinyurl.com/2p92eh6t 因為rust只佔了firefox不到10%... ※ 編輯: dzwei (114.24.236.14 臺灣), 10/09/2022 00:04:23

10/09 00:07, 2年前 , 8F
但是比例會上升吧,moz://a 發明的東西當然自己要捧場 XD
10/09 00:07, 8F
好像好幾年了 都還是這個比例 目前三巨頭 Apple Google M$ 其實也只有M$比較積極在推Rust Google總不能砸了自家很驕傲的Go-lang 只是Linux Kernel把Rust變成第二語言 倒是出乎我的意料之外 連很嘴的Linus都很看好這點 ※ 編輯: dzwei (114.24.236.14 臺灣), 10/09/2022 00:12:05

10/09 00:24, 2年前 , 9F
golang用途不一樣
10/09 00:24, 9F
印象中主要是給web後端用的 但是開發是基於C而非C++ 所以剛接觸的那陣子 有人說有機會放進去C寫的Linux Kernel裡面 但我覺得Go lang真的太難學了 還有那個文件系統 所以很快就放棄了XD 我覺得rust比較偏向軟體面 雖然說rust是有可以用於embedded的候選 但沒想到Linux直接這樣上了

10/09 00:24, 2年前 , 10F
google在研發另一個叫carbon的語言要取代C++
10/09 00:24, 10F

10/09 00:25, 2年前 , 11F
discord cloudflare都在用rust
10/09 00:25, 11F

10/09 00:25, 2年前 , 12F
還有facebook
10/09 00:25, 12F
感謝補充資訊

10/09 00:26, 2年前 , 13F
C++ 每隔一陣子就會自己取代自己
10/09 00:26, 13F
C++2X那個opt 就是rust的opt呀 但是沒有rust簡潔易用 所以C++2X其實讓我蠻失望的XD

10/09 00:27, 2年前 , 14F
carbon對c++ 有點像是kotlin對java
10/09 00:27, 14F

10/09 00:27, 2年前 , 15F
對耶 google是Carbon才是 ※ 編輯: dzwei (114.24.236.14 臺灣), 10/09/2022 00:39:13

10/09 04:29, 2年前 , 16F
Driver 要改用 rust 寫了嗎?以後面豬屎屋難道要考 rus
10/09 04:29, 16F

10/09 04:29, 2年前 , 17F
t 可以等我進去再改嗎QQ
10/09 04:29, 17F
沒那麼快啦XD 保守估計也要五年 也搞不好這五年rust就撞壁了(?) ※ 編輯: dzwei (114.24.236.14 臺灣), 10/09/2022 16:49:38

10/09 20:26, 2年前 , 18F
golang要對標應該是java跟.net 都有runtime跟gc
10/09 20:26, 18F

10/09 21:08, 2年前 , 19F
go對手應該是java沒錯 不過go事實上沒有jvm那種runtime
10/09 21:08, 19F

10/09 21:08, 2年前 , 20F
10/09 21:08, 20F

10/09 21:08, 2年前 , 21F
取而代之是超級簡單的cross compile成binary
10/09 21:08, 21F

10/09 21:09, 2年前 , 22F
go語法滿簡單的比java .net簡單
10/09 21:09, 22F

10/09 21:09, 2年前 , 23F
我覺得跟kotlin或typescript差不多
10/09 21:09, 23F

10/09 21:10, 2年前 , 24F
rust語法據說也很簡單 它難的地方是記憶體的機制
10/09 21:10, 24F

10/09 21:14, 2年前 , 25F
但是rust只要能編譯過 記憶體就是安全的
10/09 21:14, 25F

10/09 21:44, 2年前 , 26F
let s: str = "mystr"
10/09 21:44, 26F

10/09 21:45, 2年前 , 27F
let s: &str = "mystr";
10/09 21:45, 27F

10/09 21:46, 2年前 , 28F
第一個不會過 第二個會過 熟悉C/C++的人 看到這個 馬上就
10/09 21:46, 28F

10/09 21:46, 2年前 , 29F
能理解成 const char* str = "mystr"
10/09 21:46, 29F

10/09 21:47, 2年前 , 30F
就知道為啥要加&才能過編譯了
10/09 21:47, 30F

10/09 21:48, 2年前 , 31F
如果let沒有 :xxx 這個後綴 建議理解成modern C++的auto
10/09 21:48, 31F

10/09 21:49, 2年前 , 32F
auto x = 10; x = "mystr"; 編譯不過 因為x已經被推論成int
10/09 21:49, 32F

10/09 21:50, 2年前 , 33F
let mut x = 10; x = "mystr";也不會過 理由如上
10/09 21:50, 33F

10/09 21:51, 2年前 , 34F
rust與C++型別的觀念大致上是互通的
10/09 21:51, 34F

10/09 21:54, 2年前 , 35F
然後 a=b C++預設是copy by value,而rust是類似C++的
10/09 21:54, 35F

10/09 21:55, 2年前 , 36F
std::move。
10/09 21:55, 36F

10/09 21:55, 2年前 , 37F
let本身就有C++的constexpr的意義在裡面
10/09 21:55, 37F
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: sivle (202.39.11.150 臺灣), 10/11/2022 13:56:27
文章代碼(AID): #1ZHGMChA (LinuxDev)
文章代碼(AID): #1ZHGMChA (LinuxDev)