rust logo background
最新内容

故西洋学说则与时俱进

蔡元培
Tokio 一篇文章详细介绍了他们是如何把 scheduler 提升 10 倍性能的。涵盖的内容很详细,面也很广。
系统支持了原生 async / await 语法,同时支持了 Rc,Vec,Box 等常用智能指针
该版本稳定了几个内容: - Pipeline 式的编译(流水线编译)。在多核的情况下加快了编译速度 - `#[deprecated]` 标志可以适用于宏 - type_name 的稳定
终于终于 hyper 也伴随 tokio 更新出了 0.13 alpha 1 版本,主要更新内容有两点: - 支持了 async / await 语法 - 服务端改用了更加易用的 tower::service 接口
该文作者通过研究栈回溯信息发现,Rust的异步代码基于轮询(Poll)模型,意味着我们总是有「异步调用者」在轮询期间,等待「异步被调用函数」在栈上完成。这个属性使得调试异步代码在Rust中相比于其他语言更加容易。(该文比较了JavaScript中的异步栈回溯信息)
作者在 Rust 中测试了小结构体使用那种语义可以得到更好的可读性和性能。测试结果有两点: - 复制语义可以带来更好的代码可读性 - 复制语义会带来不到 1% 的性能损失 通过对比 C++ 发现了 Rust 会默认采用了 #[inline] 导致了极小的性能损失。作者也推荐在不追求极致性能的情况下可以采用复制语义。
文中指出 tracing 在异步的网络连接场景下更加便于测试(在日志中提供了连接信息)
作者在 druid 这个库的 PR 中提及到了因为支持 I18N 导致编译时间变长,文件大小变大。提出了几点想法。 - 一个完整的 Feature 会导致膨胀的出现 - 基础的库应该保持精简 - 使用依赖库的问题在于依赖中会导致同一个库存在几个不同的版本,从而导致代码重复 - 过程宏导致编译时间膨胀 - 序列化,单态化和异步代码应该更加谨慎 - 用 cargo-bloat 来分析膨胀点在哪里
为了更好的编写在 IoT 环境下的内核,作者编写了一个框架。框架提供了方便的内存分配,并发管理和使用后自动销毁内存的方法,以减少部分开发中常见的 BUG,作者还给出了自己的论文链接 Securing the Device Drivers of Your Embedded Systems: Framework and Prototype / https://mssun.me/assets/ares19securing.pdf
全新实现了全异步的方法,包括了读写文件的异步操作
alex 在这个 ISSUE 回复了关于怎么减小文件大小的说明。简而言之就是,不要使用 fmt,不要 panic,不要 allocate;并且把优化模式设置成 size 模式(profile.release.opt-level = 's')
通过配置 sccache 可以明显加快 Rust 项目在 CI 上的编译速度
文章简单地描述了 TiKV 是怎样迁移的,因为async / await 还没稳定,所以在代码中还是没有采用这样的写法。同时还赞扬了一下 Rust 的 Trait 系统,无须修改编译器就完成了 Pin 的实现。因为futures 0.3 移除了部分函数,导致 TiKV 需要自己写了几个辅助的 Trait 来兼容旧的代码
一门编程语言就像一个小宇宙,语言中的各种语法概念就像一颗颗星辰。对于初学者来说,看这些语法概念与看星罗棋布时产生的迷惑是相似的。幸亏编程语言是由人类创造的,编程语言的作者可以被找到,编程语言的源码也可以被看到,甚至一些好的编程语言还会为你准备好非常丰富的文档,供你参阅学习。通过这些信息我们可以了解到:一门语言缘何诞生?它想解决什么问题?它遵循什么样的设计哲学?一门好的语言是有内涵哲学的语言,它表里如一,有所想,有所为。 Rust 语言就是这样一门哲学内涵丰富的编程语言。通过了解 Rust 遵循什么样的设计哲学,进一步了解它的语法结构和编程理念,就可以系统地掌握这门语言的核心,而不至于在其纷繁复杂的语法细节中迷失。
原文:Algebraic Effects for the Rest of Us,作者Dan Abramov。 翻译题记: 昨天的Rust日报上刊登了一个实现了代数效应的Rust库(https://github.com/pandaman64/effective-rust/),以及这篇文章的原版链接。 这是一篇通俗易懂的有趣文章,本文只是对其的粗略意译,并且省略了其中的链接(和表情包)。请有能力的朋友尽量前往原文围观。
讨论内容囊括了孤儿规则的现状,还讨论了其存在的合理性
一篇关于如何组合 Option 和 Result 的经验类文章,提供了怎么比较好的处理和返回调用其他库产生的异常
一篇关于 Rust Monad 的文章,如果没接触过 Monad 的话可以先阅读这一篇 Monad 的简要介绍文章 http://jiyinyiyong.github.io/monads-in-pictures/
很多人都在吐槽 Rust 编译慢,但是数据上看 Rust 编译时间平均缩短了20-40%
无船大佬着手建立一个小型轻量化 Rust 的计划,但是这不意味着这个轻量化的 Rust 会放弃 RAII 和生命周期和可变性,而是通过简化泛型、移除 Rc Cell RefCell 线程安全保证的智能指针、类似 Go 语言CSP / actor 模型的绿色线程运行时等方面来简化这门新语言
这篇文章介绍了 Rust 项目中模块的设计逻辑,不太了解该方面知识的读者可以阅读。
通过 Swift 来阐明构造函数的危害,并说明了 Rust 当前设计的权衡利弊
这篇文章表述了 Go、Rust、Swift、D 这些比较年轻语言中泛型和元编程的实现差异。
该文教你用Yew的函数和组件来模块化代码。

RESOURCE.RS 倾力制作