Rust Taiwan
Rust 程式設計語言台灣社群
Telegram 群組:https://t.me/rust_tw
【Rust 參與 Google Summer of Code 2024】
貢獻開源、賺取💸💸、學 Rust?小孩子才做選擇,我全都要!
Google Summer of Code(GSoC)是由 Google 主辦的全球性活動。透過配對各專案經驗豐富的導師與貢獻者,在導師指導下,協助參與者貢獻開源專案。
今年 Rust 語言官方有參與並提供導師,目前已經列出一些有趣的可能題目。若有其他更酷的點子,請到 Rust 官方 Zulip 討論。
往年 GSoC 只接受學生報名,今年有開源初心者軌供新手嘗試,歡迎各位一起貢獻開源!
連結詳見留言。
Rust participates in Google Summer of Code 2024 | Rust Blog Empowering everyone to build reliable and efficient software.
【Rustup 1.27.0 釋出】
沈潛一年後,Rust 官方版本管理工具 Rustup 新版釋出!
這個版本並沒有太多使用者相關的更新,可喜可賀的是 Rustup 維護團隊多了兩個新成員,並預期在接下來增強效能與提升相容性。
執行 `rustup self update` 更新你的 Rustup 吧!
Announcing Rustup 1.27.0 | Rust Blog Empowering everyone to build reliable and efficient software.
【💰百萬美金挹注💰】
Google 宣布贊助 Rust 基金會一百萬美金,協助改善 Rust 與 C++ 之間互通性(interoperability),以增加 Rust 在 Google 內部以及整個產業的採用率。
「漏洞統計歷史數據指出,Rust 主動阻止數以百計影響 Android 生態系統的漏洞。 這項投資旨在擴大 Rust 在各平台各組件中的採用率。」 — Dave Kleidermacher,Google Android 安全與隱私工程副總裁
Google Security Blog: https://security.googleblog.com/2024/02/improving-interoperability-between-rust-and-c.html
Rust Foundation 公告: https://foundation.rust-lang.org/news/google-contributes-1m-to-rust-foundation-to-support-c-rust-interop-initiative/
Improving Interoperability Between Rust and C++ Posted by Lars Bergstrom – Director, Android Platform Tools & Libraries and Chair of the Rust Foundation Board Back in 2021, we announced...
【Advent of Code 聖誕程式解題馬拉松】
AOC 是每年從 12 月 1 日到 12 月 25 日聖誕節當天的程式解題馬拉松,每天 2 題共 50 題,前一千位可以獲得積分進入排行榜。
Rust Taiwan 社群創立了一個 GitHub repository,提供 Rust 程式語言同好分享交流解法,歡迎各位共襄盛舉!
GitHub 連結: https://github.com/rust-tw/advent-of-code
Telegram 討論區: https://t.me/rust_tw
GitHub - rust-tw/advent-of-code: 享受歡樂的聖誕解題馬拉松吧! 享受歡樂的聖誕解題馬拉松吧!. Contribute to rust-tw/advent-of-code development by creating an account on GitHub.
🎉《Rust 1.74.0 釋出》🎉
眾所矚目的 RPITIT⋯⋯ 不在 1.74 中,但本次更新也集合了許多 live saver。
👉🏾 在 Cargo.toml 新的 `[lints]` table 設定 lint rule,並和整個 workspace 共用吧!
👉🏾 Cargo 現在能作業系統統原生的方式存取 registry 登入帳密了,也就是能用 macOS Keychain、Windows wincred 或 Linux libsercert 保存你的 token,而不用以 plain text 存在檔案系統,安全性++。
👉🏾 解除 Self 和 associated type 不能寫在 opaque return type 的限制,讓泛型更好寫!
更多請見:
* 1.74.0 發佈文: https://blog.rust-lang.org/2023/11/16/Rust-1.74.0.html
* [lints] table: https://doc.rust-lang.org/stable/cargo/reference/manifest.html -lints-section
* registry auth: https://doc.rust-lang.org/beta/cargo/reference/registry-authentication.html
* impl_trait_projections: https://github.com/rust-lang/rust/pull/115659
Announcing Rust 1.74.0 | Rust Blog Empowering everyone to build reliable and efficient software.
大家期待已久的 Rust Meetup 要重啟了,這次不一樣的是有乾爹贊助場地了,感謝五倍學院提供定期聚會的優質場地。來參加的會眾請在門口的樂捐箱投入$50,協助維護優質的場地,可以從冰箱拿取一瓶飲料,以及一張 $50 的天瓏的折扣券。
這次也特別邀請到 WasmEdge,他們會帶來 Rust and WebAssembly in AI,感謝他們一起共襄盛舉。
時間: 10/3(二)7:30PM ~ 9:30PM
地點:五倍學院 台北市中正區衡陽路7號5樓(台大醫院捷運附近)
https://goo.gl/maps/gAD8654LLGoSLyE36
主題:歡迎投稿
也歡迎到 Rust Taiwan Telegram 群組聊聊天: https://t.me/rust_tw
🎉《Rust 1.71.1 釋出》🎉
修訂版一出,必有人傷亡。請評估升級你的 Rust 工具鏈。
這次仍然是 Cargo,CVE-2023-38497 的 CVSS 分級為 High,請各位格外注意。Cargo 在解壓縮從 registry(crates.io)下載回來的 tarball 時,並沒有遵循 umask,也就是說,如果 tarball 裡面有 globally writable 的檔案,解壓縮後權限就是 globally writable。如果攻擊者可以存取你的 `~/.cargo` 目錄,就可以在原始碼中塞入惡意程式碼。
官方建議可升級就升級。若暫時無法升級,可以透過設定改變 `~/.cargo` 目錄的權限來防止其他人存取 `chmod go= ~/.cargo`。
詳情請見:
* 1.71.1 發佈文: https://blog.rust-lang.org/2023/08/03/Rust-1.71.1.html
* Security advisory: https://blog.rust-lang.org/2023/08/03/cve-2023-38497.html
Security advisory for Cargo (CVE-2023-38497) | Rust Blog Empowering everyone to build reliable and efficient software.
【COSCUP 演講】
明天(07/30)有 Rust 社群軌,整理了下講題列表:
1. Rust Web 之旅:新時代的後端開發 by 朱章祺
https://coscup.org/2023/en/session/KXWYQL
2. Writing MariaDB Plugins in Rust by Daniel Black
https://coscup.org/2023/en/session/QABLVS
3. Zenoh: A Zero Overhead Network Protocol by Yuyuan Yuan
https://coscup.org/2023/en/session/NZAEYY
4. 如何轉職成死靈法師復活 Servo by 吳昱緯
https://coscup.org/2023/en/session/ACJYYA
5. Highly Perfrmant Dataflow in Stream-Orientd Programming in Rust by 林祥瑞 (Hsiang-Jui Lin)
https://coscup.org/2023/en/session/JLZM37
時間:7/30 Sun. 10:50 ~ 16:00
地點:國立臺灣科技大學 研陽大樓 Room TR 210
地址:台北市大安區基隆路四段43號
如何轉職成死靈法師復活 Servo - COSCUP 2023 | Conference for Open Source Coders, Users, and Promoters 經過 Mozilla 裁員後的 Servo 到了 2023 年變得如何了呢?
【留言終結者 @ Google】
根據 2022 年 Google 內部研究指出,在實際在正式工作上使用 Rust 的五點結論 :
🚀 Rust 比想像中更易學習。多數開發人員「兩個月內」就明顯感受到生產力,遠比傳說中六個月還學不會來得更快上手。
🐢 編譯速度比開發人員預期得慢。
🤯 學習 Rust 時最困難的部分:巨集(macro)、非同步程式設計,以及 Rust 獨樹一幟的所有權和借用概念。
❤️ Rust 擁有令人驚艷的編譯器錯誤訊息!
💯 Rust 寫出來的程式碼品質較高,更易 code review。被問及「是否覺得自己使用 Rust 撰寫的程式碼比其他語言更正確」時,85% 受訪者表示對他們的 Rust 程式碼正確性更有信心。
(此研究資料來自 Google 內部 1000+ 位學習與使用的軟體開發人員)
Rust fact vs. fiction: 5 Insights from Google's Rust journey in 2022 Wondering about Rust? We're addressing rumors and providing insight gained from years of early adoption of Rust here at Google.
【💰獎學金計畫🧑🏾🏫】
今年的 Rust Foundation 獎學金計畫開放申請了!
除了為期一年,每月 $1000 美金的獎學金,還有至多 $2000 的學習訓練費用,和 $2000 的差旅費供與其他 Rustacean 見面。
計畫分為兩種身分:
👉🏾 導生學徒:基金會提供導師,讓學徒按部就班學習,領域包含 security、infra、crates.io、compiler。
👉🏾 自訂步調:無導師的獎學金,但必須提出貢獻計畫。從過往錄取名單來看,有開源貢獻紀錄者錄取率高。
這次簡章特別寫出「你不需要會說英文,但是要能夠讀寫,與其他專案人員互動」。
還在想什麼,成為 Rust 開源貢獻者就在今天!
https://foundation.rust-lang.org/news/2023-rust-foundation-fellowship-application-open-through-june-30/
#獎學金 #學徒計畫
Rust Foundation The Rust Foundation is an independent non-profit organization to steward the Rust programming language and ecosystem, with a unique focus on supporting the set of maintainers that govern and develop the project.
🎉《Rust 1.70.0 釋出》🎉
就算 Rust 最近深陷風波,1.70 還是如期釋出啦!幾大重點:
👉🏾 Cargo sparse registry 在 1.68 穩定後,現在變成預設值,幫你節省寶貴的時間和延長硬碟壽命!
👉🏾 `OnceCell` 和 `OnceLock` 穩定了!過去用 `lazy_static` 和 `once_cell` 這兩套第三方函式庫做初始化的人民,可以逐步遷移到新的 API 了!
👉🏾 `IsTerminal`:幫你判斷一個 file descriptor 是不是 terminal/TTY。現在就把 `atty` 或 `is_terminal` 從 Cargo.tml 移除吧!
更多請見:
* 1.70.0 發佈文: https://blog.rust-lang.org/2023/06/01/Rust-1.70.0.html
* `OnceCell`: https://doc.rust-lang.org/std/cell/struct.OnceCell.html
* `IsTerminal`: https://doc.rust-lang.org/std/io/trait.IsTerminal.html
Announcing Rust 1.70.0 | Rust Blog Empowering everyone to build reliable and efficient software.
🎉《Rust 1.68.0 釋出》🎉
萬眾矚目的 1.68 終於釋出啦!這次有兩大重點:
👉🏾 Cargo sparse registry 穩定了
相信不少開發者一定遇過 Cargo 卡在「resolving deltas⋯⋯」很久,尤其是 CI 非常浪費時間。這是因為 Rust 越來越熱門,導致原本更新 crates.io 索引的效率越來越差。sparse registry 現在會按照需求再下載,不再浪費各位寶貴的時間!
👉🏾 讓 pin! 巨集節省你的 heap 開銷
寫 async Rust 常常會需要用到 pin 來解決跨 await point 的所有權問題,出於方便,大家可能會選擇用 `Box::pin` 或是其他第三方套件來處理,大部分不是有額外記憶體開銷,就是需要 unsafe。`std::pin::pin!` 透過編譯器的輔助,讓你可以直接 pin 資料在 stack 上,往 zero-cost async Rust 更進一步!
---
更多請見:
* 1.68.0 發佈文: https://blog.rust-lang.org/2023/03/09/Rust-1.68.0.html
* RFC 2789: https://rust-lang.tw/rfcs-tw/2789-sparse-index.html
* Spare registry 設定: https://doc.rust-lang.org/cargo/reference/config.html -ioprotocol
* pin! 巨集的 API 文件: https://doc.rust-lang.org/stable/std/pin/macro.pin.html
Announcing Rust 1.68.0 | Rust Blog Empowering everyone to build reliable and efficient software.
🎉《Rust 1.66.1 釋出》🎉
是的,看到修訂版號釋出,代表得評估升級一下你的 Rust 工具鏈。
這次出問題的是 Cargo,CVE-2022-46176 指出 Cargo 在透過 SSH 克隆 Git 儲存庫時,並沒有驗證 SSH host key,這可能導致中間人攻擊。1.66.1 已緊急修復此漏洞。
官方建議可以升級就請直接升級。若暫時無法升級,可以透過設定 Cargo configuration 的 `net.git-fetch-with-cli = true` 來啟用 git CLI 取代 Cargo 內建的 libgit2。
詳情請見:
* 1.66.1 發佈文: https://blog.rust-lang.org/2023/01/10/Rust-1.66.1.html
* Security advisory: https://blog.rust-lang.org/2023/01/10/cve-2022-46176.html
Security advisory for Cargo (CVE-2022-46176) | Rust Blog Empowering everyone to build reliable and efficient software.
【免費好書 Rust Atomics and Locks】
Rust 函式庫團隊大隊長 Mara Bos 的新書《Rust Atomics and Locks - Low-Level Concurrency in Practice》出版了,作者本人也很慷慨地直接釋出全書在個人網站,供有興趣學習 concurrency 技術底層概念的同好交流閱讀。
有餘力的讀者,可以購買電子或紙本書,用錢錢支持一下作者!
https://marabos.nl/atomics/
年度的 Rust 程式語言官方調查開跑了!
不論會不會寫 Rust,都歡迎填寫問卷,這次一樣有正體中文版喔!
Launching the 2022 State of Rust Survey | Rust Blog Empowering everyone to build reliable and efficient software.
「至今,在 Android 的 Rust 程式碼中,已發現 0 個記憶體安全性漏洞*」
Android 安全團隊指出,2022 年是首度記憶體安全性的漏洞不是佔比最多的漏洞類型,這和 Android 導入更多「記憶體安全」的程式語言息息相關。
截至目前,Android 13 開源專案中共有一百五十萬行 Rust 程式碼。
*:To date, there have been zero memory safety vulnerabilities discovered in Android’s Rust code.
https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html
大家好!Advent of code 又要開始囉!
這是一個為期 25 天的解題活動,每天 2 題共 50 題
今年我們有開了一個 Repo 歡迎大家投稿解法
想要拿來練習解題或是無聊挑個幾題來玩玩都十分歡迎!
GitHub - rust-tw/advent-of-code Contribute to rust-tw/advent-of-code development by creating an account on GitHub.
🎉《Rust 1.65 釋出》🎉
燒燙燙的六週一次更版,1.65 絕對是萬眾矚目!
* G*T:很難將 G*T 濃縮到一句話說明,但它是 async trait 進入 std 的重要基礎設施,整個社群等了六年!詳情請參考上週文章 [1]
* let-else:用 let 做模式匹配時,不匹配的分支邏輯通通寫到 else 裡,類似 Swift guard let
* Linux 上 split-debuginfo:可將 debug symbol 資訊從產出的執行檔分離,加快 linking time
* RLS 正式光榮退役:接下來請愛用 Rust Analyzer,感謝過往的各位貢獻者!
* Windows 上新增 raw-dylib 鏈結種類,可以解決 DLL linking hell 的問題,詳見 RFC [2]
* 官方文件 TRPL 提及布朗大學計算機科學系的實驗互動版教學文件,學習 Rust 更容易 [3]
順帶一提,G*Ts 的 RFC 繁體漢化 [4] 也在如火如荼的進行當中,歡迎有志之士貢獻 RFC 翻譯!
https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html
連結見留言。
Announcing Rust 1.65.0 | Rust Blog Empowering everyone to build reliable and efficient software.
【Rust 贊助金來囉】
Rust 基金會近期開放申請「Project Grants Program」,對象是對 Rust 有助益的貢獻者,無論是程式專案或教育推廣,只要能在六個月內完成目標,就可以申請美金 USD $2,500 到 $15,000 不等的贊助金!!
貢獻的類別如下:
# # 維護與支援 # #
* 程式碼審核
* 文件更新
* 設計審核
* 問題匪類
* 問題回報
* 錯誤修復
# # 開發與基礎建設 # #
* 新功能和新文件
* 效能增進
* Rollups/CI/Release
# # 社群 # #
* 社群管理
* 溝通(撰寫部落格文章、版本更新日誌、會議準備)
* 產出教育材料
* 提供教育支援
* 支援、引導、帶領其他貢獻者
* 組織辦理活動與 meetup
* 協調與管理活動
以個人或團體的名義皆能申請,還不手刀遞交申請書嗎!
https://foundation.rust-lang.org/news/2022-10-03-project-grants-open-for-applications/
【使用 Rust 重寫的 Tor 引擎 Arti 發布 1.0 版!】
Tor 洋蔥路由器是匿名通訊自由軟體,用以保障使用者的隱私,不受監控的自由上網。
從 2020 年開始,Tor 團隊著手用 Rust 重新實作 Tor 核心引擎 Arti,日前釋出 1.0 版,以可用於正式環境。
這篇文章說明了:
* 為什麼要用 Rust 重寫 Tor
* Rust 重寫成功經驗分享
* Rust 不足之處
* Arti 近期更新和未來發展
其中有趣的是,團隊發現採用 Rust 會吸引更多貢獻者來替 Tor 盡一份力,這和之前 Rust for Linux 專案的觀察不謀而合。
想嚐鮮 Arti?現在就來玩玩看!
```
cargo install arti
arti proxy -p 9150
```
Arti 1.0.0 is released: Our Rust Tor implementation is ready for production use. | Tor Project Arti 1.0.0 is released and ready for download.
【Rust 導入實例】
原本用 C/C++ 搭 Python 實作資料庫,因爲大版本釋出前遇到很多 bug 修不完,掙扎後決定用 Rust 重寫。但團隊沒有人熟 Rust,先抓一小群人慢慢開始學著開發,後來逐漸擴大,最後重寫掉整個實作上線。值得想在公司強推採用 Rust 的人一讀。
BTW:他們也是用 Go 寫 k8s control plan,Rust 則是 data plane,和 Linkerd 背後的公司 Buoyant 的策略如出一轍。
Inside the Pinecone | Pinecone Edo Liberty, Pinecone CEO, provides a glimpse into the journey behind building a database company, including some insights into the latest innovations around the product and vector search.
【非業配💸】
Amazon S3 想必沒用過也聽過,它的好兄弟 CloudFront CDN 更是提升網站效能的要角。
今日,CloudFront 開始支援 HTTP/3。和前幾代 HTTP 不同,HTTP/3 是以 UDP 為基底打造 QUIC 協議,解決 head of line blocking 的問題,更快更安全。重點是:
「AWS 用 Rust 實作了 HTTP/3 底層的 QUIC 協議」
並且開放原始碼,等於是你的 CDN 跑在 Rust 上。
未下定決心學 Rust 的朋友,是否難以想像基礎建設被 Rust 蠶食鯨吞?無妨,今日開始學足矣!
Amazon CloudFront now supports HTTP/3 powered by QUIC Amazon CloudFront now supports HTTP version 3 (HTTP/3) requests over QUIC for end user connections. HTTP/3 uses QUIC, a user datagram protocol (UDP) based, stream-multiplexed, secure transport protocol that combines and improves upon the capabilities of existing transmission control protocol (TCP...
貢獻 Rust 語言有多難呢?一點都不難!
這個 PR 修剪合併了重複不必要的元素,讓 rustdoc 產生出來的 HTML 文件更精簡清爽,體積差了 27%-39% 不等!
只要懂「網頁前端」,照樣做出貢獻。馬上到 GitHub 選擇 A-rustdoc-ui / A-rustdoc-js 標籤,找到屬於你的 issue,獻出心臟吧!
https://github.com/rust-lang/rust/pull/100429
rustdoc: Merge source code pages HTML elements together by GuillaumeGomez · Pull Request #100429 · rust-lang/rust We realized that the HTML generated for the source code pages could be improved quite a lot. This PR is a first pass toward this goal. Some explanations: it merges similar classes elements (even wh...
用 Rust 實作 kernel 聽起來很讓人興奮,但怎麼做呢?
歡迎來 COSCUP 由 Yodalee 為大家介紹「rrxv6: write a RISC-V kernel using Rust」。
讓大家一窺沒有 std 的支援下,完成核心該有的功能,讓大家更深入的了解 Rust。
https://coscup.org/2022/en/session/KYPNGM
COSCUP 2022 | Conference for Open Source Coders, Users, and Promoters Conference for Open Source Coders, Users, and Promoters is a free annual conference providing a platform to connect FLOSS folks across Asia since 2006. It's a major force of free software movement advocacy in Taiwan.
🎉《rustup 1.25 釋出》🎉
rustup 是 Rust 官方工具下載管理器,可下載不同的 Rust toolchain 和 component,並在不同 channel 之間快速切換。
這次睽違一年的更新,主要有幾項:
* Windows 平台下載 Visual Studio 2022 編譯器的流程自動化,讓首次使用 Windows MSVC toolchain 的體驗更順暢
* 預設的 toolchain 可以設為 None,效果是執行指令都必須指定 toolchain,例如 `cargo +nightly build`
* rustup 自身啟動時間的最佳化
https://blog.rust-lang.org/2022/07/11/Rustup-1.25.0.html
Announcing Rustup 1.25.0 | Rust Blog Empowering everyone to build reliable and efficient software.
🎉《Rust 1.62 釋出》🎉
六週一次的更版又來了!這次有兩個使用者感受巨大的更新:
* `cargo add` 正式整合了,加 dependency 更方便!
* enum 的 ` #[default]` variant,不用再寫重複的模板實作 Default trait
此外,還有一些小而美的改進:
* 標準函式庫的 Mutex RwLock 的實作 pthread 改用 futex,更快更強大
* `x86_64-unknown-none` 成為 tier-2 target,構建 OS-less binary 更穩定
* `bool::then_some` 讓 bool 轉 Option 更方便
至於大家期待的 G*T、let-else,再等等吧 😂
https://blog.rust-lang.org/2022/06/30/Rust-1.62.0.html
Announcing Rust 1.62.0 | Rust Blog Empowering everyone to build reliable and efficient software.
🎉🎉 賀 🎉🎉
在 Stack Overflow 2022 年度開發者調查中,Rust 連續第七年榮獲開發者票選為「最受喜愛」的語言,同時也和 Python 並列為「最想擁有」的語言。使用率也從去年 7% 成長到今年 9%。
能獲此殊榮,要感謝社群每個人的使用和付出,期盼未來有更多人成為 Rustacean!
【Rust 職缺看過來!】
端午佳節愉快!
Google Taiwan 最近釋出了數個 Rust 相關職缺,都偏向作業系統低層,非常新鮮,這就來看看(連結見留言)!
❶ Software Engineer, Chrome OS Audio Feature
JD 直接寫需要有 C/Rust 經驗,不負責任猜測是要寫 Chrome OS 音訊功能的 Rust binding ,新功能可能就直接用 Rust 開發。
Chromium OS 專案 repository 內剛剛好有份 Rust on ChromeOS 的文件,教你如何整合第一第三方 Rust dependency 到 ChromeOS 裡面。
若想更貼近 Chromium 開發,mailing list 也有專門的 rust-dev group 可以追蹤
-----
❷ Software Engineer, Android Core Networking, Pixel
❸ Technical Lead, Android Core Networking, Pixel
這兩個都是做 Android 網路層相關的,尤其是 Technical Lead 的工作內容直接寫出「包含用 Rust 重寫 C++ 的 DNS resolver」,聽起來非常令人興奮啊!
和 Chromium OS 一樣,Android 也有一份非常詳盡文件,教你怎麼用 Rust 開放 Android OS component,詳見留言。
當然,不免俗地,Google 安全部門的部落格也提及 2022 Android 安全性研究,延續 2021 的 Rust 嘗試,多個安全性較敏感的部分,例如 networking stack 和 key management system 已經開始採用 Rust 了。
Software Engineer, Chrome OS Audio Feature - Google Careers Apply for Software Engineer, Chrome OS Audio Feature via Google Careers. Read about the role and find out if it's right for you.