Forwarded from Golang
🔥 Большой гайд по миграции с Go на Rust
Для разработчиков переход обычно упирается не в скорость, а в гарантии корректности, runtime trade-offs и ergonomics.
Внутри подробно сравниваются:
interfaces → traits
goroutines → async/await
Отдельно хорошо показано, где Rust действительно выигрывает: data races, lifetime ресурсов, typed errors, отсутствие GC-пауз и более жёсткие гарантии компилятора.
Но автор не агитирует переписывать всё подряд: для большинства backend-сервисов Go остаётся достаточно быстрым и очень удобным.
Rust имеет смысл там, где цена runtime-багов уже выше, чем цена более сложной разработки.
Есть и практический раздел про постепенную миграцию сервисов, а не «rewrite from scratch».
https://corrode.dev/learn/migration-guides/go-to-rust/
@Golang_google
Для разработчиков переход обычно упирается не в скорость, а в гарантии корректности, runtime trade-offs и ergonomics.
Внутри подробно сравниваются:
go build → cargo build go test → cargo test go vet → cargo clippy nil → Option<T> error → Result<T, E> interfaces → traits
goroutines → async/await
-race → compile-time ограничения через Send / SyncОтдельно хорошо показано, где Rust действительно выигрывает: data races, lifetime ресурсов, typed errors, отсутствие GC-пауз и более жёсткие гарантии компилятора.
Но автор не агитирует переписывать всё подряд: для большинства backend-сервисов Go остаётся достаточно быстрым и очень удобным.
Rust имеет смысл там, где цена runtime-багов уже выше, чем цена более сложной разработки.
Есть и практический раздел про постепенную миграцию сервисов, а не «rewrite from scratch».
https://corrode.dev/learn/migration-guides/go-to-rust/
@Golang_google
👏11😁9❤3👍3
Участвуй во всероссийском ИТ-чемпионате МТС True Tech Champ 2026 c призовой фондом 10 250 000 рублей.
Если тебе нравятся алгоритмы, структуры данных и задачи на чистую логику — участвуй в алгоритмическом треке с индивидуальным зачетом.
Решай задачи разного уровня сложности: от базовых до тех, что проверяют скорость мышления и умение оптимизировать решения за ограниченное время.
В финале лучшие 120 участников алгоритмического трека сразятся в лайв-кодинге за шесть призовых мест и 2 750 000 рублей. Всех финалистов ждут:
— Лимитированный мерч;
— Сертификаты об участии;
— Масштабное мероприятие с выступлениями хэдлайнеров и фестивальными активностями.
Успей зарегистрироваться и пройти отборочный этап до 27 сентября.
Erid: 2VSb5xSd2i6
Если тебе нравятся алгоритмы, структуры данных и задачи на чистую логику — участвуй в алгоритмическом треке с индивидуальным зачетом.
Решай задачи разного уровня сложности: от базовых до тех, что проверяют скорость мышления и умение оптимизировать решения за ограниченное время.
В финале лучшие 120 участников алгоритмического трека сразятся в лайв-кодинге за шесть призовых мест и 2 750 000 рублей. Всех финалистов ждут:
— Лимитированный мерч;
— Сертификаты об участии;
— Масштабное мероприятие с выступлениями хэдлайнеров и фестивальными активностями.
Успей зарегистрироваться и пройти отборочный этап до 27 сентября.
Erid: 2VSb5xSd2i6
🥱2😐2👍1
🦀 Rust Pinning без магии: `Pin`, `Unpin` и `Future::poll`
Одна из самых сложных тем в Rust - зачем вообще нужен
Хороший разбор строит механизм буквально с нуля и связывает его с тем, что реально встречается в async Rust:
- как работает
- что означает
- почему self-referential структуры опасны
- при чём здесь
- почему
Главная идея: некоторые значения после начала использования должны оставаться по одному адресу в памяти, иначе внутренние ссылки могут стать невалидными.
Особенно полезно тем, кто пользуется
https://gmcgoldr.github.io/2026/08/27/pin-in-rust.html
Одна из самых сложных тем в Rust - зачем вообще нужен
Pin и почему некоторые значения нельзя просто перемещать в памяти.Хороший разбор строит механизм буквально с нуля и связывает его с тем, что реально встречается в async Rust:
- как работает
Pin- что означает
Unpin- почему self-referential структуры опасны
- при чём здесь
Future- почему
Future::poll принимает Pin<&mut Self>Главная идея: некоторые значения после начала использования должны оставаться по одному адресу в памяти, иначе внутренние ссылки могут стать невалидными.
Особенно полезно тем, кто пользуется
async/await, но до конца не понимает, что происходит под капотом.https://gmcgoldr.github.io/2026/08/27/pin-in-rust.html
❤15👍7🥰1
🦀 NVIDIA официально идёт в native GPU programming на Rust
Теперь CUDA Rust позволяет писать GPU kernels прямо на Rust и компилировать их в PTX - без необходимости держать kernel-код на C++ или другом языке.
NVIDIA развивает сразу два подхода:
SIMT через `cuda-oxide`
- привычная CUDA-модель: один thread → одна операция
- полный контроль над потоками и памятью
- custom
- memory safety проверяется на этапе компиляции
Tile через `cutile-rs`
- работа не с отдельными потоками, а с блоками данных
- компилятор сам решает, как разложить вычисления по GPU
- stable Rust 1.89+
- CUDA 13.3
- уже используется в Hugging Face Grout и
Ownership и типы позволяют ловить часть GPU race conditions и aliasing-ошибок ещё до запуска kernel.
NVIDIA прямо пишет, что в 2026 году начинает всерьёз развивать CUDA Rust и планирует наращивать поддержку в 2027+.
Пока оба проекта ранние и не production-ready, но направление очень показательное:
https://developer.nvidia.com/blog/introducing-cuda-rust-two-tracks-for-writing-gpu-kernels/
Теперь CUDA Rust позволяет писать GPU kernels прямо на Rust и компилировать их в PTX - без необходимости держать kernel-код на C++ или другом языке.
NVIDIA развивает сразу два подхода:
SIMT через `cuda-oxide`
- привычная CUDA-модель: один thread → одна операция
- полный контроль над потоками и памятью
- custom
rustc backend → MIR → LLVM → PTX- memory safety проверяется на этапе компиляции
Tile через `cutile-rs`
- работа не с отдельными потоками, а с блоками данных
- компилятор сам решает, как разложить вычисления по GPU
- stable Rust 1.89+
- CUDA 13.3
- уже используется в Hugging Face Grout и
mistral.rs Ownership и типы позволяют ловить часть GPU race conditions и aliasing-ошибок ещё до запуска kernel.
NVIDIA прямо пишет, что в 2026 году начинает всерьёз развивать CUDA Rust и планирует наращивать поддержку в 2027+.
Пока оба проекта ранние и не production-ready, но направление очень показательное:
`Rust → native GPU kernels → PTX → CUDA`https://developer.nvidia.com/blog/introducing-cuda-rust-two-tracks-for-writing-gpu-kernels/
🔥60❤10👍1
Rust без аллокатора: `fff` снизил пиковое потребление памяти через `mmap`
Во время тестирования
Причиной оказался аллокатор, который мог резервировать лишнюю память при работе с крупными буферами.
Теперь на Unix-системах
* рассчитывает точный объём памяти
* округляет его до размера системной страницы
* создаёт приватное анонимное отображение
* работает с данными через
* освобождает память вызовом
На остальных платформах по-прежнему используется обычный
В результате
Во время тестирования
fff обнаружилось, что при создании большого Vec<u64> процесс потребляет заметно больше оперативной памяти, чем требуется для индекса.Причиной оказался аллокатор, который мог резервировать лишнюю память при работе с крупными буферами.
Теперь на Unix-системах
fff выделяет память напрямую через mmap:* рассчитывает точный объём памяти
* округляет его до размера системной страницы
* создаёт приватное анонимное отображение
* работает с данными через
*mut u64* освобождает память вызовом
munmapНа остальных платформах по-прежнему используется обычный
Vec<u64>.В результате
fff запрашивает у ядра ровно столько страниц, сколько необходимо для хранения и обработки индекса.🔥26❤5👍4
🦀 Как доказать, что Rust-код работает правильно: Amazon рассказывает о Verus
Rust предотвращает многие ошибки работы с памятью, но программа всё ещё может вернуть неверный результат. Verus позволяет проверить, что реализация соответствует формально заданным требованиям для всех допустимых входных данных.
Разработчик описывает прямо в исходниках:
*
*
* Инварианты циклов и вспомогательные доказательства.
Дальше Verus автоматически проверяет доказательство, а разработчик при необходимости помогает ему.
В статье есть показательный пример с бинарным поиском. Недостаточно потребовать: «Если вернулся индекс, по нему находится нужный элемент». Такому условию соответствует функция, которая всегда возвращает
Нужно добавить второе требование: если вернулся `None`, искомого элемента действительно нет в массиве.
Amazon уже использует Verus для проверки ключевых примитивов Nitro Isolation Engine, отвечающего за изоляцию виртуальных машин. Инструмент также позволяет доказывать свойства конкурентного кода и безопасность поддерживаемых конструкций
Гарантии относятся к заданной спецификации и принятым допущениям: полнота самих требований остаётся ответственностью разработчика.
📖 https://www.amazon.science/blog/developing-provably-correct-rust-code-with-verus
#Rust #Разработка #FormalVerification
Rust предотвращает многие ошибки работы с памятью, но программа всё ещё может вернуть неверный результат. Verus позволяет проверить, что реализация соответствует формально заданным требованиям для всех допустимых входных данных.
Разработчик описывает прямо в исходниках:
*
requires - условия перед выполнением функции.*
ensures — свойства результата.* Инварианты циклов и вспомогательные доказательства.
Дальше Verus автоматически проверяет доказательство, а разработчик при необходимости помогает ему.
В статье есть показательный пример с бинарным поиском. Недостаточно потребовать: «Если вернулся индекс, по нему находится нужный элемент». Такому условию соответствует функция, которая всегда возвращает
None.Нужно добавить второе требование: если вернулся `None`, искомого элемента действительно нет в массиве.
Amazon уже использует Verus для проверки ключевых примитивов Nitro Isolation Engine, отвечающего за изоляцию виртуальных машин. Инструмент также позволяет доказывать свойства конкурентного кода и безопасность поддерживаемых конструкций
unsafe.Гарантии относятся к заданной спецификации и принятым допущениям: полнота самих требований остаётся ответственностью разработчика.
📖 https://www.amazon.science/blog/developing-provably-correct-rust-code-with-verus
#Rust #Разработка #FormalVerification
Amazon Science
Developing provably correct Rust code with Verus
How the Verus "program verifier", which automatically checks code against a mathematical specification of its functionality, helps increase security assurance in software projects.
🔥11❤9👍1
🦀 Qt открывает Rust полноценный путь к кроссплатформенному UI
Qt представила Qt Bridge for Rust = слой, который позволяет писать логику приложения на Rust и напрямую подключать её к Qt Quick/QML без ручного FFI и C++-кода в проекте.
Что это даёт:
- Rust для application logic;
- QML для интерфейса;
- hardware acceleration;
- Linux, macOS и Windows;
- безопасный Rust API;
- интеграцию через привычные
Под капотом bridge генерирует Qt-обёртки для Rust-типов на этапе компиляции, поэтому их можно использовать прямо из QML.
Сейчас Rust Bridge находится в public beta. Пока для сборки всё ещё нужен C++ toolchain и
По сути, Qt предлагает Rust-разработчикам зрелый UI-стек вместо необходимости ждать, пока нативные Rust GUI-фреймворки догонят Qt по возможностям.
Статья: https://www.qt.io/blog/rust-ui-framework-via-bridging-technology
Qt представила Qt Bridge for Rust = слой, который позволяет писать логику приложения на Rust и напрямую подключать её к Qt Quick/QML без ручного FFI и C++-кода в проекте.
Что это даёт:
- Rust для application logic;
- QML для интерфейса;
- hardware acceleration;
- Linux, macOS и Windows;
- безопасный Rust API;
- интеграцию через привычные
struct, traits и attribute macros.Под капотом bridge генерирует Qt-обёртки для Rust-типов на этапе компиляции, поэтому их можно использовать прямо из QML.
Сейчас Rust Bridge находится в public beta. Пока для сборки всё ещё нужен C++ toolchain и
qmake, но пользовательский код при этом остаётся полностью без C++.По сути, Qt предлагает Rust-разработчикам зрелый UI-стек вместо необходимости ждать, пока нативные Rust GUI-фреймворки догонят Qt по возможностям.
Статья: https://www.qt.io/blog/rust-ui-framework-via-bridging-technology
❤48👍25🔥23🤨6🥴2🥰1
ИИ-агенты могут разгонять Rust-код быстрее SOTA-библиотек
Макс Вулф провёл серию экспериментов с Claude, Codex и GPT-6 Astra, заставляя агентов не просто писать код, а итеративно оптимизировать его по бенчмаркам, пока ускорение не перестанет расти.
Схема простая:
- фиксируем baseline;
- ставим измеримую цель, например минимум +20% скорости;
- после каждого изменения запускаем
- запрещаем
- отдельно проверяем качество результата;
- подключаем несколько subagents для поиска альтернативных оптимизаций.
Результаты получились серьёзные.
Rust-реализация UMAP оказалась:
- в 4-15 раз быстрее `umap-learn`
- в 2-4 раза быстрее `umap-rs`
- суммарное ускорение относительно первоначальной реализации достигало 7,5-32x
Но есть важный нюанс: агенты умеют читерить.
В одном из экспериментов Claude показал ускорение в 34 500 раз, просто отключив физический движок.
Поэтому для таких систем критически нужны:
- benchmark-gates;
- regression-тесты;
- quality-checks;
- жёсткие ограничения на допустимые изменения.
https://minimaxir.com/2026/09/agentic-iteration/
Макс Вулф провёл серию экспериментов с Claude, Codex и GPT-6 Astra, заставляя агентов не просто писать код, а итеративно оптимизировать его по бенчмаркам, пока ускорение не перестанет расти.
Схема простая:
- фиксируем baseline;
- ставим измеримую цель, например минимум +20% скорости;
- после каждого изменения запускаем
criterion;- запрещаем
unsafe и манипуляции с тестами;- отдельно проверяем качество результата;
- подключаем несколько subagents для поиска альтернативных оптимизаций.
Результаты получились серьёзные.
Rust-реализация UMAP оказалась:
- в 4-15 раз быстрее `umap-learn`
- в 2-4 раза быстрее `umap-rs`
- суммарное ускорение относительно первоначальной реализации достигало 7,5-32x
Но есть важный нюанс: агенты умеют читерить.
В одном из экспериментов Claude показал ускорение в 34 500 раз, просто отключив физический движок.
Поэтому для таких систем критически нужны:
- benchmark-gates;
- regression-тесты;
- quality-checks;
- жёсткие ограничения на допустимые изменения.
https://minimaxir.com/2026/09/agentic-iteration/
🔥21❤9😁6🥰2🥱2💯1🍌1
🦀 Rust 1.99 научился определять C-совместимые variadic-функции
Теперь в стабильном Rust можно писать функции с
Раньше Rust умел вызывать такие C-функции, например
Что появилось:
-
-
-
- поддержка
Особенно полезно для FFI, системного кода и библиотек, которые должны экспортировать C API.
Фича стабилизирована в Rust 1.99.0, релиз вышел 1 октября.
blog.rust-lang.org/2026/10/01/Rust-1.99.0/
Теперь в стабильном Rust можно писать функции с
extern "C" и переменным числом аргументов через ....Раньше Rust умел вызывать такие C-функции, например
printf, а теперь их можно реализовывать прямо на Rust.Что появилось:
-
extern "C" fn(... )-
VaList, ABI-совместимый с C va_list-
VaArgSafe для контроля типов аргументов- поддержка
C-unwindОсобенно полезно для FFI, системного кода и библиотек, которые должны экспортировать C API.
Фича стабилизирована в Rust 1.99.0, релиз вышел 1 октября.
rustup update stableblog.rust-lang.org/2026/10/01/Rust-1.99.0/
🔥37❤20🥰4
Выпуск Rust 1.99.0. Microsoft перевёл Rust в число первичных языков
Опубликован релиз языка программирования Rust 1.99, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Подробнее:
https://opennet.ru/66386/
https://opennet.iss.one/66386/
Опубликован релиз языка программирования Rust 1.99, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Подробнее:
https://opennet.ru/66386/
https://opennet.iss.one/66386/
❤31👍16🔥7😱1
Forwarded from C# (C Sharp) programming
Одна задача, три языка: Rust, C# или C++?
В курсе Google *Comprehensive Rust* есть упражнение: найти длину трёхмерного вектора, а затем нормализовать его. Формула одна:
На скриншотах хорошо видна разница в стиле:
- Rust:
- C#:
- C++:
Для тех, кто пишет на C#: Rust
Чей вариант вам понятнее с первого взгляда?
@csharp_ci
В курсе Google *Comprehensive Rust* есть упражнение: найти длину трёхмерного вектора, а затем нормализовать его. Формула одна:
√(x² + y² + z²). После этого каждую координату делим на полученную длину.На скриншотах хорошо видна разница в стиле:
- Rust:
iter().fold() собирает сумму квадратов, iter_mut() меняет координаты.- C#:
ReadOnlySpan для чтения, Span для изменения и обычный foreach.- C++:
std::vector, цикл по значениям для расчёта и по ссылкам для изменения.Для тех, кто пишет на C#: Rust
fold(0.0, ...) по смыслу близок к LINQ Aggregate(0.0, ...): оба сворачивают последовательность в одно значение через аккумулятор.Чей вариант вам понятнее с первого взгляда?
@csharp_ci
❤10🔥7👍2
🦀 Rust дайджест за неделю: новый релиз, быстрее компилятор и собственные зелёные потоки
⚡ Rust 1.99.0 вышел
Теперь можно писать функции с переменным числом аргументов и C ABI прямо на Rust. Стабилизированы
https://blog.rust-lang.org/2026/10/01/Rust-1.99.0/
🔢 Const generics получают новый дизайн
На nightly развивается Generic Const Arguments, будущая замена
https://blog.rust-lang.org/inside-rust/2026/10/02/generic-const-args-and-you/
🧵 Зелёные потоки своими руками
Учебный runtime менее чем в 1000 строк: собственные стеки, сохранение регистров и переключение контекста на ARM64. Отличный разбор того, как несколько задач делят потоки ОС.
https://dzania.github.io/green-threads-from-scratch/
🚀 Ускорение rustc становится работой на полный день
Ник Нетеркоут присоединился к Hexcat для оптимизации компилятора. За предыдущие два месяца команда сократила среднее время компиляции в бенчмарках на 4,57%.
https://nnethercote.github.io/2026/09/30/how-to-speed-up-the-rust-compiler-in-september-2026.html
📟 Rust без операционной системы
Embassy позволяет запускать `async`-задачи прямо на микроконтроллерах, без традиционной RTOS. Таймеры, сеть, USB и работа с периферией уже входят в экосистему.
https://github.com/embassy-rs/embassy
🤖 Rustler запустил MCP-сервер
Поиск Rust-вакансий, репозиториев, issues и событий прямо из Claude, Cursor и других MCP-клиентов.
https://mcp.rustler.in/mcp/
⚡ Rust 1.99.0 вышел
Теперь можно писать функции с переменным числом аргументов и C ABI прямо на Rust. Стабилизированы
Vec::into_parts и Vec::from_parts для работы с буфером вектора.https://blog.rust-lang.org/2026/10/01/Rust-1.99.0/
🔢 Const generics получают новый дизайн
На nightly развивается Generic Const Arguments, будущая замена
generic_const_exprs. Больше возможностей для выражений с generic-параметрами, но пока с ограничениями: арифметика вроде N + 1 ещё не поддерживается в gca!.https://blog.rust-lang.org/inside-rust/2026/10/02/generic-const-args-and-you/
🧵 Зелёные потоки своими руками
Учебный runtime менее чем в 1000 строк: собственные стеки, сохранение регистров и переключение контекста на ARM64. Отличный разбор того, как несколько задач делят потоки ОС.
https://dzania.github.io/green-threads-from-scratch/
🚀 Ускорение rustc становится работой на полный день
Ник Нетеркоут присоединился к Hexcat для оптимизации компилятора. За предыдущие два месяца команда сократила среднее время компиляции в бенчмарках на 4,57%.
https://nnethercote.github.io/2026/09/30/how-to-speed-up-the-rust-compiler-in-september-2026.html
📟 Rust без операционной системы
Embassy позволяет запускать `async`-задачи прямо на микроконтроллерах, без традиционной RTOS. Таймеры, сеть, USB и работа с периферией уже входят в экосистему.
https://github.com/embassy-rs/embassy
🤖 Rustler запустил MCP-сервер
Поиск Rust-вакансий, репозиториев, issues и событий прямо из Claude, Cursor и других MCP-клиентов.
https://mcp.rustler.in/mcp/
❤15