rust_code | Unsorted

Telegram-канал rust_code - Rust

8052

Rust programming language По всем вопросам- @haarrp @ai_machinelearning_big_data - машинное обучение @programming_books_it - бесплатные it книги @pythonl - 🐍 @ArtificialIntelligencedl - AI @datascienceiot - ml 📚 #VRHSZ

Subscribe to a channel

Rust

🦀 Rust 1.96 вышел: новые range-типы, удобные assert-матчи и важное изменение для WebAssembly

Rust 1.96.0 выглядит как минорный релиз, но внутри есть несколько вещей, которые реально стоит заметить.

Главное изменение - новые core::range::Range* типы. Старые Range из core::ops напрямую реализуют Iterator, поэтому их нельзя нормально сделать Copy без неприятных ловушек. Новые range-типы идут другим путём: они реализуют IntoIterator, а значит могут быть Copy.

Теперь можно хранить диапазоны в Copy`-структурах без костылей вроде раздельных `start и end.


use core::range::Range;

#[derive(Clone, Copy)]
pub struct Span(Range<usize>);


Ещё одно приятное обновление - assert_matches! и debug_assert_matches!.

Это как assert!(matches!(...)), только при падении выводится значение через Debug, а значит тесты и отладка становятся заметно понятнее. Макросы не добавили в prelude, их нужно импортировать вручную из core или std.

Для WebAssembly есть изменение построже: undefined symbols теперь становятся ошибкой линковки, а не молча превращаются в импорты из "env". Это может сломать часть старых сборок, зато такие проблемы теперь ловятся раньше, а не всплывают странным поведением на рантайме.

Из важного по безопасности: в Rust 1.96 исправлены две уязвимости Cargo для пользователей сторонних registry. Пользователей crates.io они не затрагивают.

Обновление стандартное:


rustup update stable


Релиз без фейерверков, но полезный: меньше footgun'ов с range, удобнее проверки в тестах, строже WebAssembly-сборки и пара закрытых дыр в Cargo.

https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/

Читать полностью…

Rust

✔️ Run Llama выкатили LiteParse - open-source инструмент для быстрого локального парсинга документов.

Если задача - быстро достать текст, координаты, структуру страниц и скриншоты, это можно делать локально.

Что умеет LiteParse:

- парсит PDF через PDFium
- сохраняет bounding boxes для текста
- умеет OCR через встроенный Tesseract
- поддерживает внешние OCR-серверы вроде EasyOCR или PaddleOCR
- генерирует скриншоты страниц для LLM-агентов
- отдаёт результат в JSON или обычный текст
- работает из Rust, Python, Node.js/TypeScript и WASM
- запускается на Linux, macOS и Windows

Авторы прямо разделяют сценарии: LiteParse для быстрых локальных задач, LlamaParse - для тяжёлых случаев с таблицами, сложной версткой, графиками, рукописным текстом и сканами.

https://github.com/run-llama/liteparse

Читать полностью…

Rust

⚙️ ASMLings - подробный гайд на русском

ASMLings - это набор из ~32 коротких упражнений на ассемблере Intel 8086, выстроенных по возрастанию сложности: от mov ax, 0x1337 до 32-битного сложения через carry flag, циклов, подпрограмм, работы с памятью и стеком.

Полный русскоязычный гайд по asmlings - интерактивной песочнице для изучения ассемблера Intel 8086, в которой 16-битный x86-эмулятор написан на Rust.

Внутри: что это, как устроено под капотом, как установить, как читать и решать упражнения, разборы реальных задач из репозитория, готовые примеры в examples/ и шпаргалки.

https://github.com/justxor/-ASMLingsru/

Читать полностью…

Rust

👣 Rust Interview Deep Dive

Репозиторий для системной подготовки к собеседованиям по Rust на позиции middle, senior и staff.

Внутри 100 реальных вопросов с собеседований в продуктовых и инфраструктурных компаниях, подробные разборы с примерами кода и сценарии задач, которые встречаются в продакшене. Не «угадай вывод программы», а механика, на которой строятся настоящие сервисы.

Здесь lock-free структуры, self-referential типы в async, FFI с тензорными библиотеками, корректный Send на гардах через await, memory ordering под loom, soundness кастомных коллекций. И при этом все начинается с базы. Владение, заимствование, лайфтаймы. Кто хочет, может зайти и с нуля, и с уровня staff

