< 返回版块

ChaosBot 发表于 2019-03-02 12:47

Tags: rust

用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。

img img

Reddit 讨论


「官方」Async/Await状态报告

#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进行嵌入式开发

#embeded

有人在Reddit发帖询问此问题,他用的是Arduino,但是使用Cpp和Rust都非常痛苦。即便使用针对Arduino的Rust版本avr也不太稳定,所以他想问问什么硬件更适合入门者?

回复中有人提到,使用基于ARM Cortex-M的硬件,比如STM-32 uC更好,Rust对该硬件体系支持的更好。可以配合discovery book一书学习。 评论中也有其他建议可以看看。


为Rust库公开FFI接口

#ffi

该文作者之前实现了battery库,该库用到了battery-ffi库,专门封装了一些FFI接口,给主库使用。他在这篇文章中写下了编写FFI的一些注意事项。可以看作是一个FFI最佳实践来学习。

Read More


Rust项目如何使用Azure云的Pipelines服务

#azure


tweek-rust: Rust实现的Tween动画工具包

#tween #animation

Tween动画可以对对象进行缩小,放大,旋转,渐变,位移等操作,用于在游戏或应用中实现一些渐变类动画动作。最早是伴随Flash技术出现的。现在该技术已经用在了web前端和手机App中。

该库中包含了两个示例,可以看看。

tweek-rust


Atto: Rust实现的一个简单的函数式语言

#lang

atto


laminar: 用于多人游戏的半可靠UDP协议实现

#udp #game

该库在UDP的基础上实现了TCP的一些功能。它被用于Amethyst游戏引擎中。

laminar


MIRAI: 来自Facebook实验室的Rust MIR抽象解释器

#mir

MIRAI的目标是成为Rust的静态分析工具。

MIRAI


日报订阅地址:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页