用Rust重写Node.js实现的接口之后所带来的震惊
#node.js
作者用Rust重写了Node.js实现的一个小接口,但是流量很大,每秒180个请求。
之前Node.js版本技术栈:
- koa,框架
- pino,日志
- request,转发请求
Rust版本技术栈:
- actix-web, 框架
- serde-json, 序列化处理json
- slog-json,日志
- reqwest,转发请求
作者使用的是reqwest::async
异步请求。Rust版本部署之后,CPU使用率较Node.js版本下降了90%,内存使用量降下了一半。
这些数据更有助于作者说服他的同事们使用Rust,分享出来也可以帮助大家来说服公司使用Rust。
「官方」Async/Await状态报告
Niko发表了这篇博客,阐述了async/await当前的状态:
- 建立了async/await实施小组。该小组属于编译器团队,但是专注于具体的实现。
- 在async/await稳定之前,还需要确定一个重要的问题:「该稳定什么?」。
Niko所考虑的是,为了什么目的而稳定。
如果稳定的目的是「促进async/await被广泛使用」,那么首先应该解决的就是await语法。
如果稳定的目的是「让早起的使用者们开始更多地使用它们」,则只要不存在向后兼容的问题就可以。
这两个目的都可以,但是如果选择后者,则需要传达更多的细节,以防止「早期使用者们」遇到下面的问题时不会被拒之门外。
当前的问题:
- 实施问题。实施组现在发现一个严重阻碍进度的问题:「issues/54716」,以及一些影响开发者体验的问题。另外也没有大量的活跃贡献者来参与async/await的实现工作。
- 语法问题。对于await语法的讨论结果,由withoutboats在整理中。为了稳定aysnc/await,其实也并不一定非要稳定await语法,也可以先稳定await!宏。这个方案有利于早期的使用者,但是对于更广泛的大众来说,似乎并不是那么令人满意。所以可以像try!宏那样,先稳定宏,然后再稳定具体的语法。(让子弹飞一会)
- 解决难题。作为一个社区最常做的事情之一,就是找到一种方法来解决真正难以解决的问题。await语法问题正是一个契机,可以帮助优化社区的讨论流程和工具。
总之, async/await即将到来:Niko已经迫不及待地想看看人们用它来构建什么了。
「嵌入式Rust讨论」用什么硬件可以更容易地开始用Rust进行嵌入式开发
有人在Reddit发帖询问此问题,他用的是Arduino,但是使用Cpp和Rust都非常痛苦。即便使用针对Arduino的Rust版本avr也不太稳定,所以他想问问什么硬件更适合入门者?
回复中有人提到,使用基于ARM Cortex-M的硬件,比如STM-32 uC更好,Rust对该硬件体系支持的更好。可以配合discovery book一书学习。 评论中也有其他建议可以看看。
为Rust库公开FFI接口
该文作者之前实现了battery库,该库用到了battery-ffi库,专门封装了一些FFI接口,给主库使用。他在这篇文章中写下了编写FFI的一些注意事项。可以看作是一个FFI最佳实践来学习。
Rust项目如何使用Azure云的Pipelines服务
tweek-rust: Rust实现的Tween动画工具包
Tween动画可以对对象进行缩小,放大,旋转,渐变,位移等操作,用于在游戏或应用中实现一些渐变类动画动作。最早是伴随Flash技术出现的。现在该技术已经用在了web前端和手机App中。
该库中包含了两个示例,可以看看。
Atto: Rust实现的一个简单的函数式语言
laminar: 用于多人游戏的半可靠UDP协议实现
该库在UDP的基础上实现了TCP的一些功能。它被用于Amethyst游戏引擎中。
MIRAI: 来自Facebook实验室的Rust MIR抽象解释器
MIRAI的目标是成为Rust的静态分析工具。
日报订阅地址: