#[target_feature] 属性中的不稳定性和意外特性

主要观点:

  • 研究#[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 及修复。
阅读 10
0 条评论