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

in rust •  6 years ago 

前言:

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

2018-12-23


「付费阅读」系列


官方新闻

通告Rust 1.31.1发布

修复了一些问题。

Read More

「官方」Rust 2018中的过程宏

官方博客介绍了Rust 2018 edition中过程宏的支持,重点介绍了过程宏基于TokenStream的工作机制,值得一阅。

Read More

Withoutboats眼中的Rust 2019:组织债务

Read More

Rust最新动态摘要

#rust

审核中的PR:

已合并的PR:

「官方」Rust 2018 edition 工具集

#devtool

本文介绍了Rust 2018 edition包含的工具集

  • Rustfix
  • Clippy
  • Rustfmt
  • IDE support

未来:

  • 改进LLDB和GDB的Rust调试支持
  • 完善RLS
  • 让Cargo更强大
  • Rustdoc改进

Read More


社区新闻

LeetCode现在已支持Rust

中国版和美国版都支持了,另外了解到的消息是,目前是基于Rust stable 1.31版,而且还会持续跟进Rust Stable版本。在未来会逐渐加入常用的crate,这个看使用者反馈来持续改进。

刷Leetcode Rust代码的碰到问题可以加QQ群反馈。qq群号: 950323896,进群以后可以加微信群,直接向官方反馈问题。

Leetcode中国

nitric: Specs的继承者

nitric是Specs作者新写的库,那么他为什么在苦心研究两年Specs之后,要革自己的命呢?在本文中他阐述了如下理由:

  • 并非是对specs的重构,也不是和specs竞争,也不会对Specs有任何影响,Specs也不会被弃用
  • nitric是打算提供一个更通用的解决方案
  • Specs已经有了自己的生态,所以需要独立出另外一个库继续开发
  • nitric是一个通用的数据处理库,一旦完成这个库,specs将成为nitric的前端
  • nitric的愿景是提供一系列的crate,这些crate是解决数据处理问题的标准方案
  • 未来可以使用nitric的领域:游戏开发、游戏物理、模拟器、编译器、数据验证、图形用户界面等
  • nitric的哲学是:1. 只能以合理的组合方式解决单个问题。 2. 公开一个通用、可组合和强大的API
  • nitric会与其他数据结构兼容,比如ECS/CGS库等
  • 也可以使用nitric来作为ECS,比如通过nitric-entity库。文章里也介绍了几个计划中的其他nitric crate。
  • Amethyst将继续使用Sepcs,未来是否会迁移到nitric,需要由RFC来推动

大家也不要太亦可赛艇,他只是先分享了计划,还未动工。不过已经有了代码仓库:

Read More

「嵌入式Rust」Rust对Arduino支持进展调查

因为Arduino使用的是AVR微控制器,但Rust目前还未支持AVR。但Rust嵌入式开发组已经有计划支持AVR。

感兴趣的朋友可以关注此issues: AVR support

目前也有一个avr-project GitHub项目组独立fork了Rust,提供了对AVR的支持。在官方Rust未支持AVR之前,可以使用这个,看上去还非常活跃。

avr-rust

「访谈」Josh Triplett访谈

Josh Triplett是一个开源软件贡活跃献者,他最近正和另外一个匿名资助者,准备向非盈利性开源组织Conservancy捐赠9万美元,用于继续推动开源软件的发展。这是对他的采访。

采访中,他提到Rust是他今年在开源社区看到的最激动人心的项目。他说:Rust给了我对计算未来的巨大希望。

也许Conservancy在拿到这笔捐赠后,可能帮助Rust完成组织治理的工作。(猜想)

Read More

Warp 0.1.10发布

Wary是另一个Rust Web框架,由Hyper作者开发。 新版本的功能简要:

  • TLS支持
  • CORS
  • Websocket检测助手

依然计划和tower-web进行合并,但下一步主要是完善service trait。将来可以通过Service方便地添加tower式中间件。

(那官方Tide框架的中间件协议呢?也许tower式中间件协议在官方中间件协议稳定以后也会支持吧)

Read More

Tokio 2019展望

主要是两件事:

一、 Async/Await支持

Tokio预计在Rust语言async/await稳定之后,正式支持该语法。如果你想在nightly上面使用async/await,可以使用async-await-preview。

目前tokio是以实验性功能来探索async/await的支持,比如一些特定的API会添加_async后缀,一旦async/await稳定了,Tokio将立马采取重大的更新并去除这些后缀。默认情况下,比如,会将tokio::run_async改成tokio::run

那么futures-rs 0.1怎么办?然而并不能立马放弃对0.1的支持。

这是一个不断增长的生态系统,包括一些生产环境的应用,也使用了futures 0.1。Tokio会以向后兼容的方式来支持async/await,也就是说,同时支持async/await和futures 0.1。对于已经形成生态的系统而言,变革很困难,还需要和社区共同商讨过渡策略:关注此track issues

二、团队扩展

是时候扩展Tokio的开发和维护团队了,准备像Rust团队学习,分成多个工作组,不同的组负责Tokio的不同方面。当然这个过程还在讨论中。

