版本控制
Ruff 使用自定义的版本控制方案,其中**次要**版本号用于表示重大更改,**补丁**版本号用于表示错误修复。 Ruff 尚未具有稳定的 API;一旦 Ruff 的 API 稳定,将使用**主要**版本号和语义版本控制。
版本变更
在以下情况下,**次要**版本将会增加
- 已弃用的选项或功能被移除
- 配置以向后不兼容的方式更改
- 这可能在次要版本更改中发生,直到
1.0.0
,但是,通常应该避免这种情况。
- 这可能在次要版本更改中发生,直到
- 对新文件类型的支持升级为稳定
- 对生命周期结束的 Python 版本的支持被删除
- Linter
- 规则升级为稳定
- 稳定规则的行为已更改
- 稳定规则的范围显着扩大
- 规则的意图发生变化
- 不包括遵循规则原始意图的错误修复
- 稳定规则已添加到默认设置
- 稳定规则从默认设置中删除
- 规则的安全修复已升级为稳定
- 格式化程序
- 稳定的样式已更改
- 语言服务器
- 现有功能已删除
- 已弃用的服务器设置已删除
在以下情况下,**补丁**版本将会增加
- 错误已修复,包括修复错误的行为更改
- 以向后兼容的方式添加了新的配置选项(没有格式更改或新的 lint 错误)
- 添加了对新 Python 版本的支持
- 在预览中添加了对新文件类型的支持
- 某个选项或功能已弃用
- Linter
- 添加了规则的不安全修复
- 在预览中添加了规则的安全修复
- 规则的范围在预览中扩大
- 修复的适用性已降低
- 在预览中添加了规则
- 预览规则的行为已更改
- 格式化程序
- 稳定的样式已更改,以防止无效语法、程序语义更改或注释删除
- 预览样式已更改
- 语言服务器
- 添加了对新功能的支持
- 添加了新的服务器设置
- 服务器设置已弃用
最低支持的 Rust 版本
编译 Ruff 所需的最低支持的 Rust 版本在 Cargo.toml
的 [workspace.package]
部分的 rust-version
键中列出。它可能会在任何版本(次要版本或补丁版本)中更改。它永远不会比 N-2 Rust 版本新,其中 N 是最新的稳定版本。例如,如果最新的稳定 Rust 版本是 1.85,则 Ruff 的最低支持的 Rust 版本最多为 1.83。
这仅与从源代码构建 Ruff 的用户有关。 从 Python 包索引安装 Ruff 通常会安装预构建的二进制文件,而无需 Rust 编译。
预览模式
预览模式可用于启用新的、不稳定的规则和功能,例如,支持新的文件类型。
预览模式旨在帮助我们收集社区反馈,并确信更改是净收益。
预览模式不用于限制对未完成的工作或我们可能删除的功能的访问。 但是,**我们保留对该模式控制的任何行为进行更改的权利**,包括删除预览功能或规则。
规则稳定化
在修改或添加规则时,我们使用以下准则
- 新规则应始终在预览模式下添加
- 新规则将在预览模式下保留至少一个次要版本,然后才能升级为稳定
- 如果在补丁版本中添加,即
0.6.1
,则规则在0.8.0
之前没有资格获得稳定性
- 如果在补丁版本中添加,即
- 稳定规则的行为在补丁版本中不会发生重大变化
- 规则升级为稳定可能会延迟,以便将它们“批量”到一个次要版本中
- 并非预览中的所有规则都需要在给定的次要版本中升级
修复稳定化
修复具有三个适用性级别
- **显示**: 永远不会应用,仅显示。
- **不安全**: 可以通过显式选择加入来应用。
- **安全**: 可以自动应用。
规则的修复可能会以较低的适用性引入,然后升级为更高的适用性。 降低修复的适用性不是重大更改。 启用预览模式后,给定修复的适用性可能会发生变化。
Visual Studio Code 扩展
Visual Studio Code 不支持扩展的预发布标记。 因此,Ruff 使用以下方案来区分稳定版本和预览版本
稳定版本在次要版本组件中使用偶数: 2024.30.0
, 2024.32.0
, 2024.34.0
, … 预览版本在次要版本组件中使用奇数: 2024.31.0
, 2024.33.0
, 2024.35.0
, …