【Rust日报】 2020-01-10 track_caller 錯誤處理大突破

更新我們的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

Read more

sntpc Rust SNTP 客戶端可以從 NTP servers 拿 timestamp

Read more

有人成功的驗證了rust可以跟unreal遊戲引擎整合

Read more

Rust基礎建設

目標1:明確Rust作為獨立項目的地位

有些公司想要商業投資Rust但因為 Mozilla 持有這個項目而卻步。

Rust應該要有自己的獨立基金會。

目標2:減輕一些實際困難

儘管Rust項目擁有自己的治理系統,但它從未擁有自己獨特的法人實體。該角色一直由Mozilla扮演。例如,Mozilla擁有Rust商標,而Mozilla是crates.io等服務的合法運營商。

作者希望Rust獨立出來,Mozilla成為其中一個投資者而不是持有者。

但作者又不希望Rust基金會不應僱用全職開發人員

造成這種情況的原因有很多,但最大的原因就是價格太貴了。

為該工作量提供資金將需要大量預算,這將需要大量籌款。

Read more

有人使用了Rust實作了BLAKE3

BLAKE3 是一種 cryptographic hash

類似 MD5 SHA1 等 Read more

Library team 從 IRC 移動到 Zulip

https://zulipchat.com/ 是一個類似slack的軟件。

Read more

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 實作樹資料結構不好作,搞了很久。

太長了,大家有興趣可以看原文

Read more

Arc 怎麼在Rust運作的呢?

就是原子計數器加指標

Read more

Terminal 0.2.0

類似 termion, crossterm, ncurses, pancurses 的

命令列 UI library

Read more

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.

Read more

duckscript

用rust實作的腳本語言

Read more

為什麼要用Rust?我們有GC啊

Rust有速度上的優勢,並發上的自動檢查。

但跟Java一樣都開發的不快,Python是開發速度的首選。

不過Java有更好的IDE支援,生態系統與社群更強大,

對老闆來說更安心。


上一篇:DelphiXe Ansistring使用注意事项


下一篇:Delphi 7程序移植到 Delphi XE上的一些小情况