RuffЩо нового в Ruff 0.17
Реліз приніс підписання виконуваних файлів для macOS і Windows, оновлення стандартних версій Python, вилучення підтримки ruff-lsp та низку стабілізованих правил.
Реліз від 9 жовтня 2026 · оновлено 8 листопада 2026
Головне
- Бінарні файли для macOS і Windows тепер мають цифровий підпис
- Версія Python за замовчуванням змінена на 3.11, перевірка синтаксису — на 3.15
- Вилучено застарілий мовний сервер ruff-lsp на користь нативного сервера
- Стабілізовано правила TID254, TID255 та RUF071
- CLI показує небезпечні виправлення за замовчуванням у форматі full
Коротко
Ruff 0.17 додає цифровий підпис для збірок під macOS і Windows та переводить стандартну версію Python на 3.11 (і 3.15 для синтаксичних перевірок без явної конфігурації). Крім того, реліз остаточно вилучає застарілий ruff-lsp, стабілізує кілька правил і поведінку розрахунку довжини рядка, а також оптимізує швидкодію парсингу та форматування.
Нові можливості
Підписання виконуваних файлів
Виконувані файли в архівах релізів для macOS і Windows, а також у wheel-пакетах ruff, тепер мають цифровий підпис коду:
- Бінарні файли для macOS підписані сертифікатом Apple Developer ID і нотаріально завірені Apple.
- Бінарні файли для Windows містять підписи Authenticode із міткою часу від Azure Artifact Signing.
Це забезпечує перевірку видавця й цілісності файлів, дозволяє налаштовувати білі списки на основі видавця та має зменшити кількість попереджень безпеки й хибних спрацьовувань антивірусів.
Стабілізація правил та форматування
Зі статусу preview перейшли у стабільний стан наступні правила:
lazy-import-mismatch(TID254)lazy-import-immediately-resolved(TID255)os-path-commonprefix(RUF071)
Також стабілізовано поведінку: форматер, правила unsorted-imports (I001), line-too-long (E501) та doc-line-too-long (W505) тепер послідовно ігнорують кінцеві pragma-коментарі під час підрахунку довжини рядка. Це усунуло помилки їхньої взаємодії, але може призвести до переформатування наявних імпортів.
Нові конфігурації та правила в preview
- Для правила
magic-value-comparison(PLR2004) додано конфігурований allowlist. - Додано нові preview-правила:
unnecessary-regular-expression-compileу групіcomplexity,shared-clock-mockуsuspiciousтаtarfile-ignore-zeros-trueуsecurity. - Правило
pyupgrade(UP035) тепер пропонуєtyping.TypeFormна Python 3.15.
Ламаючі зміни
- Оновлення версій Python за замовчуванням: якщо версія не задана через
target-versionабоrequires-python, стандартною версією тепер є Python 3.11 (раніше 3.10). Перевірка синтаксичних помилок без налаштованої версії тепер орієнтується на Python 3.15 замість 3.14. - Зміни у стандартному наборі правил: правила
DTZ001,DTZ005,DTZ006,DTZ007,DTZ011,DTZ012таDTZ901ізflake8-datetimezбільше не ввімкнені за замовчуванням. Правилоundefined-local-with-nested-import-star-usage(F406), що відповідає синтаксичній помилці, навпаки, увімкнено за замовчуванням. - Вилучення підтримки
ruff-lsp: припинено підтримку застарілого сервераruff-lsp. Розширення Ruff для VS Code тепер завжди використовує нативний мовний сервер, а параметрruff.nativeServerоголошено застарілим та ігнорується. - Збірки conda-forge без залежності від Python: пакунок більше не залежить від Python, отримав підтримку платформ
linux-riscv64,win-arm64,linux-ppc64leта шел-автодоповнення. Командиpython -m ruffтаimport ruffу цьому середовищі більше не працюють — слід запускатиruffнапряму черезPATH(інсталяцій із PyPI та автономного інсталятора це не стосується). - Відображення небезпечних виправлень у CLI: стандартний формат виводу
fullтепер показує небезпечні виправлення та пропозиції, що вимагають ручної перевірки, незалежно від налаштуванняunsafe-fixes. Для їх фактичного застосування все одно потрібне явне підтвердження. - Unicode 17 та змінні-заглушки: виконано оновлення до Unicode 17 для нормалізації ідентифікаторів та іменованих escape-послідовностей (
"\N{...}"). Стандартнийlint.dummy-variable-rgxтепер розпізнає імена з префіксом підкреслення в Unicode (наприклад,_次) як фіктивні змінні. - Формат JUnit: оновлення
quick-junitдо 0.8.0 змінило атрибутdisabledнаskippedу<testsuite>та додало атрибутskippedдо кореневого елемента<testsuites>. - Імпорти: до
flake8-import-conventions(ICN001) доданоdatetime as dtяк стандартний псевдонім.
Виправлення та покращення
- Швидкодія: оптимізовано лексичний аналіз ідентифікаторів та ключових слів (зокрема спеціалізація для ASCII-символів), буферизовано stdout у
ruff format, використано фільтр Блума для пошуку коментарів форматера та оптимізовано роботу зі зрізами вихідного коду. - Сумісність синтаксису: дозволено виклик
raiseбез аргументів перед крапкою з комою та ідентифікаториmatchпісля крапки з комою, а також усунено збої рендерера діагностики при наявності специфікатора BOM. - Безпека автоматичних виправлень: виправлення для правил
PLR5501,PLW0120,UP035іF541тепер позначаються як небезпечні, якщо вони видаляють коментарі або створюють docstring. - Змінні типів: усунуто синтаксичні помилки при оновленні змінних типів із зірочковими обмеженнями (
UP040,UP046,UP047,RUF053). - CLI: діагностика тепер враховує пріоритет змінної оточення
NO_COLORта коректно обробляєCLICOLOR=0.
Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо