Forwarded from Анализ данных (Data analysis)
Исследователи 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-инфраструктуре это большой шаг.
http://arxiv.org/abs/2606.15991
#Rust #RustLang #GPU #CUDA #MachineLearning #SystemsProgramming #NVIDIA
@data_analysis_ml
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-инфраструктуре это большой шаг.
http://arxiv.org/abs/2606.15991
#Rust #RustLang #GPU #CUDA #MachineLearning #SystemsProgramming #NVIDIA
@data_analysis_ml
🔥42❤10👍7🥰1👏1🤗1
patent ищет совпадения сразу в 11 dev-реестрах: crates.io, npm, PyPI, GitHub, Docker Hub и других. После этого показывает, насколько ниша свободна: Open, Crowded или Saturated.Одна команда:
patent "interactive CLI to kill whatever's on a port"
Инструмент ранжирует результаты через локальный semantic search, затем делает AI-вердикт через Ollama.
Всё работает локально: данные не уходят с вашей машины.
Хороший способ сэкономить месяц перед очередным pet project и быстро понять, не сделали ли вашу идею уже десять раз.
http://github.com/r14dd/patent
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - r14dd/patent: A prior-art search for your code ideas — has this dev tool already been shipped?
A prior-art search for your code ideas — has this dev tool already been shipped? - r14dd/patent
👍26🔥14🥰6❤3🥴1🤗1
В Rust нашли смешной и неприятный кейс: несколько символов
Автор копался в macro expansion и заметил, что парсер declarative macros в
Обычно это нормально.
Но если сделать макрос с вложенными повторениями, количество промежуточных вариантов начинает резко расти. Формально ожидался кубический рост, но в тесте всё выглядело ещё хуже.
Результат:
- валидный Rust-код
- всего несколько десятков токенов
- компиляция на
- пиковая память дошла до 44 ГБ
Самое интересное: код не использует сложные выражения, типы или гигантские зависимости. Только macro_rules и фиксированные токены.
Главная мысль не в том, что «Rust сломан».
Главная мысль в другом: макросы в Rust - это почти отдельный язык внутри языка, и даже маленький паттерн может внезапно превратиться в тяжёлую задачу для компилятора.
Автор предлагает смотреть в сторону packrat-подхода с memoization, где состояние парсинга можно кэшировать и гарантировать линейное число шагов по
Красивый пример того, как в системном языке проблемы иногда прячутся не в unsafe, не в borrow checker и не в LLVM.
А в маленьком macro_rules, который выглядит безобидно.
Хорошее чтиво на выходные 🦀
bal-e.org/blog/2026/oops-cubic-macro/
@ могут заставить rustc жрать десятки гигабайт памяти.Автор копался в macro expansion и заметил, что парсер declarative macros в
rustc ведёт себя как упрощённый Earley parser: он одновременно держит несколько возможных вариантов разбора макроса.Обычно это нормально.
Но если сделать макрос с вложенными повторениями, количество промежуточных вариантов начинает резко расти. Формально ожидался кубический рост, но в тесте всё выглядело ещё хуже.
Результат:
- валидный Rust-код
- всего несколько десятков токенов
@- компиляция на
n = 41 заняла около 80 секунд- пиковая память дошла до 44 ГБ
Самое интересное: код не использует сложные выражения, типы или гигантские зависимости. Только macro_rules и фиксированные токены.
Главная мысль не в том, что «Rust сломан».
Главная мысль в другом: макросы в Rust - это почти отдельный язык внутри языка, и даже маленький паттерн может внезапно превратиться в тяжёлую задачу для компилятора.
Автор предлагает смотреть в сторону packrat-подхода с memoization, где состояние парсинга можно кэшировать и гарантировать линейное число шагов по
input.len() * arm.len().Красивый пример того, как в системном языке проблемы иногда прячутся не в unsafe, не в borrow checker и не в LLVM.
А в маленьком macro_rules, который выглядит безобидно.
Хорошее чтиво на выходные 🦀
bal-e.org/blog/2026/oops-cubic-macro/
🔥27❤10🤝8🥰2😁2😱1
Forwarded from Machinelearning
Компания Сэма Альтмана выделит $600 000 на развитие языка. Средства, идущие сверх ежегодного членского взноса, направят на поддержку целей проекта Rust, инновационной лаборатории, а также на прямое финансирование разработчиков открытого ПО.
Интересы OpenAI в совете директоров фонда будет представлять Предраг Груевски, технический специалист OpenAI и разработчик инструмента проверки совместимости версий
cargo-semver-checks.За 2 дня до официального вступления в фонд OpenAI распределила $160 000 через GitHub Sponsors. Целевые гранты получили разработчики открытых проектов, от которых зависят Astral и Codex.
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥15❤4🖕3
Как на самом деле работает .await: пишем свой async-рантайм на Rust с нуля
Если попросить среднего Rust-разработчика объяснить, что делает .await, в ответ обычно звучит что-то про «приостанавливает выполнение, пока не придут данные». Это верно ровно настолько же, насколько «компьютер думает» объясняет работу процессора. На самом деле за .await не стоит ни потока, ни приостановки в привычном смысле. Стоит обычный enum и вызов функции по указателю.
Я полгода писал async-код на tokio, искренне считая рантайм чернм ящиком, в который лучше не лезть. Сломался этот настрой в тот день, когда у меня в проде намертво зависла одна задача: по логам она обязана была проснуться, но не просыпалась. Я потерял на ней вечер, а причина оказалась в одной строчке про Waker, к которой мы ещё вернёмся. Тогда я плюнул и за пару вечеров написал свой рантайм с нуля - и оказалось, что весь фундамент умещается в голове за один присест и примерно в 200 строк кода.
После этого и тот баг стал очевидным, и исходники tokio начали читаться как книга, а не как заклинание.
https://habr.com/ru/articles/1050160/
Если попросить среднего Rust-разработчика объяснить, что делает .await, в ответ обычно звучит что-то про «приостанавливает выполнение, пока не придут данные». Это верно ровно настолько же, насколько «компьютер думает» объясняет работу процессора. На самом деле за .await не стоит ни потока, ни приостановки в привычном смысле. Стоит обычный enum и вызов функции по указателю.
Я полгода писал async-код на tokio, искренне считая рантайм чернм ящиком, в который лучше не лезть. Сломался этот настрой в тот день, когда у меня в проде намертво зависла одна задача: по логам она обязана была проснуться, но не просыпалась. Я потерял на ней вечер, а причина оказалась в одной строчке про Waker, к которой мы ещё вернёмся. Тогда я плюнул и за пару вечеров написал свой рантайм с нуля - и оказалось, что весь фундамент умещается в голове за один присест и примерно в 200 строк кода.
После этого и тот баг стал очевидным, и исходники tokio начали читаться как книга, а не как заклинание.
https://habr.com/ru/articles/1050160/
👏26❤9👍4🤯4
🔥 Продвинутый 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
Базу уже прошли? Тогда следующий шаг - 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
🖕13❤3👍3🔥3
Rust теперь можно компилировать в JVM bytecode.
Что уже заявлено:
- генерация исполняемого
- поддержка базового
-
- structs, tuples, arrays, slices, enums
- traits, closures, dynamic dispatch
- function pointers, recursion, generics
- часть
- оптимизации вроде constant folding, propagation и dead code elimination
Пайплайн выглядит так:
Rust frontend → MIR → OOMIR → JVM classfile → R8 →
https://github.com/IntegralPilot/rustc_codegen_jvm
rustc_codegen_jvm - экспериментальный backend для компилятора Rust, который берёт Rust MIR и превращает его в .class файлы, а затем собирает runnable .jar под JVM 8+.Что уже заявлено:
- генерация исполняемого
.jar- поддержка базового
core-
if/else, match, for, while, loop- structs, tuples, arrays, slices, enums
- traits, closures, dynamic dispatch
- function pointers, recursion, generics
- часть
unsafe, включая unions- оптимизации вроде constant folding, propagation и dead code elimination
Пайплайн выглядит так:
Rust frontend → MIR → OOMIR → JVM classfile → R8 →
.jarhttps://github.com/IntegralPilot/rustc_codegen_jvm
😱38💊16👍9🗿5😁3❤1
Обычно выбор такой:
anyhow — удобно, но теряется точная типизация ошибок.thiserror — типобезопасно, но приходится писать enum и boilerplate.eros пытается взять лучшее из обоих миров: typed error unions без ручного объявления enum.Пример:
fn read() -> Result<String, ErrorUnion<(IoError, RecvError)>> {
// ...
}
Что это даёт:
• сохраняется полная информация о типах ошибок
• ошибки естественно композятся при вызове функций
• не нужно писать отдельные enum под каждый слой
• можно добавлять context по цепочке вызовов
• есть backtraces и интеграция с логированием
• zero-cost, когда ошибки не происходит
По сути, это попытка сделать error handling в Rust более удобным, не жертвуя строгой типизацией.
212 звёзд, свежий релиз v0.6.0, проект активно поддерживается.
GitHub:
http://github.com/mcmah309/eros
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🤔10❤7🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Песочницы для агентов не должны каждый раз стартовать с нуля, когда агент создаёт новую ветку.
forkd — это runtime для sandbox-окружений AI-агентов на базе Firecracker microVM.
Он помогает быстрее ветвить и распараллеливать задачи: сначала один раз запускается «прогретый» родительский microVM, а затем дочерние окружения создаются из copy-on-write снапшотов памяти вместо холодного запуска каждой VM.
Ключевые возможности:
- Forking от прогретого родителя — дочерние окружения наследуют уже загруженные импорты, зависимости, JIT-состояние, веса моделей и кэши
- KVM-изолированные microVM — каждый дочерний sandbox работает как отдельный процесс Firecracker с собственной изоляцией
- Live BRANCH — можно поставить работающий sandbox на паузу, снять снапшот состояния «на лету» и продолжить выполнение. Для v0.4 заявлено p50-окно паузы исходного окружения 56 мс
- Цепочки diff-снапшотов — можно накладывать runtime-слои вроде numpy → pandas → sklearn без повторного копирования одного и того же базового образа
- Удобная daemon-поверхность — REST API, Python/TypeScript/MCP-клиенты, метрики Prometheus, JSON audit log и поддержка systemd
Проект open-source и распространяется под лицензией Apache License 2.0.
Ссылка в ответе 👇
https://github.com/deeplethe/forkd
forkd — это runtime для sandbox-окружений AI-агентов на базе Firecracker microVM.
Он помогает быстрее ветвить и распараллеливать задачи: сначала один раз запускается «прогретый» родительский microVM, а затем дочерние окружения создаются из copy-on-write снапшотов памяти вместо холодного запуска каждой VM.
Ключевые возможности:
- Forking от прогретого родителя — дочерние окружения наследуют уже загруженные импорты, зависимости, JIT-состояние, веса моделей и кэши
- KVM-изолированные microVM — каждый дочерний sandbox работает как отдельный процесс Firecracker с собственной изоляцией
- Live BRANCH — можно поставить работающий sandbox на паузу, снять снапшот состояния «на лету» и продолжить выполнение. Для v0.4 заявлено p50-окно паузы исходного окружения 56 мс
- Цепочки diff-снапшотов — можно накладывать runtime-слои вроде numpy → pandas → sklearn без повторного копирования одного и того же базового образа
- Удобная daemon-поверхность — REST API, Python/TypeScript/MCP-клиенты, метрики Prometheus, JSON audit log и поддержка systemd
Проект open-source и распространяется под лицензией Apache License 2.0.
Ссылка в ответе 👇
https://github.com/deeplethe/forkd
❤4👍3🔥2🖕1
Это пошаговый маршрут изучения Linux с упором на практику. Каждый раздел содержит объяснение «почему это устроено именно так», разбор команд и обязательные задания, которые нужно выполнить руками в терминале. Чтение без повторения навыка не даёт — держите терминал открытым рядом с этим текстом.
Как работать с этим курсом: идите сверху вниз, не перепрыгивайте разделы; каждую команду набирайте руками, а не копируйте; в конце каждого блока выполняйте задание; специально ломайте систему в виртуалке и чините — это лучший способ учиться.
https://github.com/justxor/linuxfullroadmap/
Please open Telegram to view this post
VIEW IN TELEGRAM
💊9👍6🥰4🔥1🤔1👀1
Microsoft/windows-rs сравнил overhead WinRT language projections: Rust, C++ и C# вызывают один и тот же компонент через одинаковый ABI.
Результат грутсный для C#:
• Rust почти везде впереди.
• C++ близко.
• C# заметно отстаёт .
Особенно грустно выглядит на сценариях с активацией объектов, marshaling, QueryInterface и обработкой ошибок.
Native AOT тоже не спасает: он может улучшать startup, но не превращает C# в zero-overhead projection для таких вызовов.
Repo:
https://github.com/microsoft/windows-rs/blob/master/crates%2Fsamples%2Flang_perf%2Freadme.md
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤7👍4
Предрелизное тестирование 1.96.1
#rustlang #rust
https://blog.rust-lang.org/inside-rust/2026/06/27/1.96.1-prerelease/
#rustlang #rust
https://blog.rust-lang.org/inside-rust/2026/06/27/1.96.1-prerelease/
🔥5❤4👍3
Вышел Rust 1.96.1
Что исправили:
• проблемы с retry и timeout в HTTP-клиенте Cargo
• miscompilation в MIR-оптимизации
• три CVE в libssh2, который используется внутри Cargo
Обновление стандартное:
rustup update stable
Патч на стабильность и улучшение безопасности.
rustup update stable
https://blog.rust-lang.org/2026/06/30/Rust-1.96.1/
Что исправили:
• проблемы с retry и timeout в HTTP-клиенте Cargo
• miscompilation в MIR-оптимизации
• три CVE в libssh2, который используется внутри Cargo
Обновление стандартное:
rustup update stable
Патч на стабильность и улучшение безопасности.
rustup update stable
https://blog.rust-lang.org/2026/06/30/Rust-1.96.1/
👍12❤9🔥6👏1