当前位置 : 主页 > 编程语言 > java >

【Rust日报】 2019-08-21:「官方」async_await将在Rust 1.39稳定版中发布

来源:互联网 收集:自由互联 发布时间:2022-06-22
「官方」async_await将在Rust 1.39稳定版中发布 #async #await #stable 目前,相关的PR已被合并。 Read More:https://github.com/rust-lang/rust/pull/63209#issuecomment-523113079 宣告:async-std 异步标准库的测试版

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

    • 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


    日报订阅地址:

    独立日报订阅地址:

    • Telgram Channel
    • 阿里云语雀订阅
    • Steemit
    • GitHub

    社区学习交流平台订阅:

    • Rust.cc论坛: 支持rss
    • Rust Force: 支持rss
    • 微信公众号:Rust语言学习交流


    网友评论