Rust
8.39K subscribers
438 photos
40 videos
3 files
979 links
Rust programming language

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

#VRHSZ
Download Telegram
Как 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/
🔥63👍2🥰1🖕1🤗1
👣 Хороший тест на понимание unsafe Rust

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

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

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

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

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

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

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

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

А потом оптимизатор сделает вид, что такого состояния программы вообще не могло существовать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🥰3🔥21🖕1🤗1
Что выведет код ?
👍75🥰2🤗2
🦀 Полный 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
🔥4311👍8🥰1🤗1
👣 Твой код на 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥰3💯31🖕1🤗1
🖥 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5016👍5👏3🤗2🥰1
👣 Твой 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍166🔥2🥰1🤗1
Forwarded from Machinelearning
Энтузиаст собрал «Википедию», где всё на 100% выдумано ИИ

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

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

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

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

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

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

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

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

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

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

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

halupedia.com

@ai_machinelearning_big_data
😁1915👍3🔥3🎉1🍾1
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
17🔥10👍6💊3🥰1🤣1🤗1
📝 Легкий редактор заметок с Markdown и OCR

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

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

📌 GitHub: https://github.com/omibranch/qnote
👍17🔥5🥰4
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
😁2517👍9🔥7💊4🤣3🥰2🖕2🤔1
Forwarded from Machinelearning
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
🔥167👍3🎉2🌭2
This media is not supported in your browser
VIEW IN TELEGRAM
Rust сегодня исполняется 11 лет 🦀🎉

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

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

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

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

@rust_code
75🔥29👍7🎉5🍾2
👣 Я заставил 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1814🔥8🖕3🥰1🤗1
👣 На 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣9👍83🔥3🥰1🤬1💯1