「SO問答」既然兩個可變引用不能別名爲啥Rust編譯器沒有對其進行優化
#Rust #stackoverflowjava
該問題的做者描述,好比C代碼中:python
void adds(int *a, int *b) {
*a += *b;
*a += *b;
}
兩個指針a和b有可能互爲別名(倆指針指向同一數據),因此clang在編譯該代碼的時候,會在寄存器中存儲兩次(%rsi),%eax
來防止這種狀況。固然也可使用restrict關鍵字來對參數進行約束,顯式地告訴編譯器這倆指針不可能互爲別名(但在C語言中,restrict關鍵字僅僅是告訴編譯器能夠優化,它不會幫助開發者進行檢查,也就是說,極可能由於開發者沒有遵循此契約而引起未定義行爲)。從而生成的優化代碼中只存儲一次寄存器。編程
可是做者發如今Rust中雖然有編譯器檢查,兩個可變引用不存在互爲別名的狀況,可是編譯器並無所以而進行任何優化:api
#![crate_type = "staticlib"]
#[no_mangle]
fn adds(a: &mut i32, b: &mut i32) {
*a += *b;
*a += *b;
}
因此他比較擔心,是否是在Safe Rust之下也可能存在別名?安全
該貼的回覆給出了答案:微信
Rust最初啓用了LLVM的noalias屬性,但這致使了非預期的編譯結果(算是LLVM的一個Bug,等issues 54878修復之後就正常了)。如今也可使用-Zmutable-noalias=yes
參數進行編譯就能獲得預期結果。網絡
Read More異步
issues/54878async
「學術」使用類型化指針反轉進行高效析構
#TypedPointerReversal #paper編程語言
HAL INRIA貌似是法國國家信息及自動化研究院。該論文提出了ML風格編程語言的資源管理模型,旨在兼容OCmal理念和運行時模型,提議使用析構函數擴展OCmal,在系統編程全部權和借用模式之上來提高OCmal的安全性、效率。
沒錯,借用了Rust/C++中的一些概念。感興趣的能夠看看,對資源管理應該會有深刻的瞭解。
該組織已經發布了多篇關於Rust研究的論文了。
Read More
Python和Rust實現神經網絡
#NeuralNetworks
這篇文章是做者探索Rust是否適合數據科學的工做。他分別用python和rust實現了一個小型的神經網絡,而後進行了性能測試,利用火焰圖進行分析,最終得出一個結論:
大部分時間都花在作線性代數上,無論Rust仍是Python,因此使用Rust永遠也不會有10倍的加速。
Python進行優化之後,性能能夠提高兩倍,Rust原則上能夠進行相同的優化,但目前ndarray還不支持2維數據以上的矩陣乘法。
做者認爲,Rust目前尚未作好勝任數據科學的工做。將來還須要更完善的生態系統。
Read More
關於Rust依賴安全的最新思考
#RestSec
很高興有人在幫咱們思考這個問題:當一個crate依賴愈來愈多的crates時,咱們有什麼辦法能夠審計它們?
Read More
paperclip: OpenAPI的代碼生成工具
#openapi #WIP
0.3發佈,支持OpenAPI V2接口。
paperclip
rocket-lamb: 方便在aws lambda上面跑rocket的庫
#rocket
rocket-lamb
async-injector: Rust的異步反應式依賴注入庫
#async
新庫,WIP狀態。該庫是從做者的另一個項目OxidizeBot(高性能Twitch機器人)中提取出來的。
Read More
async-injector
OxidizeBot
「討論」Rust如何實現代數效應
#AlgebraicEffects
看樣子該貼做者是一個函數式粉絲。評論回覆中有人用Rust實現了一個代數效應庫effective-rust。
代數效應目前是一個學術/實驗概念,它容許你經過使用相似於throw catch的機制來改變稱爲「效果」的某些計算元素(如函數調用,打印語句等)。
Reddit 討論
effective-rust
Algebraic Effects相關文章
what-does-algebraic-effects-mean-in-fp
Debian Buster 將會預裝Rust編譯器
#Debian
2019年7月6日發佈的Debian GNU/Linux 10 「Buster」 操做系統將預裝Rust編譯器。
From 日報小組 Chaos
日報訂閱地址:
獨立日報訂閱地址:
Telgram Channel
阿里雲語雀訂閱
Steemit
GitHub
社區學習交流平臺訂閱:
Rust.cc 論壇: 支持 rss
Rust Force: 支持 rss
微信公衆號:Rust 語言學習交流
本文分享自微信公衆號 - Rust語言中文社區(rust-china)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。