同时也需要一些新手加入,帮助使用和发展Tokio。

Read More

「嵌入式Rust」实时消息框架RTFM发布0.4版

嵌入式工作组的老大japaric发布的库,用于构建并发的实时系统,貌似基于RTFM语言。

RTFM语言旨在促进并发编程或嵌入式实时软件的开发。

www.rtfm-lang.org

Read More

如何成为一个超级的Rust开发者

这是一个「真香」的故事。

作者在去年看到Rust语言的时候,心想:"呵呵,继续吹,继续炒。呵呵,我用C++照样可以完成同样的事,而且还拥有更多的控制权"。

然而,今天这位作者写下了这篇博文,他说:“我之前的想法真是大错特错,错到底了!,当我潜下心来研究Rust,我发现,它是一门经过深思熟虑的语言,它的工作方式有别于我所知道的一切。”

他变成了Rust传道者。

Read More

crates.io可视化报告

截止2018年11月,已经达到2w个crates,但很多crate版本发布都小于6次release版本,生态系统依然很年轻。另外一些crate有100多个发布版本,有很多crate都是零依赖,但有3000个crate都依赖serde,所以,serde当之无愧是最流行的crate。

img
img
img
img
img

Read More


学习资源

Rust Quiz解读已更新到Quiz 21

去专栏 Read More

「嵌入式Rust」Cortex-M3 入门指南(二):寄存器与 GPIO

Read More

Serverless HTTP

该文作者探索aws lambda平台的无服务器HTTP应用,并编写了一个crate,叫做lando,它以http crate为核心接口,以lambda为部署目标,来部署API网关。本文就是对lando的介绍。

「Rust扩展Python案例」快速JSON解析库

基于PyO3库

orjson

解析工具选择之书

有人写了一本书,罗列了现在的解析工具,比如nom、combine、pest等,提供了一些文档和示例,帮助你选择适合使用场景的解析工具。目测还在完善中。

Read More

「系列文章」Rust vs Swift

作者从2015年开始写这一系列博客,直到昨天才发布了一个整理页面。感兴趣可以看看。

Read More

rust-derivative: 提供了替代derive属性的宏

「Slides」魅力wasm-bindgen

Read More


项目

下沙:Rust+WASM+WebGL实现的游戏

新的MQTT异步客户端

基于tokio,目前正在召人审核代码

「嵌入式Rust」可用于串行热敏打印机的embedded-hal驱动

thermal_printer

encoding_rs: Web兼容字符编码库

这是WHATWG编码标准的高性能实现。被用于Firefox 56版本中,替代了uconv库。

用Rust编写的roguelike游戏发布了

基于wasm和Rust,可以在线玩,也可以下载到Windows、Mac和Linux平台。
在Reddit贴中,还记录了感人的开发故事。

「深度学习」运行时前端TVM支持(预发布)

TVM的Rust绑定。TVM介绍:

有了 TVM,业界与学界开发者们可以快速、轻松地在各个系统(包括手机、嵌入式设备与低功耗芯片)上部署深度学习应用程序,同时无须担心资源与速度的限制。「TVM 作为神经网络和硬件后端之间的共同层,消除了为每类设备或服务器优化各自基础架构的需要。」TVM 项目负责人陈天奇表示,「我们的框架允许开发人员快速、轻松地部署和优化大量硬件设备上的深度学习系统。」

tvm-rust

p2p: 支持自定义协议的多路p2p网络库

群友漂流的作品,据说是libp2p的轻量版本。

p2p

ferrugo: JVM的Rust实现

ferrugo


工具与库

使用dutree分析磁盘使用情况

该文是dutree的使用教程,dutree是Rust实现的磁盘分析工具。

cargo-expand:查看宏展开结果

serde作者实现的新包,包括声明宏和#[derive]过程宏。

$ cargo expand

是对rustc命令的包装:

$ cargo rustc --profile=check -- -Zunstable-options --pretty=expanded

cargo-expand

「小工具」验证代码中内存使用

QADAPT库可以验证代码中何时分配或丢弃内存。作者写了篇文章,以构建自定义内存分配器为例来讲解如何使用QADAPT库提供的debug_assert!验证代码中内存分配情况。

nymic: 一个可以打印类型名字的库

nymic

加速并校准Rust的浮点数解析

作者实现了一个库:rust-lexical,比Rust内置的浮点数解析器快4000倍,并且更加正确。而且支持no_std。

Read More

structview-rs: 用于将二进制数据转换为更高级的数据结构

structview提供了更安全的API来转换

structview-rs

juniper-from-schema 发布

作者用Juniper的过程中,发现需要Juniper缺少一个关键的东西:可以和客户端共享实际的Graphql架构的文件。虽然可以手工编写,但代码和scheme文件不会实时同步。作者用过程宏实现了可以自动生成scheme的库。

juniper-from-schema

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @blackanger! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published a post every day of the week

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:

Christmas Challenge - Send a gift to to your friends

Support SteemitBoard's project! Vote for its witness and get one more award!