1.83K subscribers
3.24K photos
127 videos
15 files
3.52K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#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.
🔥7🤯3
#prog #rust #amazingopensource

svgbob — это библиотека и утилита для перевода ASCII-диаграмм в SVG. На сайте проекта можете посмотреть эти и другие примеры (серьёзно, посмотрите, их там предостаточно, я заскринил лишь небольшую часть), причём в веб-редакторе вы можете отредактировать текстовые исходники и увидеть, как изменения сказываются на отрендеренном SVG.

В пару к нему — mdbook-svgbob, плагин к mdbook для использования svgbob-диаграм прям в исходниках.
🔥12👍42
Блог*
Подписчики, а какие вы знаете IDL (interface definition languages) с поддержкой сумм-типов?
#prog #rust #typescript #amazingopensource

Typical — IDL, который предоставляет одновременно:

* типобезопасность
* бинарную совместимость между схемами разных версий
* СУММ-ТИПЫ
* обязательные поля в схеме (я смотрю на тебя, Protobuf)
* возможность постепенно мигрировать поля из статуса опциональных в статус обязательных и наоборот

В Readme подробнее рассказывается, как достигается последний пункт за счёт новой концепции ассиметричных полей. Из недостатков можно отметить разве что небольшое число бекендов: пока что Typical умеет генерировать код только для Rust и Typescript.

(thanks @ployd)
👍6🤔2👎1
#prog #amazingopensource

ast-grep — инструмент для структурного поиска и замены с паттернами не на уровне текста, а на уровне синтаксических деревьев.

Построен поверх tree-sitter, поэтому охват языков, корректность и произодительность на уровне.

Поддерживает интерактивный режим, который позволяет проверить все места, где применяется правило, перед совершением реальной замены.

Поддерживает предзаписанные правила (в YAML 😒), с возможностью вынесения в отдельные файлы общих определений.

Может быть использован как линтер, для поиска паттернов, но без замены.
👍11🔥3
#prog #amazingopensource

wuffs (Wrangling Untrusted File Formats Safely) — язык (и компилятор) для написания программ обработки данных, который компилируется в C. Язык намеренно весьма ограниченный — в частности, в нём отсутствует IO и способы динамически управлять памятью, да и в принципе доступ к сисколам. Язык также memory safe: компилятор отказывается компилировать программу, в которой индексы выходят за границу массива (а также если в ней где-то есть переполнение).

Несмотря на ограниченность языка и намеренно простые проверки диапазонов переменных, на практике он с успехом подходит для написания (де)кодировщиков медиаформатов — реализации на wuffs по производительности обгоняют существующие реализации на C и Rust.

(thanks @experimentalchill за привлечение внимания к этой вещи — взято из поста про ошибки реализации в CRC32 в Linux)
👍8❤‍🔥2
#prog #rust #amazingopensource

git-absorb

You have a feature branch with a few commits. Your teammate reviewed the branch and pointed out a few bugs. You have fixes for the bugs, but you don't want to shove them all into an opaque commit that says fixes, because you believe in atomic commits. Instead of manually finding commit SHAs for git commit --fixup, or running a manual interactive rebase, do this:

git add $FILES_YOU_FIXED
git absorb --and-rebase


git absorb will automatically identify which commits are safe to modify, and which staged changes belong to each of those commits. It will then write fixup! commits for each of those changes.

With the --and-rebase flag, these fixup commits will be automatically integrated into the corresponding ones. Alternatively, you can check its output manually if you don't trust it, and then fold the fixups into your feature branch with git's built-in autosquash functionality:

git add $FILES_YOU_FIXED
git absorb
git log # check the auto-generated fixup commits
git rebase -i --autosquash master


Является портом аналогичной вещи для Mercurial: hg-absorb
👍6🔥21🤔1
#prog #rust #article #amazingopensource

Automating Cargo project configuration using cargo-wizard

TL;DR: I created a Cargo subcommand called cargo-wizard that simplifies the configuration of Cargo projects for maximum runtime performance, fastest compilation time or minimal binary size.

Не смотря на то, что способы настройки проектов на cargo для перечисленных целей известны, на практике их применение затруднено:

1) О них надо знать. Документация cargo хоть и вполне хорошая, но очень уж обширная, и там есть не вся информация для достижения этих целей.
2) Их надо применить. Не то чтобы это само по себе было сложно, но для этого нужно прописывать конфигурацию в разных секциях Cargo.toml, а значимый эффект они зачастую дают в комплексе.

Kobzol создал инструмент для того, чтобы по возможности решить обе проблемы. Использование одного инструменты позволяет перечислить все нужные настройки в одном месте, а также применить их к целому workspace одним махом. При этом у cargo wizard есть и более вдумчивый режим, который позволяет предварительно посмотреть все вносимые изменения и настроить индивидуально каждое из них.
👍5🔥3
#prog #amazingopensource

fq — jq for binary files

github.com/wader/fq

(thanks @oficsu)
👍9
#prog и, пожалуй, #amazingopensource