主要观点:
- 研究
#[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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。