https://github.com/Develp10/rustinterviewquiestions

Читать полностью…

Rust

👣 Rust Interview Deep Dive

Репозиторий для системной подготовки к собеседованиям по Rust на позиции middle, senior и staff.

Внутри 100 реальных вопросов с собеседований в продуктовых и инфраструктурных компаниях, подробные разборы с примерами кода и сценарии задач, которые встречаются в продакшене. Не «угадай вывод программы», а механика, на которой строятся настоящие сервисы.

Здесь lock-free структуры, self-referential типы в async, FFI с тензорными библиотеками, корректный Send на гардах через await, memory ordering под loom, soundness кастомных коллекций. И при этом все начинается с базы. Владение, заимствование, лайфтаймы. Кто хочет, может зайти и с нуля, и с уровня staff

https://github.com/Develp10/rustinterviewquiestions

Читать полностью…

Rust

Copy vs Clone в Rust: почему использование одногр почти не ест ресурсы а другое может стоить вам дорого

В Rust Copy и `Clone` часто воспринимают как одно и то же: «ну, просто сделать копию».

Но разница принципиальная.

Copy - это когда значение можно безопасно продублировать как набор байтов. Без вызова кода, без выделения памяти, без скрытой логики. Поэтому u32, bool, char, f64 и другие простые типы спокойно копируются автоматически.

Вы передали u32 в функцию - старое значение осталось доступно. Rust просто скопировал число.

С Clone другая история.

Clone означает: «создай новое значение такого же типа». А как именно это сделать, решает сам тип. Иногда это тоже дешево. Но иногда clone() запускает полноценную работу: выделяет память, копирует данные, пересобирает внутреннюю структуру.

Самый понятный пример - String.

Если бы Rust просто скопировал байты самой структуры String, мы получили бы два владельца одного и того же буфера в памяти. Это сломало бы модель владения.

Поэтому String::clone() создает новый буфер и копирует туда текст. Это уже не бесплатная операция.

Главная мысль простая:

Copy - для типов, которые можно безопасно копировать как байты.

Clone - для типов, которым может понадобиться настоящая работа, чтобы создать независимую копию.

Поэтому в Rust clone() в коде стоит замечать. Не паниковать, но понимать: здесь может быть цена.

Читать полностью…

Rust

👣 Я заставил LLM писать Rust полгода. Вот что они стабильно ломают

Полгода я использовал Claude, GPT и Cursor как основной инструмент для написания Rust-кода в проде. Не как «помощник для бойлерплейта», а как полноценного второго разработчика на монолите примерно в 80 тысяч строк (бэкенд обработки потоковых данных, tokio, sqlx, немного unsafe в hot path).

Доля сгенерированного кода в коммитах последних шести месяцев около 40%, остальное это правки, рефакторинг и места, куда модель я не пускаю.

За это время накопилась коллекция ошибок, которые модели делают с пугающей регулярностью, и которые проходят cargo build, проходят cargo test, иногда даже проходят cargo clippy, и при этом являются либо UB, либо логически некорректным кодом, либо тем самым «работает на моей машине».

Я не буду писать, какая модель лучше. К моменту публикации статьи рейтинг устареет. Я расскажу про категории ошибок, которые воспроизводятся у всех топовых моделей весной 2026 года, и которые упираются не в качество обучающих данных, а в фундаментальные слепые пятна архитектуры трансформеров применительно к системе типов Rust.

Цифры, которые буду приводить дальше, получены так: я завёл бенчмарк из 50 типовых задач (написать функцию, отрефакторить, добавить фичу), прогонял каждую через четыре модели в течение полугода, и руками классифицировал ошибки. Это не academic-level статистика, но порядки величин показывает.

🔜 Читать дальше

@rust_code

Читать полностью…

Rust

X выложили обновленный алгоритм For You на GitHub

Можно посмотреть, как X собирает и ранжирует ленту рекомендаций.

В репозитории xai-org/x-algorithm опубликован код системы, которая питает For You feed: от подбора кандидатов на показ до финального ранжирования постов. Внутри два основных источника контента:

- посты от аккаунтов, на которые вы подписаны
- посты из глобального корпуса, найденные через ML-retrieval

