更新我們的Rust Boilerplate server 使用 GraphQL (Async and Actix-web 2)
做了以下的更新
use async/await
use actix-web version 2
use anyhow + thiserror in place of failure
structopt
sntpc Rust SNTP 客戶端可以從 NTP servers 拿 timestamp
有人成功的驗證了rust可以跟unreal遊戲引擎整合
Rust基礎建設
目標1:明確Rust作為獨立項目的地位
有些公司想要商業投資Rust但因為 Mozilla 持有這個項目而卻步。
Rust應該要有自己的獨立基金會。
目標2:減輕一些實際困難
儘管Rust項目擁有自己的治理系統,但它從未擁有自己獨特的法人實體。該角色一直由Mozilla扮演。例如,Mozilla擁有Rust商標,而Mozilla是crates.io等服務的合法運營商。
作者希望Rust獨立出來,Mozilla成為其中一個投資者而不是持有者。
但作者又不希望Rust基金會不應僱用全職開發人員
造成這種情況的原因有很多,但最大的原因就是價格太貴了。
為該工作量提供資金將需要大量預算,這將需要大量籌款。
有人使用了Rust實作了BLAKE3
BLAKE3 是一種 cryptographic hash
類似 MD5 SHA1 等 Read more
Library team 從 IRC 移動到 Zulip
https://zulipchat.com/ 是一個類似slack的軟件。
Way Cooler驗屍報告
作者做了一個開源專案但是死的很慘
他用這篇文章做一個記錄
我最初的計劃是用C語言編寫它,因為這似乎是複合語言的流行語言(當時只有Gnome,KDE,Weston,E,Orbment和Sway的早期版本)。 Snirk 說服我研究Rust。 他對它的強大可靠性保證很感興趣(他的研究領域是編譯器和語言設計)。 它獨特的內存管理方法吸引了我,在嘗試了該語言之後,我們開始研究Way Cooler。
當時他們在 libweston, swc, wlc 中做選擇
最後他們選了 wlc
更清楚的是如何包裝Rust所使用的API。它具有非常簡單的內存模型和非常小的API界面。
我們試了範圍,並開始包裝wlc庫,以便能在Rust中使用它。我們設定了一個短期目標,用約400行程式碼從C轉換為慣用的Rust。
但是,在此階段犯了兩個錯誤,乍看之下似乎是矛盾的:我們跳入包裝wlc的速度太快了,但與此同時卻花了太多時間。
封裝給Rust使用的C庫並不是一件容易的事,如果我們知道這個問題,可能就不會這樣做了。
後面想支援Lua又想支援Nodejs然後庫的API又大改在3.X=>4.X 做了不相容更新。
然後我們都是自學很少跟人合作,在閱讀他人的代碼上異常困難。
後面又因為 Rust 實作樹資料結構不好作,搞了很久。
太長了,大家有興趣可以看原文
Arc 怎麼在Rust運作的呢?
就是原子計數器加指標
Terminal 0.2.0
類似 termion, crossterm, ncurses, pancurses 的
命令列 UI library
track_caller 錯誤處理大突破
Option::{expect,unwrap}
跟 Result::{expect, expect_err, unwrap, unwrap_err}
有 #[track_caller]
了
從
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', /rustc/da3629b05f8f1b425a738bfe9fe9aedd47c5417a/src/libcore/macros/mod.rs:16:40
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
變成
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/main.rs:3:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
duckscript
用rust實作的腳本語言
為什麼要用Rust?我們有GC啊
Rust有速度上的優勢,並發上的自動檢查。
但跟Java一樣都開發的不快,Python是開發速度的首選。
不過Java有更好的IDE支援,生態系統與社群更強大,
對老闆來說更安心。
评论区
写评论还没有评论