< 返回版块

ChaosBot 发表于 2018-10-04 12:52

Tags:rustnews

「吐槽」小心Packt发布的书籍:低质量的内容,非常明显未经审查

该贴作者买了一本《Hands-on Concurrency with Rust》,对其很不满,发了一个吐槽贴,详细看内容和讨论吧。

原文


Pest 解析器 2.0发布

提升了性能,引入了更多的wasm

Pest是一个Rust实现的通用解析器,类似于正则表达式,但是它提供了解析复杂语言的增强表达。

性能测试以解析json为例,要好过nom

官网

pest


完全使用Rust编写Web应用的经验和教训

此文是作者对Webapp.rs项目过去四个月的总结,结论就是,该项目的状态可以为想使用Rust进行全栈Web开发的用户提供了一个良好的开端。

原文

webapp.rs


介绍Ruukh框架

Ruukh是一个前端Web框架,受到VueJS和ReactJS的启发。

看起来不错

原文


Twiggy 0.3发布

twiggy是.wasm二进制文件的代码大小分析器

cargo install -f twiggy

原文


subtle-encoding :用于 Base64 和 hexadecimal 解码和编码的库

号称 Constant Time Encoding,是一种timing-safe的方式,可以抵御某种相关攻击( timing attacks)。

原文


reFORM:一个符号操纵工具包

旨在处理具有数十亿个术语的表达式,占用数TB的磁盘空间。它是Form的精神继承者,它广泛用于理论粒子物理学。 reFORM目前处于早期开发阶段,但很多功能已经存在。

FORM是一个符号操纵系统(C/C++实现)。 它从文件中读取符号表达式,并对它们执行符号/代数转换。 答案以文本数学表示形式返回。 作为其标志性功能,FORM中考虑的表达式的大小仅受可用磁盘空间的限制,而不受可用RAM的限制。FORM的原作者是荷兰亚原子物理研究所NIKHEF的Jos Vermaseren。

不错,Rust可以应用于理论物理研究了

原文


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

Jack: 我基本上也认为那是我喜欢的Rust概念。因为即便是Haskell,它具有惊人的抽象能力,也不得不分离安全和不安全的东西。在函数名称上加unsafe,比如“unsafe_perform_io”,这有点像是「在我的脑子里创造了一个鼻子恶魔(Nasal demons,未定义行为的幽默同义词)」。

「鼻子恶魔一词的来源考证:在Usenet组comp.std.c上识别C编译器遇到未定义构造时的任何意外行为的简写。 在1992年初关于该组的讨论中,经常评论“当编译器遇到给定的未定义构造时,让恶魔飞出你的鼻子是合法的”(暗示编译器可以选择任意奇怪的方式来 在不违反ANSI C标准的情况下解释代码。 其他人后来提到了“鼻子恶魔”,很快就成立了。 」

Greg:确实如此,那是Prelude中的函数,所以你几乎无法避免,甚至是一个一无所知的Haskell新手。如果你尝试读取文件,那么意味着你就会做一个不安全的操作,几年之后肯定会咬你一口。

Anatoly:是的Greg和我一起做过一个Haskell项目。

Jack:我认为,Haskell有很多好的东西,但也存在很多搬起石头砸自己的脚的东西。现在有很多语言都在尝试寻找更好的方法来避免自讨苦吃。Rust就是其中之一。不要乱用其他语言,不要把它变成一个崇拜的东西。只有Rust,Rust是唯一的好语言。 (没看原视频,估计这段是在调侃,其他人也在附和:yeah 、yeah…)

Anatoly: 你们写过一篇博客叫「why Rust」?

Sean & Jack: 是的,没错。

Greg:是的。

Jack: 是Greg写的?我还以为是Dmitri。

Anatoly: 所以,现在Rust改进了很多编程人体工程学,你认为它会做的更好吗?你现在还有机会嘲讽Rust。

Jack: 有一点得提。比如,你没有理由说Rust不支持在栈上做事,但是当前,你还必须得在堆上进行操作。比如我们做WebAssembly相关工作的时候,就必须在运行时处理一些东西。比如我有很多静态字符串,想要在栈上将它们串成一个长的静态字符串,这就无法做到,只能在堆上。因为,Rust应该能做到支持将静态的字符串在编译期创建关联组合为长的字符串,而不是在运行时。所以现在必须有一个分配器,最好在编译期就执行该操作。并且就安全性而言,Rust没有任何理由做不到这一点。 当然,另一个问题是不能在trait中定义一个可以返回trait的函数(「trait in trait」),这就为Rust损失了一个利好。

Anatoly: 就像Haskell里的存在类型?

Jack:是的。

Greg:trait里的存在类型?意味着trait能实现可以返回不同类型的方法?

(此处口齿不清,记录的也咋地,大概猜测说的是Rust不能在trait中定义一个可以返回trait的函数)

Jack: 心智模型大概是,你应该有一个关联类型,并且该关联类型不同的实现。

Greg:所以你不得不指定一个trait?

Jack:没错。所以有两种不同的设计。一种,你明确的关联类型,然后就输入 『等于某个trait』(type = trait),另一种就是隐式的,自动为你创建一个相关类型。但无论哪种方式,都是属于心智模型。你会经常碰到这种情况,Rust中的大部分方法都是trait方法。

Sean:是的。

Jack:所以,你不能返回一个「trait in trait」,这实际上是一个非常普遍的问题。如果你想在栈上做一些事情就会碰到这个问题。

Sean:我同意这两点。就语言特性而言,我们真的碰到了从没遇到过的波折。碰巧这两个特性也正在开发中。

Grag:是的,Amen。Rust开发者一定会爱你们,「他在抱怨一个月前就发布的东西」。 (大笑)

(省略 一段和听众探讨的环节)

Sean:我有点想知道,Parity有多少Unsafe代码?

「待续」


评论区

写评论
作者 ChaosBot 2018-10-04 22:35

哈哈

@Jonir Rings 《Hands-on Concurrency with Rust》,这不正是我买的那本么……

Jonir Rings 2018-10-04 13:50

《Hands-on Concurrency with Rust》,这不正是我买的那本么……

1 共 2 条评论, 1 页