Дальше всё прогоняется через Phoenix - transformer-модель на базе архитектуры Grok. Она оценивает вероятности действий пользователя: лайк, реплай, репост, клик и другие сигналы. После этого система собирает итоговый score и решает, что именно попадёт в ленту.

Можно посмотреть, какие сигналы действительно влияют на рекомендации, как устроен ranking pipeline и где платформа фильтрует контент перед показом.

GitHub: https://github.com/xai-org/x-algorithm

@ai_machinelearning_big_data

Читать полностью…

Rust

📝 Легкий редактор заметок с Markdown и OCR

qnote — это минималистичный десктопный редактор заметок, который поддерживает Markdown с живым предпросмотром, историю файлов и экспорт в PDF. Работает на Windows и Linux, предлагает удобный интерфейс и множество функций для эффективного редактирования.

🚀 Основные моменты:
- Поддержка Markdown и живой предпросмотр
- История версий и файлов с быстрым поиском
- Экспорт в PDF и HTML
- Встроенный OCR для извлечения текста из изображений
- Кастомизация интерфейса и тем

📌 GitHub: https://github.com/omibranch/qnote

Читать полностью…

Rust

Энтузиаст собрал «Википедию», где всё на 100% выдумано ИИ

Проект называется Halupedia.

На сайте нет заранее написанных статей. Каждая страница появляется только в тот момент, когда ты её открываешь. Правило одно: эта вселенная существует только пока на неё кто-то смотрит.

Выглядит всё почти как Wikipedia: шрифты, верстка, академический тон, ссылки, случайная статья через stumble. Только есть маленький нюанс - ничего из этого не существовало до клика.

Примеры статей там уже сами по себе прекрасны:

- Великая перепись голубей 1887 года
- Министерство слегка неправильных карт
- Халдическая арифметика - раздел математики, где запрещено вычитание
- Армунд, картограф рек - человек, который нанес на карту 14 000 лиг рек, не вставая со стула
- Общество по предотвращению ненужных вторников

На странице ещё показывается, сколько людей читают статью прямо сейчас. Обычно там фраза в духе: «вы один сейчас изучаете этот фолиант».

Но лучший поинт - описание от автора:

«Энциклопедия вселенной, которая не существует, пока вы её не посетите».

Бэкенд тоже в тему: open-source репозиторий vibeserver с описанием «маленький веб-сервер, который придумывает вещи ровно вовремя».

Мы построили крупнейшую базу знаний в истории человечества, а потом кто-то сделал её кривое галлюцинирующее отражение и выложил в открытый интернет.

Вот это уже нормальное использование ИИ.

halupedia.com

@ai_machinelearning_big_data

Читать полностью…

Rust

🖥 NVIDIA подвинула Rust ближе к CUDA

В CUDA появился экспериментальный проект cuda-oxide. Это компилятор, который позволяет писать GPU-кернелы на Rust и получать на выходе PTX для NVIDIA GPU.

Без отдельного DSL. Без прослойки на C++. Без схемы «Rust только управляет, а настоящая работа всё равно в CUDA C++».

Пока это ранняя alpha, так что ждать production-ready инструмента рано. API будет ломаться, баги будут, часть возможностей ещё не закрыта. Но сам ход показательный.

CUDA много лет была территорией C и C++. Rust рядом с ней обычно жил как host-код, биндинги или инфраструктура вокруг вычислений. cuda-oxide пробует другое: дать Rust зайти прямо внутрь GPU-кернелов.

Почему на это стоит обратить внимание:

- можно писать SIMT-код на Rust
- компиляция идёт напрямую в PTX
- не нужно тащить C++-обвязку для каждого критичного участка
- появляется шанс использовать Rust-эргономику в низкоуровневом GPU-коде
- у NVIDIA, похоже, появился серьёзный интерес к Rust-разработчикам

Сейчас это не «убийца CUDA C++» и не повод срочно переписывать ML-инфру.

Но если проект доживёт до стабильной версии, он может сильно упростить жизнь тем, кто пишет HPC, симуляции, ML-runtime и системный GPU-код.

Rust всё дальше уходит из роли «безопасной замены C для серверов» и залезает в зоны, где раньше почти безраздельно сидел C++.

https://github.com/NVlabs/cuda-oxide/releases/tag/v0.1.0

Читать полностью…

Rust

🦀 Полный roadmap по изучению Rust на русском + бесплатный курс для начинающих + большой список ресурсов.

Rust Roadmap 2026 на русском - пошаговый план изучения Rust для начинающих и продвинутых разработчиков.

Что внутри:

- базовый синтаксис
- ownership, borrowing и lifetimes
- Option, Result, traits и generics
- тестирование и обработка ошибок
- std, smart pointers и многопоточность
- async/await и Tokio
- macros, unsafe и FFI
- web, CLI, embedded, WASM, gamedev и ML
- мини-проекты на каждом этапе

Хорошый Roadmap для тех, кто хочет учить Rust не хаотично, а по нормальному маршруту: от первых программ до production-кода.

Сохраняйте себе и отправляйте коллегам!

https://github.com/Develp10/rust-roadmap-ru/tree/main

Читать полностью…

Rust

Как Rust обманывает процессор. Часть 2: niche сквозь крейты, dropck, Pin и провенанс указателей

В первой части мы коснулись niche-оптимизации, drop flags, MIR, Stacked Borrows и async-стейт-машин. Под статьёй справедливо заметили (спасибо, Mingun): про niche рассказано только в самой простой форме — Option<&T> и NonZeroU8.

А что происходит, когда enum живёт в одном крейте, оборачивается в newtype в другом, и оба варианта внешнего enum хранят один и тот же внутренний?

По факту у такого внешнего типа всего четыре состояния - байта должно хватить. Хватит ли?

Ответ короткий: иногда да, иногда нет, и причина не в теории, а в том, как rustc вообще считает layout. С этого и начнём.
https://uproger.com/kak-rust-obmanyvaet-proczessor-chast-2-niche-skvoz-krejty-dropck-pin-i-provenans-ukazatelej/

Читать полностью…

Rust

🦀 Rust против C в embedded - не на словах, а в реальном тесте.

Исследователи взяли промышленное IoT-железо и запустили на нём две реализации одной и той же функциональности.

Одна команда писала на C.
Другая - на Rust.

Системы работали параллельно несколько месяцев в реальных условиях, а не в синтетическом бенчмарке.

Итог оказался неприятным для старого аргумента «для embedded нужен только C».

Rust не проиграл C ни по памяти, ни по скорости выполнения. Более того, runtime на Ariel OS оказался даже компактнее, чем классический bare-metal стек на C.

Вывод простой: аргумент «C быстрее и легче для прошивок» теперь звучит гораздо слабее.

Rust в embedded - это вполне рабочая альтернатива.

🔗 Подоробности: https://arxiv.org/abs/2604.25679

#Rust #RustLang #EmbeddedSystems #IoT #SystemsProgramming #C

Читать полностью…

Rust

👣 Как Rust обманывает процессор: тайная жизнь niche-оптимизации, drop flags и MIR


Большинство статей про Rust заканчиваются на borrow checker и lifetimes, как будто внутри компилятора живёт только проверяльщик заимствований и злой шрифтовый дизайнер для сообщений об ошибках. На деле там целый зоопарк механизмов, о которых редко пишут даже на конференциях. Я собрал несколько по настоящему любопытных вещей, которые меняют представление о том, как устроен язык изнутри, и подкрепил каждый сюжет кодом, который можно скопировать и проверить самому.

Начнём с того, чего никто не ждёт. Знакомая всем конструкция Option ссылки занимает ровно столько же байт, сколько и обычная ссылка. Это кажется магией: ведь у Option должен быть тег, отличающий Some от None. Никакого тега нет. Компилятор знает, что ссылка в Rust никогда не может быть нулевой, и использует нулевой адрес как представление варианта None. Этот трюк называется niche optimization, и он работает гораздо шире, чем принято думать.

Проверим руками: https://uproger.com/kak-rust-obmanyvaet-proczessor-tajnaya-zhizn-niche-optimizaczii-drop-flags-i-mir/

Читать полностью…

Rust

🌐 Умный DNS-резолвер Numa

Numa - это портативный DNS-резолвер, который работает из одного бинарного файла. Он блокирует рекламу, позволяет настраивать локальные сервисы и шифрует запросы с помощью ODoH, обеспечивая вашу конфиденциальность. Все функции встроены, без необходимости в облачных сервисах.

🚀 Основные моменты:
- Портативный, работает на любом устройстве.
- Блокировка рекламы и кэширование по умолчанию.
- Поддержка DNSSEC и DNS-over-TLS для шифрования.
- Автоматическое обнаружение устройств в локальной сети.
- Легкий в использовании интерфейс и настройка.

📌 GitHub: https://github.com/razvandimescu/numa

Читать полностью…

Rust

👣 Rust 1.96 почти готов: релиз уже на финальном тестировании

Команда Rust выложила pre-release версии 1.96.0. Это не финальный релиз, а последняя проверка перед публикацией stable, которая запланирована на 28 мая.

Разработчиков просят прогнать новую версию на реальных проектах и заранее поймать регрессии, пока релиз ещё можно поправить.

Из заметного в 1.96:

- стабилизировали assert_matches! и debug_assert_matches!
- добавили поддержку итерации по диапазонам `NonZero`-чисел
- Cargo теперь позволяет зависимости указывать одновременно git-репозиторий и альтернативный registry
- добавили target.'cfg(..)'.rustdocflags в конфигурации Cargo
- Rustdoc получил более аккуратный рендер deprecated-документации
- есть несколько compatibility notes, которые могут затронуть редкие edge cases

Отдельный сигнал: Rust Team обсуждает изменения в самом pre-release процессе и просит фидбек от сообщества. То есть речь не только про конкретную версию, но и про то, как Rust будет тестировать релизы дальше.

Проверить pre-release можно через rustup:

RUSTUP_DIST_SERVER=https://dev-static.rust-lang.org rustup update stable

https://blog.rust-lang.org/inside-rust/2026/05/26/1.96.0-prerelease/

Читать полностью…

Rust

Rust-приложение, которое превращает скучный терминал в живой dashboard

Splashboard - это splash screen для терминала, написанный на Rust. Открываешь новый shell - и вместо пустого экрана видишь контекст по проекту.

Он может показывать Git-статус, состояние CI, открытые PR, contribution heatmap и даже фазу Луны. Да, зачем-то это тоже есть.

Главная фишка в DX: репозиторий сам может описать свой dashboard через один dashboard.toml. Заходишь в папку проекта через cd - и терминал сразу подхватывает нужный контекст без флагов, ручной настройки и лишней возни.

Под капотом Rust и ratatui, работает кроссплатформенно, пакет доступен на crates.io.

Вот так выглядит нормальный zero-overhead DX: не ещё одна тяжёлая панель в браузере, а быстрый TUI прямо там, где разработчик и так живёт - в терминале.


🔗 http://github.com/unhappychoice/splashboard

#Rust #RustLang #CLI #TerminalTools #OpenSource #DeveloperTools #TUI #Ratatui #Rustacean

Читать полностью…

Rust

👣 Rust + Kubernetes: практичный стек для controller-разработки

Если нужно написать Kubernetes controller, стоит посмотреть на kube-rs.

• типизированные Kubernetes API
• описание состояний через enum и sum types
• явную обработку ошибок
• меньше runtime-сюрпризов
• отсутствие `nil`-крашей
• более строгую модель для reconciliation-логики

Rust помогает перенести часть проверок в компилятор и сделать поведение контроллера более предсказуемым.

GitHub: https://github.com/kube-rs/kube

Читать полностью…

Rust

Вышел RustRover 2026.1.2.

Главное исправление - IDE теперь корректно разбирает комментарии, которые начинаются с ////.

Да, тот самый случай, когда валидный Rust-код мог подсвечиваться как ошибочный просто из-за лишнего слеша в комментарии. Код нормальный, компилятор не ругается, а IDE показывает false positive и заставляет искать проблему там, где её нет.

В обновлении также поправили:

- несколько других ложных ошибок
- вывод типов
- стабильность IDE

Обновление небольшое, но полезное.

Скачать:
https://jetbrains.com/rust/download/

Читать полностью…

Rust

👣 На Stepik обновили курс «Rust: полный курс разработчика. С нуля до профи»

Представьте: через три месяца вы открываете чужой Rust-код и читаете его как книгу.

Arc<Mutex<T>> не вызывает панику. impl Future не пугает. Вы точно знаете, почему компилятор ругается и как это починить за 10 секунд.

Это не фантазия. Это результат 50 уроков, в которых каждая концепция объясняется через код и закрепляется практикой.

Ownership, traits, generics, async, unsafe - всё, что казалось магией, станет рабочим инструментом.

