ChaosBot avatar

【Rust日报】 2019-04-11

blackanger

Published: 11 Apr 2019 › Updated: 11 Apr 2019【Rust日报】 2019-04-11

【Rust日报】 2019-04-11

一封写给Rust宏的情书

#macro

本文不是宏教程,作者写这篇文章的目的就是为了让还没有使用过Rust宏的人,早点尝试一下宏。(真香预警)

作者比较了Rust和其他语言(C/C++/Java)中的元编程,摘要:

  • C宏和Cpp模板元编程。很容易引入难以发现的错误,并且会扰乱编译时间,在构建中引入不必要的复杂性。你是否见过错误使用模板而引发的编译器错误呢?
  • Java注解。Java的注解功能很强大,可以在编译时使用,也可以在运行时执行,既可以用于代码生成,又可以拿来反射。Java中最受欢迎的Spring框架大量使用Java注解。但正因为如此,Java的注解功能导致你写的代码可能超越语言自身的语义,而更像是另外一种语言。而且通过注解实现的代码,调试起来也非常痛苦。

那么Rust的宏是不是完全避免了上面的问题呢?并不是百分百的避免,但是Rust已经努力避免了常见的问题,并且可以发挥出Rust语言自身的优势。作者介绍了声明宏和过程宏的一些优势,并且在文章底部列出了一些学习宏的资料。

Read More


使用Actix Web进行人脸检测

#actix-web #face_detection

这是上次日报里报道过「使用tensorflow与rust人脸检测」文章作者的续篇。在这篇内容里,作者介绍了如何将上一篇文章的成果通过HTTP API来提供。并且作者使用了actix-web = "1.0.0-alpha.4"版本。在mtcnn库的actix-web分支里可以看到具体实现。

这两篇文章是实践性很强的文章,建议大家跟着玩玩。


nom-peg: 基于nom实现的PEG解析器生成器工具

#nom #peg #pest

和pest类似,但它是基于nom实现的。

nom-peg


「视频」深入WASM和WASI

#youtube

Read More


Rust实现的IRC机器人

#irc #bot

url-bot-rs


使用Rust开发跨平台组件的新策略

#FFI #cross_platform

Mozilla工程师最新分享,将Rust实现的核心业务逻辑封装到一个中间层,然后通过新的共享策略,达到Web、iOS、Android三端共享。实施这个策略遇到的一个问题就是如何安全地使用FFI,并且还能与Rust的所有权良好地配合。因此该团队写了一个ffi-support库来帮助达成此目的。

该库最初的实现方案是通过序列化为JSON字符串在FFI中传递。但是缺点是,JSON序列化和反序列化会很慢。最重要的问题是,Java中字符串编码是UTF-16-ish。在Kotlin中,必须反序列化每个数据结构,这个过程会可能会发生异常。最严重的问题是,没有返回JSON字符串,而是某个C指针,忘记更新Kotlin中或者ObjectiveC中的数据结构,导致严重的内存问题。

值得庆幸的是,团队发现了使用Protocol BufferV2替代JSON,可以解决上面的问题。在Rust中直接使用prost库,可以通过Rust的宏生成非常干净的结构。而且,PB比JSON的性能高。

屏幕快照 2019-04-11 下午2.16.26.png


「经验之谈」从Nightly到Stable Rust迁移之旅

#nightly_to_stable

本文是Seq团队写的。Seq是一个微服务诊断SaaS产品,它们的存储引擎是使用Rust实现的(应该未开源)。从Seq 5.1开始,迁移到了Stable Rust。整个迁移过程说是毫无痛苦。感兴趣的可以看看。

(开发Rust产品需要依赖的features列表越来越少了,这是好事)

Read More


From 日报小组 @Chaos

日报订阅地址:

Leave 【Rust日报】 2019-04-11 to:

Written by

Read more #rust posts


Best Posts From ChaosBot

We have not curated any of blackanger's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From ChaosBot