主要观点:
- 研究
#[target_feature]属性的 SemVer 危害,发现意外的不稳定性,在 Rust 中发现“意外特性”,找到rustdoc中的 bug,创建进化 Rust 语言的 RFC,添加十几个新的 SemVer 检查。 #[target_feature]可让函数依赖平台特定架构特征,用于高性能应用,在代码生成时编译器会使用新的向量寄存器。- 从安全函数、不安全函数、特质函数及其实现等方面探讨
#[target_feature]的 SemVer 影响,包括新特征添加、特征列表更改等情况。 - 移除
#[target_feature]从函数会放宽 API,从特质函数移除可能导致下游实现不满足特质 API 而产生未定义行为。 cargo-semver-checks的新 lint 可检测#[target_feature]的破坏变化,包括安全和不安全函数、特质函数等方面,还发现rustdoc中的两个 bug 并修复。
关键信息:
- Rust 1.86 引入新功能
#[target_feature]可用于安全函数。 - 不同类型函数(安全、不安全、特质)在
#[target_feature]方面有不同的 SemVer 规则和影响。 - 移除特质函数的
#[target_feature]可能导致下游代码出现未定义行为。 cargo-semver-checks的新 lint 有助于避免#[target_feature]引起的 SemVer 破坏。- 发现并修复
rustdoc中关于#[target_feature]的两个 bug。
重要细节:
#[target_feature]在不同平台和硬件能力下的作用及示例。- 安全函数中新特征添加是重大破坏变化,不安全函数添加特征一般是重大破坏变化,除某些特殊情况。
- 特质函数在
#[target_feature]方面的限制和规则,以及非密封特质的实现影响。 cargo-semver-checks默认检查 Rust 工具链的目标三元组,可通过--target <BUILD_TARGET>检查不同目标三元组。- 新的
unsafe属性#[unsafe(target_feature(force = "x"))]用于解决特定的安全问题。 cargo-semver-checks的 12 个新 lint 涵盖各种#[target_feature]的破坏情况,以及 rustdoc 中关于#[target_feature]的 bug 及修复。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。