А бонусом - портфолио проектов: от CLI-утилит до REST API и WebAssembly.

Вы и так знаете, что Rust - ваш следующий язык. Этот курс просто сделает это реальностью.

Сегодня - 55% процентов от цены, торопись: https://stepik.org/a/269250/

Читать полностью…

Rust

Rust сегодня исполняется 11 лет 🦀🎉

С версии 1.0 многое изменилось, но история языка всё ещё пишется.

От первого стабильного релиза до сегодняшнего дня Rust вырос в топовые язык, сформированный, аккуратным дизайном и крутым сообществом, которое постоянно поднимает планку качества в разработке ПО.

А когда вы начали работать с Rust?

🎁 Пишите в комментариях.

@rust_code

Читать полностью…

Rust

AI-агенты уже переписывают не пет-проекты, а инфраструктуру уровня Bun

История с Bun выглядит как новый уровень вайбкодинга: не лендинг, не CRUD и не маленький сервис, а почти миллион строк системного кода.

Bun изначально был написан на Zig. После покупки Anthropic проект стал ещё важнее: на нём завязана инфраструктура Claude Code, поэтому любые проблемы runtime напрямую бьют по продукту.

И вот Джарред Самнер начал эксперимент с переносом Bun на Rust при помощи Claude. Сначала это звучало как черновой ресёрч, который легко могут выбросить.

Но через несколько дней Rust-ветка уже проходила около 99.8% тестов на Linux x64 glibc, а в обсуждениях всплыл масштаб порядка 960 тысяч строк портированного кода.

Сама цифра важнее хайпа. AI-агенты впервые выглядят не как помощники для дописывания функций, а как инструмент для радикальных миграций: язык, runtime, архитектура, огромная кодовая база.

Да, качество такого порта ещё будут долго разбирать. Да, миллион строк от агента - это не автоматически production-ready. Но сам факт уже меняет планку.

Раньше переписывание большого проекта на другой язык было историей на месяцы или годы.

Теперь это может начинаться как эксперимент на неделю.

https://github.com/oven-sh/bun/pull/30412

Читать полностью…

Rust

Obscura - headless browser для AI-агентов, который не тащит за собой весь Chrome

Обычный headless Chrome давно стал стандартом для scraping, автотестов и браузерной автоматизации. Но для AI-агентов это часто слишком тяжелая махина: много памяти, долгий старт, лишний вес и куча поведения, заточенного под обычный браузер.

Obscura пытается закрыть эту дыру.

Это open-source headless browser на Rust, сделанный специально под web scraping и агентную автоматизацию. Внутри есть V8 для JavaScript, поддержка Chrome DevTools Protocol и совместимость с Puppeteer / Playwright.

Что заявляют авторы:

- около 30 MB памяти против 200+ MB у headless Chrome
- бинарник около 70 MB против 300+ MB
- быстрый старт без отдельного Chrome и Node.js
- CDP-сервер для подключения через Puppeteer и Playwright
- parallel scraping из коробки
- stealth mode с anti-fingerprinting и блокировкой трекеров
- Apache-2.0, без закрытия фич за paywall

Если AI-агенту нужно не «открыть браузер как человек», а быстро пройти сайт, выполнить JS, забрать DOM, кликнуть, авторизоваться и вытащить данные, то полноценный Chrome становится избыточным.

Obscura выглядит как попытка сделать браузерный рантайм нового типа - не для людей, а для агентов.

https://github.com/h4ckf0r0day/obscura

Читать полностью…

Rust

👣 Твой async fn на самом деле enum, а Pin нужен потому, что Rust наступил на грабли самоссылающихся структур

TL;DR. Каждый async fn в Rust компилируется в enum-стейт-машину.

Размер этой стейт-машины равен размеру самого толстого варианта, поэтому забытая через .await переменная на пару мегабайт превращается в утечку памяти, помноженную на число задач.

Pin существует, чтобы запретить перемещать такие стейт-машины после первого poll, потому что внутри них живут указатели на собственные поля. select! молча теряет данные, если использовать в нём future без cancellation safety. И executor в Tokio, при всей его магии, концептуально умещается в сотню строк.

https://uproger.com/tvoj-async-fn-na-samom-dele-enum-a-pin-nuzhen-potomu-chto-rust-nastupil-na-grabli-samossylayushhihsya-struktur/

