前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「官方」async_await将在Rust 1.39稳定版中发布

「官方」async_await将在Rust 1.39稳定版中发布

作者头像
MikeLoveRust
发布2019-08-23 23:40:37
1.7K0
发布2019-08-23 23:40:37
举报

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

最终测试结果:

代码语言:javascript
复制
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)

原始代码:

代码语言:javascript
复制
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));
}

网友改进:

代码语言:javascript
复制
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

  • Repo: https://github.com/MrRobb/gym-rs
  • gym: https://github.com/openai/gym

测试覆盖率报告作为代码阅读工具

#CoverageReport #CI #review

本文教你一种使用覆盖率报告阅读项目源码的方法,以alacritty的代码为示例,使用kcov来说明。

  • Read More: https://www.joshmcguigan.com/blog/coverage-reports-code-reading-tool/
  • alacritty: https://github.com/jwilm/alacritty

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
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-21,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 「官方」async_await将在Rust 1.39稳定版中发布
  • 宣告:async-std 异步标准库的测试版
  • 性能测评:C vs Rust vs Go
  • CPU原子和顺序解释
  • 介绍Glam和Mathbench
  • 「官方」Rust编译器团队活动页
  • <_>::v::<_>:一件有趣的Rust「艺术品」
  • gym-rs: OpenAI gym的Rust绑定
  • 测试覆盖率报告作为代码阅读工具
  • awmp:用于在actix-web中处理文件上传
  • construct: 一个用同伦映射构造三维几何的高阶函数编程库
  • 一个Yew使用react组件的示例
  • Meuse: 一个免费的Rust私有Cargo注册仓
  • Glitter: 漂亮地输出Git仓库状态信息
  • 「系列文章」Rust中如何优化async/await Part I
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com