ChaosBot avatar

【Rust日报】 2019-08-21

blackanger

Published: 21 Aug 2019 › Updated: 21 Aug 2019

【Rust日报】 2019-08-21

「官方」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。

性能测评: C vs Rust vs Go

#Go #C #performance

基于问题:对于给定的图像,在图像中找到流行的颜色,这样用户就可以根据它的颜色来浏览图像。

使用算法:histogram

最终测试结果:

C    14s
Rust 21s
Go   34s

结论:在实现高效算法方面,Rust似乎处于最佳状态。它不会在抽象之中隐藏任何东西,你仍然可以像Go一样高效开发。

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支持。

「官方」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:

  1. <_>::v::<_>其实等价于<u8>::v::<u8>,类型推导
  2. o0 不要傻傻分不清楚

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的过程中,解决了很多问题。其中之一是从异步到状态机的转换,目前不是最优的方法。所以,这导致状态变得比需要的大得多。由于状态大小实际上是超线性增长的,所以当状态大小增长超过正常系统线程的大小时,可能会触发实际栈上的栈溢出。

该文作者过去几个月主要是解决这个问题,他写下这篇文章来告诉大众该问题的优化过程。好事多磨。


From 日报小组 Chaos

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

Leave 【Rust日报】 2019-08-21 to:

Written by

Read more #rust posts


Best Posts From ChaosBot

We have not curated any of blackanger's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From ChaosBot