「Rust每日新闻」本周精选 • 第二十四期

Words
2334
Reading
11 min
Listen
Play
8y

前言:

从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛tg channelSteemitGitHub语雀订阅都开通了Rust每日新闻,分享我每天的见闻,偶尔也夹杂了一些个人的观点。大半年过去了,Rust每日新闻已经成为了Rust社区群大家每天必看的内容。在这个知乎专栏里,每周会精选几篇Rust社区中的动态,和大家分享。分享的内容就不按时间排序了。

2018-12-16


「付费阅读」系列


官方新闻

官方核心成员nrc对Rust 2021 Edition的思考:

Rust 2022

「官方网络工作组」异步进展

#async

虽然Rust 2018发布的时候没有稳定异步编程,但在今年,异步编程也取得了很大进展。网络工作组发文,介绍了几个促进Nightly生态中使用async/await的crate。

async/await对Rust的重要性:

  • async/await在其他语言中已经证明了其可用性
  • 在Rust中引入async/await中需要多考虑一个元素:借用。所以,之前在编写异步代码的时候,必须使用'static限定,并且还经常要用到Arc和Mutex。
  • async/await语法稳定之后,将不会有「借用」相关的问题。但是在这之前,还有很多工作要做,比如稳定await语法。现在google的Fuchsia项目已经在大规模使用async/await语法了。
  • 标准库中支持Future等trait的工作也即将完成。
  • 确定了各种API,包括Waker、Pin、与tokio兼容的futures-rs 0.1等。

发布了一些新的crate:

  • romio,之前介绍过,是对tokio最小化包装,为了支持async/await。
  • http-service, 一个基于字节的、http和新的futures API的crate,提供HTTP通用接口。是从Tide库中提取出来的API。
  • Tyger,即将推出的这个库是在Hyper上面构建的一个小的crate。提供直接的HTTP服务接口,因此可以直接使用async/await。Tyger也会对Hyper增加一些补充,提供一些更高级的抽象。也是从Tide中提取出来的包。

官方希望在2019年上半年稳定async/await。官方所考虑的不仅仅是支持这个语法,而且还在为打造async/await生态做足了准备。这也是异步编程支持如此缓慢的原因。

Read More


社区新闻

OS2ATC2018(第六届开源操作系统年度会议)会议现场直播链接

现在的topic: 《Design & Implementation of uCore Plus OS in Rust Lang》(清华大学ucore操作系统课程升级Rust教学)

https://flypage.chinamcloud.com/h5/tpl/index.html?id=6469&tid=810

日程: http://soft.cs.tsinghua.edu.cn/os2atc2018/rc.html

「安全」Crossbeam发现double-free Bug

MsQueue和SegQueue会发生此Bug。
即使从队列中弹出一个元素,crossbeam也会运行它,此问题来自于crossbeam-epoch的垃圾收集器内的析构函数。

Read More

crev: 代码审查工具箱

提供了一个cargo工具:cargo-crev

该工具可以判断你项目中依赖crate的安全性、质量和发现的问题。可以在公共的git仓库里发布可验证的review信息。通过这种方式期望在Rust生态系统中构建可信任的网络。将不会有人再受到未经审查和不受信任代码的困扰。

想想npm因为依赖包出了多少次安全事故。这个工具ms不错,但是否真的可以解决问题?

使用方法:

cd <your-project>
cargo crev id gen # generate your id
cargo crev verify # verify your depedencies
cargo crev review <crate> # review a dependency
cargo crev db git status # check git status of your proof database
cargo crev db git -- ci -a # commit everything
cargo crev db git push # push it to your github repository
cargo crev trust <id> # trust someone with a given CrevId
cargo crev db fetch # fetch updates from all people you trust
cargo crev verify # verify again
cargo crev help # see what other things you can do

其中id是可以通过crev gitter channel来共享给大家的,形成信任网络。然后可以通过 cargo crev trust <id>命令从你信任的人那里获取依赖crate。

当然,这世界上没有绝对的安全,但也无法阻碍人们追求它的脚步。

crev

Rust非常适合高性能科学计算

来自某粒子物理实验室的软件性能工程师Hadrien坦言,相比于Cpp,Rust更适合高性能科学计算。并且对Rust能进入这个领域之前需要完善的工作提出了他自己的建议,同时也希望Rust 2019的目标之一可以是「高性能科学计算」。

