【Rust日报】 2019-08-23
C2Rust
一個把C code轉換成 rust code的小程式,現在可以用cargo 下載安裝。
簡單的程式還可以,有用到動態指標動態載入的庫就爆了。
小編自己的感覺是玩具等級不怎麼實用。
Dwelo如何在Rust中重寫 IoT gateway
小編我曾經在gateway team工作過,
rust其實非常適合寫這種在需要穩定執行的程式。
這篇文章講解了很多跟C庫打交道的技巧,
包含FFI, call c function, impl Drop, return pointers, error handle
蠻實用的
一個youtube短片教你如何使用gtk-rs (gtk 4.0)
Rust Fuzzing獎勵計劃
獎勵:500美金
如何獲得獎勵?您需要將Fuzzit與Go語言或Rust語言項目集成,星星超過1.5k。
其它細節請看原文。
Shellac(redox 作業系統下的shell) 自動完成所需時間在 1ms 以下
相信大家用linux 常常會遇到按tab,然後terminal卡住的經驗。
現在shellac解決了這個問題,
實作上就是盡量在使用者打出字來之後
依據當前打出來的字來做分支預測
在演算法上有命令分支爆破的問題
命令常有可選的選項,並且可以按任何順序放置。實際上,這意味著要測試的潛在分支的數量會爆炸。例如,帶有opt1,opt2和opt3的binary [options] <arg1>
只能出現一次,需要轉換為<nothing> | opt1 | opt2 | opt3 | opt1 opt2 | opt1 opt3 | opt2 opt1 | opt2 opt3 | opt3 opt1 | opt3 opt2 | ...
,如果沒有採取任何措施來規避問題,將導致性能下降。
解決方案是使預測分支線程都攜帶一組計數器。每個測試操作都能夠檢查和更新線程的計數器。這樣,opt1,opt2和opt3都可以擁有自己的計數器,16個分支可以減少到(opt1 | opt2 | opt3)*,只有4個(每個選項1個,循環1次)。
但這是完整參數匹配。 但是這對於分組參數不起作用(例如GNU樣式二進製文件,其中-a -b -c可以縮短為-abc)
解決方案是先匹配已有的組合。 例如,短參數定義為/ - ([a-z])+ /,並且根據有效選項集檢查每個捕獲的字符。 這樣可以輕鬆定義分組參數,而不會失去一般性。
目前團隊希望討論出好的shell-shellac協議,因為每種shell都會根據自己的假設實現自己的解析器,他們希望做一個統一好用的介面以保持向後兼容。
wgpu-0.3
有關 WebGPU的庫
目前的toolchain
wgpu-rs -> wgpu-native -> gfx-backend-xxx -> native API
未來希望
wgpu-rs -> wgpu-native -> gfx-backend-gl -> glow -> WebGL -> Browser
但我們應該
wgpu-rs -> WebGPU -> Browser
在Firefox上是
Firefox -> wgpu-remote -> wgpu-native -> gfx-backend-xxx -> native API
ICFP 2019編程競賽 團隊使用Rust贏得第一
閃電回合
- 用C++, Haskell 是最快的
評審獎
- Sound! TypeSystem
- 他們使用多種語言協同 Rust, C++, Python, JavaScript, and Go
完整比賽
- 第一名 Unagi 使用 rust
- 第二名 CowDay 使用 C++
比的是 Bit Rotting Problem
對於給定的地圖,給出一個覆蓋整個表面的移動軌跡,同時盡可能走最少步
- 油漆工有三個機械手
- 它可以向四個方向移動
(但不是透過牆壁)。 - 油漆工可以轉身
- 機械手可折疊展開地圖的狹窄部分。
- 附加一個額外的機器人手,擴大其範圍
- 油漆工可以開一次兩倍加速,持續50步。
- 油漆工可以製作隧道牆壁和障礙一次,持續30步。
比賽時間 72小時
From 日报小组 @Damody
日报订阅地址:
独立日报订阅地址:
社区学习交流平台订阅: