Gutenberg改名为Zola并发布0.5版
Rust实现的静态网站生成工具Gutenberg改成了Zola(之前的名字确实太长)。改名的原因是和Wrodpress的某个工具重名了。新名字Zola来源于 Emile Zola • 【埃米尔·左拉(法国作家)。
Zola名言:「生活的道路一旦选定了,就要勇敢的走下去,绝不走回头路。」
「油管」Rust中的Futures和async/await
该视频长约4小时,详细介绍了Future和async/await,包括tokio等内容。
lru-cache-macro: 提供自动缓存函数调用结果的过程宏
Rust实现可生成3D网格的库
灵感来自于structure Synth
[使用指南](Synthesizing Structures with immense)
「系列文章」Pest vs Nom
该作者正在编写glsl方面的库,他之前使用了nom,现在又引入了pest。然后通过写这一系列文章,来比较这两者在实践应用中的区别和定位。
Pest:
Pest在编译时使用一个文件,其中包含定义要解析的输入格式的PEG语法。PEG, 表示解析表达式语法,是一种形式语言,使你能够用规则描述自己的语言。这些规则是用一些属于语言理论的基本块编写的。如果你曾经听说过Stephen Kleene及其着名的Kleene star,你就会对PEG感到熟悉。
作者喜欢PEG的是,通过一组非常有限的结构,可以描述很多决定论语言。在GLSL450的情况下 - 这是glsl crate可以解析的语言 - 它是一种无上下文和确定性的语言。因此,整个语言可以根据(递归)PEG规则来定义。
Pest不是解析器,它应该是一种词法分析器。AST解析还需要自己来弄。也有人推荐用pest-ast来处理AST。
Nom:
nom是一个解析器组合器。这意味着您可以通过组合小解析器来构建更大的解析器。关于nom的正确术语是它是一个无扫描器解析器:它不需要在解析之前生成令牌,并且更喜欢同时执行两者。 nom解析器通常使用像preceded!,delimited!,take_until!,tag!,value!和do_parse!等宏,允许匹配(lexing)切片的字节/字符,并使用你选择的类型将它们解析为实际值。
然而,Pest依赖于PEG文件,表示要标记的语言的正式语法。该词法分析器阶段发生并且必须能够在返回之前对整个输入进行标记。我不确定我什么时候说这个(但我很有说服力就是这种情况):Pest不支持流输入,因为它需要吃特殊规则EOI(End Of Input ), 或者在返回之前吃规则错误(使用先前的规则成功或向上传播错误)。但是,nom可以用来吃掉字节流。
Cranelift: 一个rustc的新编译后端
#cranelift #llvm #compiler_backend
当前还属于实验阶段。
「演讲」平台价值观、Rust以及对系统软件的启示
这是Bryan Cantrill(云计算平台joyent的CTO )在最近某次Scala大会上的分享。
选择一门编程语言,一个平台,一个操作系统,是一个重大且最重要的决定,具有持久的影响。因为你不仅仅是选择一个工具,更多的是选择它所代表的意义。
比如,C的平台价值观:
- Interoperability「互操性」
- Performance「性能」
- Portability「可移植性」
- Simplicity「简单性」
C++的平台价值观:
- Expressiveness 「表达能力」
- Performance 「性能」
- Portability 「可移植性」
Scala的平台价值观:
- Composability「可组合性」
- Expressiveness「表达能力」
- Interoperability「互操性」
- Integrity「完整性」
- Robustness「健壮性」
近十年来,系统软件编程语言所拥有的价值观和软件本身必须保持的价值观之间存在巨大差异。现在的系统软件已经能够提供相对安全和可靠的系统,但这一切是因为编程语言吗?不是!我们是否可以做的更好?
来看看Rust吧!
Rust的平台价值观:
- Composability 「可组合性」
- Expressiveness 「表达能力」
- Extensibility 「可扩展性」
- Interoperability 「互操性」
- Integrity 「完整性」
- Performance 「性能」
- Rigor 「严谨性」
- Robustness 「健壮性」
- Safety 「安全性」
- Security 「安全保障」
在此演讲中,作者还提供了三种使用Rust进行混合系统开发的方法:
- Rust子系统。不要用Rust重写旧系统,Rust适合新的开发。这方面在FreeBSD里有一个示例应用。
- Rust组件系统。传统的系统软件应用很广,而且都以组件方式发布,这里面有很多组件有问题,这正是Rust的应用之地。
- Rust固件。操作系统之下,硬件之上的固件。可能更适合Rust。
Rust告诉我们:我们可以拥有更美好的东西。
「教程」使用Rust构建你自己的Shell
每日新闻订阅地址:
欢迎通过GitHub issues投稿。