< 返回版块

ChaosBot 发表于 2018-10-05 11:29

Tags:rustnews

nom作者:不,Pest没有nom快

作者亲自做了基准测试:

  • nom: - canada.json: 60,734,229 ns/iter (+/- 17,775,618) - data.json: 23,937 ns/iter (+/- 9,992)
  • pest:
    • canada.json: 35,041,472 ns/iter (+/- 5,454,302)
    • data.json: 14,665 ns/iter (+/- 2,041)

以上是没有将json转换为Rust的类型,当然Pest比nom快。但是如果用nom4然而不转换为Rust类型会是什么结果呢?

  • pest:
    • canada.json: 35,041,472 ns/iter (+/- 5,454,302)
    • data.json: 14,665 ns/iter (+/- 2,041)
  • nom_spans (returning slices instead of converting to Rust types):
    • canada.json: 20,623,381 ns/iter (+/- 1,952,297)
    • data.json: 10,757 ns/iter (+/- 1,462)

这个才是公平的测试,因为Pest并不会转换为Rust类型。显然这种情况下nom更快。

(火药味十足啊)

原文


crates.io上流行的crate的作者都是谁 ?

作者写了简单的代码对最近截至2018年10月3日有超过10万次下载的crate进行统计,得出以下结果:

authors  count
----------------------------
alexcrichton  61 packages
carllerche  20 packages
7 authors  16-8 packages
8 authors  5-3 packages
14 authors  2 packages
233 authors  1 package

看来Alex是Rust社区的顶梁柱啊

原文


SM: 静态状态机

特点:

  • 100%静态,避免任何运行时开销
  • 以宏声明来构建状态机
  • 纯状态、事件和转换

作者学习Rust的一个项目,值得学习。比如里面使用了最新的syn 0.15,API有所改变,正好看看最新的用法

sm


Red Hat 静态存储项目 Stratis 1.0 发布

前两天刚介绍过,是一个易于使用的Linux本地存储管理工具。

在他们决定放弃Btrfs支持之后,Stratis已经开发了两年,用于提供下一代Linux存储。 Stratis提供ZFS和Btrfs之类的功能和许多其他新功能,而上周标志着它的第一个稳定版本。

很快就可以向Fedora用户提供Stratis 1.0用于评估,并且它很快就会出现在其他发行版中。 Stratis组件依赖于Linux 4.14 +,Python 3和Rust 1.25+。 但值得一提的是,Stratis D-Bus API还不稳定。

stratisd

原文


WebAssembly和动态内存

本文介绍了C/C++/Rust下如何在面向WebAssembly体系下进行动态内存分配,并分别比较了它们的工具链。

结论是:Rust的编译器和动态内存分配器wee_alloc的组合是明显的赢家,其生成的WebAssmebly代码非常精简,可以用在任何WebAssembly环境中。主要是因为Rust工具链没有其他的依赖。像Clang这种工具链依赖于emscripten,就导致无法在通用的WebAssembly环境中使用。

原文


EasyReader:一个专用于读取大型文件的库

作者在两个项目中使用它,读取140GB左右的文件

easy_reader


Tokio文档计划

Tokio作者准备重整文档,现在需要社区帮助

  1. 阅读现有文档,反馈令人困惑的部分或留下未解决的问题。
  2. doc-push存储库上打开一个问题以报告混淆。
  3. 解决问题。
  4. 重复以上步骤。

原文


Rust文字冒险游戏 2

原文


「Solana 、Zcash 和Parity 三家会面讨论为什么Rust适合区块链开发 」连载3

Jack: 实际上Parity里并没有那么多unsafe代码。事实上,在我加入之前,到处都是unsafe,你知道,我们必须要压榨出最大的性能。因为C++开发者喜欢这种「安慰剂」般的优化。

Sean: “我不需要对它进行运行时检查”

Jack: 没错。

Sean: “我不想恐慌”

Jack: 恐慌或缓慢,你都不想要。我的意思是,未定义行为是非常不可琢磨。但是在某一个同事加入之后,他开始删除这些unsafe代码,从那时起,我们就开始越来越多地删除unsafe代码。现在就变得安全多了。 当然也有一些unsafe hack,比如底层有些内容是需要性能,实际上现在无法对其优化。比如我们有个hash算法,必须将两个数组连接在一起。我们将两个数组放到一个结构里,然后将其替换为C,然后在C中将两个数组连接,再转回Rust的一个数组。因为这样,明显更快。但这样的代码也没有太多。

Anatoly: 没错,但是,谁能在一天内完成所有代码呢?( 表达罗马并非一天建成的意思)

Jack: 我希望是一天。

Anatoly: 我的下一个问题是和安全相关的。比如,C和Haskell。我发现现代类型系统实际上也没有增加太多的东西,就像是多了很多简单标签的C。在使用这些高级抽象类型的时候,怎么样证明这些代码的意义?比如这些类型的抽象目的是为了给你提供一些保证和确定性,你从哪里看到这些效果?

Greg: 我认为它们会更加方便你编写代码。比如刚开始需求简单的时候,并不知道要用到哪些类型,那么就可以编写一个泛型的数组,这可以帮助我们跳出困境。但是,随着需求越来越多,我只需要简单的包装类型,就可以改造泛型数组。再加上类型检查,我认为这是一个有用的保障。

Jack:我认为你这是一种类型驱动开发的做法。

Greg:是的。

「待续」


评论区

写评论
作者 ChaosBot 2018-10-06 11:35

排第二

@Pslydhh 那个叫carllerche的也贡献很多

Vitaly 2018-10-05 19:24

辛苦大佬整理了,手动点赞!

Pslydhh 2018-10-05 13:59

那个叫carllerche的也贡献很多

1 共 3 条评论, 1 页