Rust
8.65K subscribers
498 photos
43 videos
3 files
1.03K links
Rust programming language

По всем вопросам- @workakkk

#VRHSZ
Download Telegram
👣 В Rust нашли интересный способ ускорить pretty printer - штуку, которая красиво форматирует код, JSON, Lisp и другие структуры.

Обычно есть два подхода.

Первый - собрать всё дерево документа целиком. Так делают Wadler-style pretty printers. Это выразительно, но в Rust быстро упирается в память, аллокации и указатели.

Второй - стримить вывод по кускам. Так работает Oppen-style подход. Он легче по памяти, но часто принимает локально хорошие решения и не всегда находит глобально лучший layout.

Автор предлагает третий вариант: не хранить документ как рекурсивный enum, а описывать его через trait Doc.

То есть Text, Concat, Group, Nest и другие элементы становятся отдельными типами, которые умеют сами себя рендерить через layout().

Звучит как мелкая архитектурная правка, но эффект большой: меньше лишних аллокаций, меньше прыжков по памяти, гибче управление Box, Rc и другими стратегиями хранения.

В proof-of-concept реализации pye автор получил до 60x ускорения по сравнению с прямой Rust-реализацией алгоритма из paper “A Pretty Expressive Printer”. А в обновлённых тестах вариант с таким дизайном и greedy-алгоритмом местами обгонял pretty и arena-версию больше чем в 10 раз.

В Rust производительность часто ломается не только на алгоритме, но и на форме данных.

Иногда enum выглядит красиво, но trait-based дизайн лучше ложится на память, ownership и реальные оптимизации компилятора.

blog.wybxc.cc/blog/pretty-printer-pye/

#Rust #RustLang #Compilers #OpenSource #SystemsProgramming
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍116❤‍🔥3🥰1👌1
👣 Rust без боли начинается не с синтаксиса, а с правильных паттернов

Microsoft выложила практический гайд Rust: Patterns & Engineering How-Tos - не для тех, кто только открыл println!, а для разработчиков, которые уже упёрлись в реальные production-вопросы.

Что внутри:

- type-state и newtype для безопасного дизайна API
- PhantomData для lifetime branding, variance и zero-cost типизации
- channels, actors и concurrency-паттерны
- async pitfalls, где Rust чаще всего ломает ожидания новичков
- error handling через thiserror и anyhow
- тестирование через unit, integration, doc tests и proptest
- benchmarking через criterion

Это особенно полезно для тех, кто приходит из C++, C# или Go и внезапно понимает, что borrow checker - это не главный враг. Главная сложность в Rust - выбрать правильную форму абстракции до того, как код превратится в набор lifetime-костылей.

Если вы уже прошли Rust Book, но всё ещё зависаете на generics, trait bounds, PhantomData, async и тестировании, это очень хороший следующий шаг.

https://microsoft.github.io/RustTraining/rust-patterns-book/

#rust #rustlang
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥217🥱4🥰1😁1🤗1
Скотт Чакон, сооснователь GitHub, переписал Git на Rust. С помощью ИИ-агентов.

Проект называется Grit. Это новая реализация Git с нуля: library-first, memory-safe и почти полностью на безопасном Rust. Она уже проходит 99,3% собственного тестового набора Git — 41 715 из 42 001 теста.

Цифры:

* 360 000+ строк Rust
* 7 000+ коммитов
* 500+ pull request’ов
* около 45 млрд токенов через Claude, Cursor и Codex
* примерно $10–15 тыс. затрат на ИИ

Что интересного:

* library-first дизайн, без постоянного fork/exec для каждой Git-операции
* reentrant, linkable, modular архитектура: Git можно напрямую встраивать в GitButler, Jujutsu, Zed и другие инструменты
* потенциальная WASM-сборка: Git-команды можно запускать в edge functions
* лицензия MIT вместо GPL
* почти полностью safe Rust: только один FFI-модуль для date/time

Отдельно интересен сам разбор разработки.

Это честный взгляд на agentic coding в большом масштабе: агенты, которые «читерят» в тестах, тихо ломают код, создают проблемы с координацией и превращают Cursor в режим бесконечного гринда.

Стоит прочитать:

https://blog.gitbutler.com/true-grit

#Rust #RustLang #Git #OpenSource #AIAgents #SystemsProgramming #DevTools
🔥4111👍11🤣5🤔4💊4🥰1👏1🤗1
✔️ Фраза «у Rust тоже есть CVE» часто звучит как аргумент против memory safety.

Но тут есть важная разница.

В C, если вы вызвали функцию не так, например передали NULL туда, где библиотека этого не ждала, и получили segfault, это часто называют неправильным использованием API.

То есть ответственность перекладывается на разработчика: сам виноват, надо было читать документацию.

В Rust логика другая.

Если функция помечена как safe, она не должна приводить к memory bugs. Даже если вы передали странные данные, даже если сценарий неидеальный. Safe Rust по контракту обязан оставаться memory-safe.

Поэтому если safe-функция в Rust падает с segfault или приводит к проблеме памяти, это уже не «ты неправильно использовал API». Это баг библиотеки. И такой случай действительно может стать CVE.

Сырые числа CVE у Rust и C/C++ нельзя сравнивать напрямую.

В C/C++ огромный класс проблем считается нормальным риском неправильного использования. В Rust тот же класс проблем считается нарушением гарантий safe API.

Именно поэтому CVE в Rust часто говорит не «Rust такой же небезопасный», а наоборот: экосистема строже относится к тому, что safe-код вообще не должен ломать память.

Хороший разбор от Jakub Beránek из команды разрабов компилятора Rust:

https://kobzol.github.io/rust/2026/06/15/how-memory-safety-cves-differ-between-rust-and-c-cpp.html

#Rust #RustLang #MemorySafety #Security #CVE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3214🔥6🥰2🤗1
Исследователи NVIDIA перенесли модель владения Rust в GPU-kernels.

Paper: “Fearless Concurrency on the GPU”. В нём представлен cuTile Rust.

Проблема была в том, что при написании кастомных GPU-ядер на Rust разработчикам фактически приходилось выходить за пределы гарантий безопасности Rust.

cuTile Rust пытается это исправить:

* mutable outputs разбиваются на непересекающиеся части
* запуск kernels сохраняет правила ownership от host до device
* при необходимости остаются локальные opt-out механизмы для низкоуровневого контроля

Производительность тоже держится на уровне:

* 7 TB/s для element-wise операций на NVIDIA B200
* 2 PFlop/s для GEMM, это 96% от cuBLAS
* результат сопоставим с cuTile Python в пределах погрешности измерений

Авторы также собрали Grout, inference engine поверх cuTile Rust, и прогнали реальные модели:

* 171 tokens/s для Qwen3-4B на RTX 5090
* 82 tokens/s для Qwen3-32B на B200
* конкурентный уровень рядом с vLLM и SGLang

Итог - безопасный и идиоматичный Rust почти на полной CUDA-производительности.

Для Rust в ML-инфраструктуре это большой шаг.

https://arxiv.org/abs/2606.15991

#Rust #RustLang #GPU #CUDA #MachineLearning #SystemsProgramming #NVIDIA

@data_analysis_ml
🔥4311👍7🥰1👏1🤗1
Предрелизное тестирование 1.96.1

#rustlang #rust

https://blog.rust-lang.org/inside-rust/2026/06/27/1.96.1-prerelease/
🔥64👍3
LLM уже находят реальные memory safety баги в Rust-коде.

И, что неожиданно, это работает очень хорошо.

Сергей Давыдов, руководитель Rust Secure Code Working Group, использовал GPT-5.5 и Claude Opus для аудита unsafe-блоков в популярных Rust-крейтах.

В итоге нашлись десятки реальных багов:

• use-after-free

• чтение за пределами буфера

• data races

• неправильные реализации Send / Sync

Все находки проверялись через miri, чтобы убрать ложные срабатывания.

Почему в Rust это работает лучше, чем в C?

• unsafe явно помечен и изолирован, поэтому LLM сразу понимает, где искать

• miri может точно подтвердить, настоящий баг или нет

• не нужно отслеживать data flow по всей кодовой базе, как часто бывает в C

Получается, дизайн Rust случайно сделал его почти идеальным языком для LLM-аудита безопасности.

Стоит прочитать всем, кто думает про AI в security tooling.

https://gist.github.com/Shnatsel/eb0a4be79a0657e4eb67c4f085f991bc

https://shnatsel.medium.com/the-unreasonable-effectiveness-of-llms-for-auditing-rust-code-d4df8bf0afd3

#Rust #RustLang #MemorySafety #Security #LLM
👍36🤔9💊7🔥5
Трёхлетний GitHub issue в Gleam закрыли не новым алгоритмом, а более аккуратной работой с памятью.

Giacomo Cavalieri из core team переписал pretty printer на Rust arenas.

Раньше каждый вложенный Document заворачивался в отдельный Box и жил отдельной heap allocation. Для рекурсивной структуры это быстро превращается в сотни мелких выделений памяти.

Теперь документы кладутся в общую arena, а код передаёт ссылки на них.

Результат на реальном Gleam-проекте:

* pretty printer: 13ms → 9.8ms
* ускорение: 24%
* полный gleam format: 13% быстрее
* peak memory: 8.4MB → 7.6MB

Дополнительный бонус: arena позволила кэшировать и переиспользовать частые документы вроде ключевых слов, запятых и скобок. То, что раньше аллоцировалось снова и снова, теперь создаётся один раз.

Хороший пример, где производительность упирается в скучные мелкие allocation costs.

Особенно в рекурсивных структурах, где один Box выглядит безобидно, пока их не становится слишком много.

https://giacomocavalieri.me/writing/gleam-rust-arenas

#RustLang #Performance #Gleam
🔥2611👍5
BullMQ теперь есть нативно для Rust.

Одна из самых популярных Redis-очередей для фоновых задач получила стабильный Rust-релиз:


cargo add bullmq-official


Это нормальная Rust-реализация async/await и Tokio: привычный Result для ошибок, безопасное шаринг-поведение между tasks и API, который ощущается как Rust, а не как порт чужой библиотеки.

В v1.0.0 уже есть почти всё, что нужно для production-очередей:

* delayed и prioritized jobs
* deduplication
* retries и backoff
* rate limits
* stalled-job detection
* dependent job trees через FlowProducer
* cron и interval recurring jobs
* QueueEvents для наблюдения за жизненным циклом задач

Новая версия использует те же Lua-скрипты, что уже годами крутятся в Node.js, Python, PHP и Elixir-реализациях.

Это значит, что Rust-сервис может положить job в очередь, а Node.js worker её обработает. Или наоборот. Без миграции, sidecar’ов и adapter layer.

По первым бенчмаркам Rust уже немного быстрее Node.js на последовательной и bulk-записи задач, а на high-concurrency processing идёт примерно вровень.


https://bullmq.io/news/260712/rust-release

#RustLang #Redis #BullMQ #Tokio
🔥19👍6👏62
Topcoat: команда Tokio представила «Rails для Rust» 🦀

Topcoat - экспериментальный fullstack-фреймворк с готовой маршрутизацией, серверным рендерингом, компонентами и сборкой ассетов.

Главная идея — реактивность без отдельного JavaScript-кода и WASM. Вы пишете обычное типизированное Rust-выражение:


<button @click=$(|_e| open.set(!open.get()))>
"Что такое Topcoat?"
</button>


При первом рендере оно выполняется на сервере, а затем Topcoat переводит его в JavaScript, чтобы интерфейс мгновенно обновлялся в браузере.

Что уже есть:

- асинхронные серверные компоненты с прямым доступом к базе;
- view!`-шаблоны с обычными `if и for из Rust;
- маршруты, автоматически определяемые по структуре модулей;
- редактируемые UI-компоненты на Tailwind в духе shadcn/ui;
- встроенная сборка ассетов;
- интеграции с Tailwind и htmx;
- серверные функции и частичное обновление HTML.

Отдельный API-слой во многих сценариях не требуется: компонент может получить данные и сразу отрисовать страницу.

Проект пока находится на ранней экспериментальной стадии, поэтому возможны серьёзные изменения API. В планах — аутентификация, фоновые задачи, WebSocket, потоковый SSR и клиентская навигация.

https://github.com/tokio-rs/topcoat

#rust #rustlang #webdev #fullstack #tokio #opensource
👍4116🤯11😁2🥴2🗿2💊2🔥1
Cargo готовят к большой перестройке 🦀

Лид команды Cargo Ed Page опубликовал vision-документ о будущем главного инструмента Rust.

Самые интересные идеи:

- перевести Cargo на async/await и лучше распараллелить работу;
- добавить plumbing-команды в духе Git;
- перейти на PubGrub для более понятного разрешения зависимостей;
- улучшить provenance crates и доверие к пакетам;
- вынести использование unsafe в метаданные для аудита;
- усилить контроль над proc-macro и build scripts.

Отдельно затронуты AI-агенты: Cargo не хотят переделывать «под ИИ». Идея проще — ускорить сборки, улучшить сигналы и безопасность зависимостей, что одинаково полезно и людям, и агентам.

Это пока не roadmap, а приглашение сообщества обсудить будущее Cargo.

Источник:
https://epage.github.io/blog/2026/08/cargo-vision/

#Rust #Cargo #RustLang #DevTools
33🔥17🥰6👍2🥱1