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从很早以前就一直存在,所以将版本退回并不能解决问题。
这个版本并没有解决这个问题,只是:
- 默认禁用掉了增量编译,可以通过环境变量
RUSTC_FORCE_INCREMENTAL=1
强制启用。 - 改进了验证机制的报错,告诉用户如何绕过这个问题。
目前编译器团队正在积极解决这些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崩溃
From 日报小组 huangjj27, 知世
社区学习交流平台订阅:
评论区
写评论还没有评论