【Rust日報】 2019-04-11

一封寫給Rust宏的情書


#macroweb


本文不是宏教程,做者寫這篇文章的目的就是爲了讓尚未使用過Rust宏的人,早點嘗試一下宏。(真香預警)編程


做者比較了Rust和其餘語言(C/C++/Java)中的元編程,摘要:安全


  • C宏和Cpp模板元編程。很容易引入難以發現的錯誤,而且會擾亂編譯時間,在構建中引入沒必要要的複雜性。你是否見過錯誤使用模板而引起的編譯器錯誤呢?數據結構

  • Java註解。Java的註解功能很強大,能夠在編譯時使用,也能夠在運行時執行,既能夠用於代碼生成,又能夠拿來反射。Java中最受歡迎的Spring框架大量使用Java註解。但正由於如此,Java的註解功能致使你寫的代碼可能超越語言自身的語義,而更像是另一種語言。並且經過註解實現的代碼,調試起來也很是痛苦。app



那麼Rust的宏是否是徹底避免了上面的問題呢?並非百分百的避免,可是Rust已經努力避免了常見的問題,而且能夠發揮出Rust語言自身的優點。做者介紹了聲明宏和過程宏的一些優點,而且在文章底部列出了一些學習宏的資料。框架





使用Actix Web進行人臉檢測


#actix-web #face_detectionide


這是上第二天報裏報道過「使用tensorflow與rust人臉檢測」文章做者的續篇。在這篇內容裏,做者介紹瞭如何將上一篇文章的成果經過HTTP API來提供。而且做者使用了actix-web = "1.0.0-alpha.4"版本。在mtcnn庫的actix-web分支裏能夠看到具體實現。微服務


這兩篇文章是實踐性很強的文章,建議你們跟着玩玩。工具


  • Read More性能

  • 上篇文章人臉檢測Rust庫:mtcnn



nom-peg: 基於nom實現的PEG解析器生成器工具


#nom #peg #pest


和pest相似,但它是基於nom實現的。


nom-peg



「視頻」深刻WASM和WASI


#youtube


Read More



Rust實現的IRC機器人


#irc #bot


url-bot-rs



使用Rust開發跨平臺組件的新策略


#FFI #cross_platform


Mozilla工程師最新分享,將Rust實現的核心業務邏輯封裝到一箇中間層,而後經過新的共享策略,達到Web、iOS、Android三端共享。實施這個策略遇到的一個問題就是如何安全地使用FFI,而且還能與Rust的全部權良好地配合。所以該團隊寫了一個ffi-support庫來幫助達成此目的。


該庫最初的實現方案是經過序列化爲JSON字符串在FFI中傳遞。可是缺點是,JSON序列化和反序列化會很慢。最重要的問題是,Java中字符串編碼是UTF-16-ish。在Kotlin中,必須反序列化每一個數據結構,這個過程會可能會發生異常。最嚴重的問題是,沒有返回JSON字符串,而是某個C指針,忘記更新Kotlin中或者ObjectiveC中的數據結構,致使嚴重的內存問題。


值得慶幸的是,團隊發現了使用Protocol BufferV2替代JSON,能夠解決上面的問題。在Rust中直接使用prost庫,能夠經過Rust的宏生成很是乾淨的結構。並且,PB比JSON的性能高。

圖片

  • Read More

  • ffi-support



「經驗之談」從Nightly到Stable Rust遷移之旅


#nightly_to_stable


本文是Seq團隊寫的。Seq是一個微服務診斷SaaS產品,它們的存儲引擎是使用Rust實現的(應該未開源)。從Seq 5.1開始,遷移到了Stable Rust。整個遷移過程說是毫無痛苦。感興趣的能夠看看。


(開發Rust產品須要依賴的features列表愈來愈少了,這是好事)

相關文章
相關標籤/搜索