#prog #python #amazingopensource
Ruff
An extremely fast Python linter, written in Rust.
⚡️ 10-100x faster than existing linters
🐍 Installable via pip
🛠 pyproject.toml support
🤝 Python 3.11 compatibility
📦 Built-in caching, to avoid re-analyzing unchanged files
🔧 Autofix support, for automatic error correction (e.g., automatically remove unused imports)
📏 Over 500 built-in rules
⚖️ Near-parity with the built-in Flake8 rule set
🔌 Native re-implementations of dozens of Flake8 plugins, like flake8-bugbear
⌨️ First-party editor integrations for VS Code and more
🌎 Monorepo-friendly, with hierarchical and cascading configuration
<...>
> Ruff is so fast that sometimes I add an intentional bug in the code just to confirm it's actually running and checking the code.
Ruff
An extremely fast Python linter, written in Rust.
⚡️ 10-100x faster than existing linters
🐍 Installable via pip
🛠 pyproject.toml support
🤝 Python 3.11 compatibility
📦 Built-in caching, to avoid re-analyzing unchanged files
🔧 Autofix support, for automatic error correction (e.g., automatically remove unused imports)
📏 Over 500 built-in rules
⚖️ Near-parity with the built-in Flake8 rule set
🔌 Native re-implementations of dozens of Flake8 plugins, like flake8-bugbear
⌨️ First-party editor integrations for VS Code and more
🌎 Monorepo-friendly, with hierarchical and cascading configuration
<...>
> Ruff is so fast that sometimes I add an intentional bug in the code just to confirm it's actually running and checking the code.
GitHub
GitHub - astral-sh/ruff: An extremely fast Python linter and code formatter, written in Rust.
An extremely fast Python linter and code formatter, written in Rust. - astral-sh/ruff
🔥7🤯3
#prog #python #c #abnormalprogramming #article
Writing a C compiler in 500 lines of Python
С небольшим нюансом: компиляция в WASM и, понятное дело, только весьма небольшого подмножества C. Ну и для достижения ограничения на количество строк компилятор однопроходной.
Writing a C compiler in 500 lines of Python
С небольшим нюансом: компиляция в WASM и, понятное дело, только весьма небольшого подмножества C. Ну и для достижения ограничения на количество строк компилятор однопроходной.
vgel.me
Writing a C compiler in 500 lines of Python
Blog about linguistics, programming, and my projects
👍3💩1
#prog #rust #python #performancetrap #article
Rust-Python FFI
Или о некоторых возможных проблемах при интеропе Rust и Python, включая проблемы производительности и проблемы с эргономикой.
Rust-Python FFI
Или о некоторых возможных проблемах при интеропе Rust и Python, включая проблемы производительности и проблемы с эргономикой.
#prog #rust #python #article #suckassstory #performancetrap
Rust std fs slower than Python!? No, it's hardware!
Редкий случай, когда удалось отследить баг и подтвердить, что он действительно в железе. Ссылки на патчи в glibc прилагаются.
TL;DR: оба варианта кода используют mmap в качестве буфера для считывания из файла, но в Python этот буфер используется с некоторым смещением. На некоторых процессорах — в том числе в том, который используется на машине автора — команда
Rust std fs slower than Python!? No, it's hardware!
Редкий случай, когда удалось отследить баг и подтвердить, что он действительно в железе. Ссылки на патчи в glibc прилагаются.
TL;DR: оба варианта кода используют mmap в качестве буфера для считывания из файла, но в Python этот буфер используется с некоторым смещением. На некоторых процессорах — в том числе в том, который используется на машине автора — команда
rep movsb
— которая использовалась в реализации memcpy — парадоксальным образом работает на порядок более медленно при работе с выровненным буфером.xuanwo.io
Rust std fs slower than Python!? No, it's hardware!
Achieving Data Freedom Through Open Source and Rust
🤯10