【Rust日报】 2019-08-23

in #rust5 years ago

C2Rust

一個把C code轉換成 rust code的小程式,現在可以用cargo 下載安裝。

簡單的程式還可以,有用到動態指標動態載入的庫就爆了。

小編自己的感覺是玩具等級不怎麼實用。

Read more

Dwelo如何在Rust中重寫 IoT gateway

小編我曾經在gateway team工作過,

rust其實非常適合寫這種在需要穩定執行的程式。

這篇文章講解了很多跟C庫打交道的技巧,

包含FFI, call c function, impl Drop, return pointers, error handle

蠻實用的

Read more

一個youtube短片教你如何使用gtk-rs (gtk 4.0)

Read more

Rust Fuzzing獎勵計劃

獎勵:500美金

如何獲得獎勵?您需要將Fuzzit與Go語言或Rust語言項目集成,星星超過1.5k。

其它細節請看原文。

Read more

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都會根據自己的假設實現自己的解析器,他們希望做一個統一好用的介面以保持向後兼容。

Read more

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

Read more

ICFP 2019編程競賽 團隊使用Rust贏得第一

閃電回合

  • 用C++, Haskell 是最快的

評審獎

  • Sound! TypeSystem
  • 他們使用多種語言協同 Rust, C++, Python, JavaScript, and Go

完整比賽

  • 第一名 Unagi 使用 rust
  • 第二名 CowDay 使用 C++

比的是 Bit Rotting Problem

對於給定的地圖,給出一個覆蓋整個表面的移動軌跡,同時盡可能走最少步

  • 油漆工有三個機械手
  • 它可以向四個方向移動
    (但不是透過牆壁)。
  • 油漆工可以轉身
  • 機械手可折疊展開地圖的狹窄部分。
  • 附加一個額外的機器人手,擴大其範圍
  • 油漆工可以開一次兩倍加速,持續50步。
  • 油漆工可以製作隧道牆壁和障礙一次,持續30步。

比賽時間 72小時

Read more


From 日报小组 @Damody

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

Coin Marketplace

STEEM 0.19
TRX 0.18
JST 0.031
BTC 88711.71
ETH 3154.74
USDT 1.00
SBD 2.86