Read More

杭州Rust线下Meetup回放视频

一共两场分享,视频地址是第二场分享,在列表里也能找到另外一场分享的视频。

Bilibili

使用Rust和WebAssembly进行edge计算

什么是边缘计算? 边缘计算将数据的处理、应用程序的运行甚至一些功能服务的实现,由网络中心下放到网络边缘的节点上。属于一种分布式计算。一直以来,公共和企业设施的监测和维护消耗着大量的人力、物力成本;电力、制造等行业数字化转型中对海量数据的实时、智能处理也有着强烈需求。如果用常规模式构建物联网,所有数据都交给云端,那么会带来一系列的问题。边缘计算就是为了解决这个问题。

fastlylabs公司,推出了一个产品Terrarium(看着像是用webassembly.studio改造的),是一个基于浏览器的多语言编辑和部署平台。据该公司描述,此产品是为了推进边缘计算。Terrarium是基于WebAssembly沙箱而构建。Terrarium可以将几种不同的编程语言编译为WebAssembly,然后将其编译为快速,安全的本地代码,并用于为Web服务提供动力。

本文介绍了如何用Rust和Terrarium进行编写边缘计算服务。

Read More

「趣味」Rust Raps: Rust 2018 Edition首张单曲发布

由Rusta Rhymes推出的热门新单曲“Ferris Crab(Rust Raps 2018 Edition)”即将推出首张专辑“Drop for Mic”。

在线听

Read More

Rust开发的一款编程教学游戏预览

img

Read More


学习资源

Rust Quiz解读已更新到Quiz 15

去专栏 Read More

Rust 异步函数内部转换流程

本文介绍了Rust内部async/await的内部转换机制,包括generator、状态转换过程等。

Read More

使用Cargo Test来Debug代码

本文介绍了使用cargo test命令,结合单元测试来调试代码中的问题。

Read More

「系列博文」在浏览器中使用WASM Part 1

本文介绍了如何使用Rust编译wasm,并在浏览器中使用它。同时也包括了wasm的工作机制,值得一看。

Read More

在AWS Lambda上面运行Rust

本文以编写一个独立的crate为例,从代码编写到部署,介绍如何在AWS Lambda上面运行Rust库。

Read More

「嵌入式Rust」Cortex-M3 入门指南(一):体系概述

Read More

「视频」如何在Rust/C/C++/.Net中使用SIMD

youtube

用Rust为Kubernetes动态生成Dockerfiles

Read More

「Slides」在Rust中使用C的va_list

以及,你为什么不应该用它。


项目

libui-rs: libui的Rust绑定

libui-rs

gba: 帮助你创建GBA游戏

NASA开源的静态分析工具: ikos

虽然是为C/C++静态分析实现的工具,但据说也适用于LLVM IR,因此有助于检测Unsafe Rust的代码。

seed: Rust+WebAssembly 前端框架

基于wasm-bindgen和js-sys创建。创建应用时需要依赖web-sys。

seed

「区块链」comit-rs:Comit协议的Rust实现

COMIT是一个协议,以链接不同的区块链。以便将区块链生态系统打造地更大,更具有包容性。

comit-network/comit-rs

[WIP] Rust实现的Lua解释器

luster

Rust开发安全应用程序指南

该指南不是Rust语言教程,只是记录Rust开发应用程序过程中可能出现的「坑」,特别是开发一些对安全性要求较高的程序需要注意的地方。该指南还在持续更新中。

使用Rust配置管理kubernetes

本文作者使用Rust构建了一个用于管理k8s上运行的微服务声明格式和生命周期的标准化工具shipcat。它封装了k8s的API,目的是为了更加标准化、版本化、权限化、自动化管理k8s。本文阐述了k8s管理中的问题,以及shipcat的解决思路。


工具与库

spirit教程

spirit可以帮助开发者更容易地构建Unix守护进程。 文章里介绍了它的使用方法。

parstream: 基于线程池以流方式计算迭代函数

并且不会打乱迭代器中元素的顺序。

parstream

命令行使用频率跟踪工具fe

fe

pom:又一个peg解析器

pom

支持no_std的Curve25519加密库

椭圆曲线加密/签名/密钥交换算法Curve25519的 #[no_std] 版本

Read More

「Rust每日新闻」本周精选 • 第二十四期 | Ecency