Читать полностью…

Rust

👣 Твой код на Rust компилируется, проходит тесты и является UB. Ты просто об этом не знаешь

Если взять случайный крейт с crates.io, поставить на него Miri и подождать минут пять, шанс увидеть красное сообщение про undefined behavior где-то в зависимостях стремится к единице. Чаще всего виноват не автор хитрого unsafe-блока ради скорости, а вполне обычная библиотека, которой пять лет, у которой звёзд на гитхабе больше, чем у твоего пет-проекта строчек кода, и которая всё это время спокойно лежит в продакшене.

Самое неприятное в этой истории то, что компилятор ничего не скажет. Тесты пройдут. Бенчмарки покажут красивые наносекунды. А потом LLVM 19 обновится до LLVM 20, поменяет один проход оптимизации, и твой сервис начнёт ронять прод по понедельникам. Чтобы понять, почему так происходит, придётся залезть в три темы, которые в обычной жизни Rust-разработчика не встречаются: pointer provenance, Stacked Borrows и пришедшую им на смену Tree Borrows.

https://uproger.com/tvoj-kod-na-rust-kompiliruetsya-prohodit-testy-i-yavlyaetsya-ub-ty-prosto-ob-etom-ne-znaesh/

Читать полностью…

Rust

👣 Хороший тест на понимание unsafe Rust

Вопрос простой: если запустить пример в Miri со Stacked Borrows, будет ли там UB?

Но важна не только галочка «да» или «нет».

Если UB есть, нужно объяснить:

- какая именно операция ломает правила;
- почему этот указатель больше нельзя использовать;
- где была нарушена модель заимствований;
- какой доступ инвалидировал предыдущий alias;
- почему компилятор может считать такой код невозможным.

Вот в этом и суть unsafe Rust.

`unsafe` не значит «делай что хочешь». Это значит: компилятор больше не проверяет часть правил за тебя, но правила всё ещё существуют.

Miri полезен именно потому, что заставляет смотреть не на ощущение «ну вроде работает», а на формальную модель памяти.

Код может стабильно проходить локально, не падать в тестах и всё равно быть UB.

А потом оптимизатор сделает вид, что такого состояния программы вообще не могло существовать.

Читать полностью…

Rust

📘 На платформе Mentorix вышел курс — «Rust для профессионалов»

Если вы уже знакомы с Rust и хотите углубить знания до уровня реального применения — этот курс даёт системное понимание и практику продвинутых возможностей языка.

В курсе:
• углублённая работа с памятью и моделью владения
• многопоточность и конкурентность
• продвинутые структуры и подходы
• написание производительных и надёжных систем
• практические задачи разного уровня сложности

Материал выстроен последовательно — от углубления базовых концепций к сложным сценариям использования.

Скидка 40% — действует 48 часов

👉 Пройти курс

Читать полностью…

Rust

🔥 Продвинутый Rust без учебных игрушек

Базу уже прошли? Тогда следующий шаг - production-разработка.

На Stepik идет скидка 60% на продвинутый курс по Rust для тех, кто хочет не просто знать синтаксис, а строить реальные системы.

Внутри: async, unsafe, gRPC, lock-free, observability, Kafka, NATS, axum, tower, CI/CD и канареечный деплой.

Финальный проект - production-ready feed-сервис от архитектуры до релиза.

21 модуль, 84 урока, 400+ проверочных шагов.

Если хотите перейти от маленьких Rust-утилит к коммерческой разработке, сейчас хороший момент зайти: https://stepik.org/a/285608/pay

Читать полностью…

Rust

🧩 Новый язык программирования для AI-систем

Weft - это язык программирования, написанный на Rust, который упрощает создание AI-приложений, позволяя связывать LLM, людей и API без лишнего "проводки". Он предлагает визуальное представление программ и строгую типизацию, что делает разработку более интуитивной и безопасной.

🚀Основные моменты:
- Первоклассные взаимодействия с людьми через простые узлы.
- Возможность сворачивать группы узлов для упрощения структуры.
- Полная типизация, предотвращающая ошибки на этапе компиляции.
- Устойчивое выполнение программ, сохраняющих состояние после сбоев.
- Встроенные узлы для работы с различными сервисами и API.

📌 GitHub: https://github.com/WeaveMindAI/weft

#rust

Читать полностью…
Subscribe to a channel