< 返回版块

whfuyn 发表于 2021-05-11 22:29

Tags:日报

Rust 1.52.1发布。

这个版本是1.52.0中出现的编译错误的一个临时解决方案。 这些编译错误的典型表现是报错信息中包含 found unstable fingerprints

thread 'rustc' panicked at 'assertion failed: `(left == right)`
  left: `Some(Fingerprint(4565771098143344972, 7869445775526300234))`,
  right: `Some(Fingerprint(14934403843752251060, 623484215826468126))`: found unstable fingerprints for <massive text describing rustc internals elided>

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

在1.52.0中,编译器内部新增了一个验证机制, 这个验证机制检测出了一些从增量编译被启用后(Rust 1.24)就存在的bug。 这些bug在增量编译下可能会导致最终生成的二进制产物出错,理论上程序可能出现任意行为。

所幸在release版本的构建中增量编译是默认关闭的,所以对生产环境影响应该不会太大(只有那些开启了增量编译的用户)。

因为这些bug从很早以前就一直存在,所以将版本退回并不能解决问题。

这个版本并没有解决这个问题,只是:

  1. 默认禁用掉了增量编译,可以通过环境变量RUSTC_FORCE_INCREMENTAL=1强制启用。
  2. 改进了验证机制的报错,告诉用户如何绕过这个问题。

目前编译器团队正在积极解决这些bug,根据解决的情况可能会发布1.52.2将这些修复带到stable channel。

阅读原文:https://blog.rust-lang.org/2021/05/10/Rust-1.52.1.html

Ferris,3D打印版!

国外网友Nell Shamrell-Harrington的3D打印版Ferris,可爱!

阅读原文:https://twitter.com/nellshamrell/status/1391931296822087681

使用arena allocators为算法加速

阅读原文:https://mnwa.medium.com/speeding-up-algorithms-with-arena-allocators-d72d06f23607

过程宏中的错误处理

这篇是作者关于过程宏的使用系列文章的第三篇,教你如何使用syn::Error来生成能让编译器显示定位在宏的输入中的错误,而不是一个直接指向宏调用的错误。

阅读原文:https://blog.turbo.fish/proc-macro-error-handling/

在Windows上交叉编译Leaf

一位网友 @perqin 为了解决自己的需求,选择了基于 Leaf(一款梯子)进行自己的GUI包装,以下是他尝试在 Windows 下面交叉编译出 Android 的 leaf 时遇到的若干坑:

bindgen编译时libclang缺失
Leaf在Windows下不构建lwip
stopLeaf崩溃

原文连接:https://perqin.github.io/2021/05/04/build-leaf-android-on-windows/#%E8%A7%A3%E5%86%B3stopLeaf%E5%B4%A9%E6%BA%83


From 日报小组 huangjj27, 知世

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页