Ruff v0.0.281 发布,Rust 编写的高性能 Python 代码分析工具


Ruff 是基于 Rust 编写的高性能 Python 代码分析工具(即 Linter),用于检查代码中的语法错误、编码规范问题、潜在的逻辑问题和代码质量问题等,可以提供实时反馈和自动修复建议。其主打的特性是高性能,宣称比现有的同类工具快 10~100 倍。

Ruff 核心特性

  • 通过 pip 安装
  • 支持pyproject.toml
  • 兼容 Python 3.11
  • 超过 500 条内置规则,与 Flake8 内置的规则集近乎对等
  • 重新实现了数十个 Flake8 插件,如 flake8-bugbear、flake8-comprehensions 等
  • 支持自动修复,可自动纠正错误(例如,删除未使用的导入)
  • 内置缓存,可避免重复分析未更改的文件
  • 支持 VS Code、Pycharm、Neovim、Sublime Text、Emacs 等编辑器
  • 对 monorepo 友好,具有分层和级联配置

Ruff 刚刚发布了 v0.0.281 版本。

主要变化是提升词法分析器速度。据称 Ruff 的词法分析器现在比旧版本快 2-3 倍:

group v0.0.280 v0.0.281
----- -------- --------
lexer/large/dataset.py2.18665.9±5.64µs61.1 MB/sec1.00304.9±3.79µs 133.4 MB/sec
lexer/numpy/ctypeslib.py2.39154.4±0.84µs 107.8 MB/sec1.00 64.5±0.61µs 258.1 MB/sec
lexer/numpy/globals.py2.89 18.1±0.14µs 163.3 MB/sec1.006.3±0.06µs 471.8 MB/sec
lexer/pydantic/types.py 2.57326.4±2.23µs78.1 MB/sec1.00127.2±0.71µs 200.5 MB/sec

词法分析器负责将 Python 源代码标记为 token 流,然后解析器使用这些标记来构建抽象语法树 (AST)。词法分析器是 Ruff 分析管道中的第一步,在 Ruff 分析的每个文件上运行。

因此优化词法分析器性能不仅可以提升 linter 性能,还可以提升未来利用 Ruff 词法分析器的工具(例如 Ruff 格式化程序)的性能。

新的词法分析器利用更多缓存友好的数据结构,执行更少的分配,并包括对纯 ASCII 源代码的优化。详情。

其他变化包括忽略行尾# ruff: noqa注释,以及新增更多规则,具体变化点此查看。


相關推薦

2023-10-18

astral.sh。 详情查看发布公告。 Ruff 是基于 Rust 编写的高性能 Python 代码分析工具(即 Linter),用于检查代码中的语法错误、编码规范问题、潜在的逻辑问题和代码质量问题等,可以提供实时反馈和自动修复建议。其主打的特

2023-04-28

熟的编程语言技术和实践来改进对大量繁杂配置和策略的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更快的自动化集成和良好的生态延展性。 KCL Go SDK 是什么? kclvm 是一个 KCL 语言

2023-11-15

,但具有内存安全或安全并发等更高级的功能,使其成为高性能大型应用程序的完美选择。该语言最近在 web3/区块链领域颇受欢迎,例如 Solana 合约不是用 Solidity 制作的,而是采用的 Rust。 虽然 Rust 开发人员的平均年薪为 15.6

2023-04-24

偶像), 客观的说Haskell非常强, 类型推导、代码优美、高性能递归、无锁编程等极大开阔我的视野, 可惜的是这个语言的作者大部分都是科学家,生态一般, 很难找到工作。 4. Elisp: 我写了18年Elisp代码, 刷了400+Emacs插件

2022-07-29

全在短期内可能不如客户安全重要。咨询公司 Everest Group 发布的一份有关“元宇宙中信任和安全”的报告认为,参与虚拟世界互动的企业将需要提高他们的信任和安全游戏,以避免针对虚拟世界化身的滥用行为、数据隐私问题、

2023-03-03

CeresDB 是一款高性能、分布式的云原生时序数据库,采用 Rust 编写。其开发团队近日宣布:经过近一年的开源研发工作,时序数据库 CeresDB 1.0 正式发布,达到生产可用标准。 CeresDB 1.0 官方中文文档:https://docs.ceresdb.io/cn/ CeresD

2023-03-11

test cases,在 v0.3 版本中通过 70% 以上。 Protocol 新版高性能通信协议 基于 Arrow Flight RPC 构建,相比原来的 gRPC 私有协议,现在更加简洁高效,也很方便多种语言利用 Arrow Flight 的 SDK 直接与 GreptimeDB 通信。对 Stream 的支持也

2024-06-04

因为语法复杂,很多学生即使进行了系统学习,仍然难以编写出稳定且少错的程序,尤其是其中的指针和内存管理机制,令无数学生困扰不已。随着人工智能的发展,Python编程语言的使用率日益提升,有的学生认为学好Python就足

2022-10-15

人员来说这并不是真正需要的;Scientific programmers 倾向于编写单线程函数。Web 开发人员可以编写 PHP 代码,它提供了一种简单的声明式方法来创建网站。Serverless programmers 只需编写一个函数,然后将繁重的工作留给其他人。需要

2023-06-20

VirtualEnv 20.23.1 现已发布,VirtualEnv 用于在一台机器上创建多个独立的 Python 运行环境,可隔离项目之间的第三方包依赖,为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。 

2024-08-20

分析提供了一个优越的环境,从而确保了编译和运行时的高性能。从编译速度来看,MoonBit 编译 626 个包(package)只需 1.06 秒,比 Rust 快了近 9 倍,运行时间仅为Go的 35分之一。 小 MoonBit 在输出 Wasm 代码体积上相较于传统语言

2023-04-29

,微软 Azure 首席技术官 Mark Russinovich 还曾在社交平台上发布动态呼吁,开发人员应该更多的使用 Rust 而不是 C/C++ 来启动新项目。 另一方面,虽然用 Rust 重写 Windows 不会很快发生,但微软对 Rust 的支持或使开源社区受益。开

2023-02-03

点。许多这些弱点在 C++ 中是可以避免的,通常可以通过编写更高效的代码来更直接地表达程序员的意图”。 邮件中 Bjarne 也分享了他对安全的定义:目标是类型和资源安全,即每个对象都根据其类型使用,没有资源泄漏。对于

2023-03-06

在线学习平台 O'Reilly 最新发布了 2023 年度技术趋势报告,基于该平台 280 万的用户数据,以了解开发人员的兴趣所在。调查结果表明,开发人员对生成式 AI 关键组件的兴趣正在加速增长:有关自然语言处理 (NLP) 的内容同比增长