【Rust日報】 2019-08-21:「官方」async_await將在Rust 1.39穩定版中發布

2021-02-20 Rust語言中文社區
「官方」async_await將在Rust 1.39穩定版中發布

#async #await #stable

目前,相關的PR已被合併。

Read More: https://github.com/rust-lang/rust/pull/63209#issuecomment-523113079

宣告:async-std 異步標準庫的測試版

#async_std

並打算在2019年9月26日前發布1.0版。該庫附帶了一本書和完善的應用編程接口文檔,並將很快提供一個穩定的接口來支持異步庫和應用程式。

雖然我們在1.0版本之前沒有承諾過應用編程接口的穩定性,但是我們也不期望做出任何突破性的改變。

該庫由Rust異步生態系統工作組成員 stjepang 開發,他也是crossbeam的主要開發者,同時也供職於Rust諮詢公司Ferrous Systems。

Read More: https://async.rs/blog/announcing-async-std/

Book: https://book.async.rs/

Docs: https://docs.rs/async-std/0.99.3/async_std/

性能測評:C vs Rust vs Go

#Go #C #performance

基於問題:對於給定的圖像,在圖像中找到流行的顏色,這樣用戶就可以根據它的顏色來瀏覽圖像。

使用算法:histogram

最終測試結果:

C 14s
Rust 21s
Go 34s

結論:在實現高效算法方面,Rust似乎處於最佳狀態。它不會在抽象之中隱藏任何東西,你仍然可以像Go一樣高效開發。

Read More: https://medium.com/@marek.michalik/c-vs-rust-vs-go-performance-analysis-945ab749056c

histogram算法:https://spin.atomicobject.com/2016/12/07/pixels-and-palettes-extracting-color-palettes-from-images/

CPU原子和順序解釋

#cpu #atomics #ordering

本文簡要地解釋了CPU內存順序是如何工作的,以及它們是做什麼的,這對於理解Rust中的原子類型和Mutex鎖比較重要。

Read More: https://fy.blackhats.net.au/blog/html/2019/07/16/cpu_atomics_and_orderings_explained.html

介紹Glam和Mathbench

#linear #algebra

glam是一個用於遊戲和圖形的簡單快速Rust線性代數庫。mathbench是一組單元測試和基準測試。性能相比於cgmath和nalgebra,有一定的優勢。並且有SIMD支持。

Read More: http://bitshifter.github.io/2019/07/10/introducing-glam-and-mathbench/

Glam: https://docs.rs/crate/glam/0.7.1

Mathbench-rs: https://github.com/bitshifter/mathbench-rs

「官方」Rust編譯器團隊活動頁

#CompilerTeam

該網站記錄了Rust官方編譯器團隊的一些活動記錄、文檔、會議等信息,感興趣的可以關注。

Read More: https://rust-lang.github.io/compiler-team/

<_>::v::<_>:一件有趣的Rust「藝術品」

#tips #fun

<_>::v::<_> 像個貓頭鷹(面試題 +1)

原始代碼:

type O = u8;

trait V {
fn v<T: Default>() -> (T, Self);
}

impl V for O {
fn v<T: Default>() -> (T, Self) {
(T::default(), 0)
}
}

fn main() {
let owl = <_>::v::<_>;

println!("{:?}", owl() as (O, O));
}

網友改進:

type O = u8;
const O: O = 0;

trait V {
fn v<T: Default>() -> (T, Self);
}

impl V for O {
fn v<T: Default>() -> (T, Self) {
(T::default(), O)
}
}

#[test]
fn test() {
let owl = <_>::v::<_>;
assert_eq!(owl(), (O, O));
}

你看懂了嗎?

HinT:

<_>::v::<_>其實等價於<u8>::v::<u8>,類型推導

o和0 不要傻傻分不清楚

Read More: https://chrismorgan.info/blog/rust-artwork-owl/

gym-rs: OpenAI gym的Rust綁定

#openAI

測試覆蓋率報告作為代碼閱讀工具

#CoverageReport #CI #review

本文教你一種使用覆蓋率報告閱讀項目源碼的方法,以alacritty的代碼為示例,使用kcov來說明。

awmp:用於在actix-web中處理文件上傳

#actix #multipart

是對actix-multipart的包裝,方便使用

Repo: https://crates.io/crates/awmp

construct: 一個用同倫映射構造三維幾何的高階函數編程庫

#functional #3D #HomotopyMap

什麼是同倫(Homotopy)映射?

同倫是兩個函數之間的連續變形。考慮將兩個函數f和g與一個在0和1之間的參數結合起來,這樣把參數設為0就得到f,把參數設為1就得到g。換句話說,它讓你可以在函數之間平滑地插值。這個庫使用了一個簡化的同倫版本,用於構建三維幾何。

Repo: https://github.com/pistondevelopers/construct

一個Yew使用react組件的示例

#react #yew #wasm

Repo: https://github.com/hobofan/yew-react-example

Meuse: 一個免費的Rust私有Cargo註冊倉

#cargo #registry

Repo: https://github.com/mcorbin/meuse

Glitter: 漂亮地輸出Git倉庫狀態信息

#git

用於在shell提示符中顯示關於Git倉庫的信息

Repo: https://github.com/glfmn/glitter/tree/v0.2.0

「系列文章」Rust中如何優化async/await Part I

#async

官方在穩定Rust異步async/await的過程中,解決了很多問題。其中之一是從異步到狀態機的轉換,目前不是最優的方法。所以,這導致狀態變得比需要的大得多。由於狀態大小實際上是超線性增長的,所以當狀態大小增長超過正常系統線程的大小時,可能會觸發實際棧上的棧溢出。

該文作者過去幾個月主要是解決這個問題,他寫下這篇文章來告訴大眾該問題的優化過程。好事多磨。

Read More: https://tmandry.gitlab.io/blog/posts/optimizing-await-1/

相關issues:https://github.com/rust-lang/rust/issues/52924

相關issues:https://github.com/rust-lang/rust/issues/62149

From 日報小組 Chaos

日報訂閱地址:

獨立日報訂閱地址:

Telgram Channel

阿里雲語雀訂閱

Steemit

GitHub

社區學習交流平臺訂閱:

Rust.cc論壇: 支持rss

Rust Force: 支持rss

微信公眾號:Rust語言學習交流

相關焦點

  • 【Rust日報】 2019-08-12:Tokio alpha 版發布,新版本支持async/await
    Tokio alpha 版發布#tokio新版本支持async/awaittokio = "=0.2.0-alpha
  • 【Rust日報】2019-10-03 rust-lang 主倉庫突破 10,0000 次 commit
    rust-lang 主倉庫突破 10,0000 次 commit截至發稿,rust-lang/rust 主倉庫為 10,0006
  • 【Rust日報】2021-08-21 Apache Arrow DataFusion 5.0.0 版本
    收錄於話題 #Rust日報$ git shortlog -sn 4.0.0..5.0.0 datafusion datafusion-cli datafusion-examples 61 Jiayu Liu 47 Andrew Lamb 27 Daniël Heres 13 QP Hou 13 Andy Grove 4
  • 【Rust日報】2021-11-29 Python中調用 Rust
    Python中調用 RustPyO3 使從 Python 調用Rust 代碼變得很容易。
  • 【Rust日報】 2019-07-16:「新手向」Rust vs C++ : 實現神經網絡
    Read More在Rust中使用異步網絡收集廣播UDP數據包#async #UDP本文是async和tokio的一次嘗試,作者寫了一個通過UDP廣播發現本地網絡上的設備的應用,並且介紹了他實現過程中的一些心得。
  • 【Rust日報】2020-10-02 行動作業系統SailfishOS支持Rust了
    基於async/await開發,100%內存安全。這是無船一系列解讀Ringbahn原理文章中的第三篇。連結:https://without.boats/blog/ringbahn-iii/又一個新的Rust REPL庫作者使用Rust寫了一個新的REPL庫,並且還提供了兩個命令p!和d!
  • Rust語言中文社區《Rust日報》總第1000期
    它現在支持更多的DataFrame接口,它的實現也綜合利用了async/await語言特性,相比直接使用線程,它能優化多線程表現。Arrow IPC是進程間交互和序列化的格式。Apache基金會在網站上描述了這個格式,期望包括在流中和文件中,交換Arrow數據的應用程式都使用這個格式。從前的1.0.0版本已經更新到了Arrow IPC的第五版,也有對第四版的兼容性設計。
  • 深入淺出Rust異步編程之Tokio
    首先讓我們看看為什麼使用rust來進行異步編程。這裡tokio官方給出了一個性能測試的對比,可以看到tokio是性能最好,實際上運行這個基準測試的時候,tokio性能更好的2.0版本尚未發布,否則估計性能還有很大提升。因此,我們可以認為需要非常極致性能的時候,我們可以選擇rust+tokio來實現。
  • 【Rust日報】2020-12-3 SHADERed可以在線編輯rust-gpu!
    Github: https://github.com/phiresky/ripgrep-all【大家的項目】無動態內存分配版的async-trait此項目希望實現David Tolnay發布的crate async-trait 的功能,讓trait中也可以聲明async fn。
  • 【Rust日報】 2020-06-12 了解 Fuchsia 的 Rust 開發
    在已經開放的開發文檔裡面,Rust 文檔相對來說還是比較豐富的,相應的公開討論頻道在:rust@fuchsia.com。了解更多詳情或者查看文檔請看:https://fuchsia.dev/fuchsia-src/development/languages/rustreddit 上參與討論:https://www.reddit.com/r/rust/comments/h7dkv2/rust_fuchsia/GameLispGameLisp 是一個用於 Rust 遊戲開發的腳本語言
  • 【Rust日報】2021-10-04 RillRate 大型 Yew 應用揭曉
    RillRate 周一發布了前端的所有資源(由Yew製作)!並將許可完全改為Apache-2.0:前端和後端。你可以在這裡看到Yew應用程式的資源:https://github.com/rillrate/rillrate/tree/trunk/pkg-dashboard原文連結: https://github.com/rillrate/rillratePoem 0.8 版本發布Poem是一個功能齊全且易於使用的web框架,使用Rust程式語言。
  • 【Rust日報】2019-08-19 - Rust遊戲開發工作組成立了!
    Rust將底層控制,卓越性能和現代構建工具相結合,使其成為遊戲開發人員的一個令人興奮的選擇。多年來,多次提出了一個支持這個新興社區的工作組的想法,我們很高興地宣布,一個團隊終於成立了!我們的章程列出了兩個主要目標:原文文章:https://rust-gamedev.github.io/2019/08/18/introducing-the-rust-game-development-working-groupSystem 76 發布了用Rust編寫的新GTK固件管理器System76一直在開發一個簡單易用的工具來更新Pop!
  • 【Rust日報】2020-08-21 RustConf研討會在線舉辦
    Oxigraph目前正在重度活躍的開發中,很多SPARQL的查詢評估還沒有經過優化。需要最新的穩定版本的Rust和Cargo安裝 同時也需要clang編譯RockDB。telescope hardware with rustVideo#08 RustConf 2020 - Macros for a more productive rustVideo#09 RustConf 2020 - Rust for non-systems programmersVideo#10 RustConf 2020 - Closing keynotetickrs |
  • 【Rust 日報】2020-02-11 Rust stable 1.50 發布,牛年rust牛氣沖天!
    源碼在這:https://github.com/ZhangHanDong/2021soaringRust stable 1.50 發布!Rust stable 1.50 版本在今天發布了,你可以通過以下命令升級你的Rust版本:關於1.50這個版本,改進了數組索引,擴展了對聯合欄位的安全訪問,並添加到標準庫中。
  • 【Rust日報】2019-10-21 - Rust的設計模式
    patterns - Rust的設計模式這是一個Rust程式語言中設計模式和習慣用法的開源倉庫。
  • 《 Rust 中文精選》2021年第七期正式發布
    本刊動態2021年(上半年)RustMagazine 中文精選 PDF 下載 : https://github.com/RustMagazine/rust_magazine_2021/releases/tag/0.5[1](GitHub Page)從六月起已經停止 Rss
  • Rust async 威力之圖片下載器
    [package]name = "downloadfile"version = "0.1.0"authors = ["mur <mur@mur>"]edition = "2018"# See more keys and their definitions at https://doc.rust-lang.org/cargo
  • 【Rust日報】2020-08-27 在Arduino Uno上面跑 Rust 程序
    github.com/raskr/rust-autograd ②、https://github.com/spearow/juiceRapier物理引擎的性能測試Rapier在前兩天公布源碼的同時還發布了這篇blog。
  • 【Rust日報】2021-01-05 Rust 1.49.0 正式發布
    Rust 1.49.0在又經過六周的迭代開發,Rust 1.49.0 現在已經發布了!
  • Rust 中調用 GitHub Web API - Rust Cookbook 中文版
    使用 RESTful API 分頁以將分頁的 web API 方便地包裹在 Rust 迭代器中,當到達每一頁的末尾時,迭代器會從遠程伺服器加載下一頁結果。("https://crates.io/api/v1/crates/{}/reverse_dependencies?