Rust
8.92K subscribers
541 photos
46 videos
3 files
1.07K links
Rust programming language

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

#VRHSZ
Download Telegram
Rust без аллокатора: `fff` снизил пиковое потребление памяти через `mmap`

Во время тестирования fff обнаружилось, что при создании большого Vec<u64> процесс потребляет заметно больше оперативной памяти, чем требуется для индекса.

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

Теперь на Unix-системах fff выделяет память напрямую через mmap:

* рассчитывает точный объём памяти
* округляет его до размера системной страницы
* создаёт приватное анонимное отображение
* работает с данными через *mut u64
* освобождает память вызовом munmap

На остальных платформах по-прежнему используется обычный Vec<u64>.

В результате fff запрашивает у ядра ровно столько страниц, сколько необходимо для хранения и обработки индекса.
🔥26❤5👍4
🦀 Как доказать, что Rust-код работает правильно: Amazon рассказывает о Verus

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
🔥11❤9👍1
Как создать пустой vector по-гениальному
😁50🤔5🌚4🏆2
🦀 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;
- интеграцию через привычные 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% скорости;
- после каждого изменения запускаем 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❤10😁6🥰2🥱2💯1🍌1
🦀 Rust 1.99 научился определять C-совместимые variadic-функции

Теперь в стабильном 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 stable

blog.rust-lang.org/2026/10/01/Rust-1.99.0/
🔥38❤21🥰4
Выпуск Rust 1.99.0. Microsoft перевёл Rust в число первичных языков

Опубликован релиз языка программирования Rust 1.99, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Подробнее:
https://opennet.ru/66386/
https://opennet.me/66386/
❤31👍16🔥8😱1
Это не строка
😁61💘8❤3
Forwarded from C# (C Sharp) programming
Одна задача, три языка: Rust, C# или C++?

В курсе 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
❤12🔥10👍3
🦀 Rust дайджест за неделю: новый релиз, быстрее компилятор и собственные зелёные потоки

⚡ 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/
❤20
🦀 mold переписали с C++ на Rust

Вышел mold 3.0, первая Rust-версия быстрого линкера для Unix. Он объединяет скомпилированные части программы в исполняемый файл или библиотеку и помогает сократить ожидание при сборке.

По данным разработчиков, после переписывания скорость осталась на уровне C++-версии. Сохранились параметры командной строки и поддерживаемые архитектуры, а сборка самого mold переехала с CMake на Cargo.

Обработка повреждённых файлов стала безопаснее: обращения за границы памяти теперь проверяются. Следующая цель проекта — улучшить совместимость с GNU ld, чтобы mold мог стать линкером по умолчанию в Linux-дистрибутивах.

https://github.com/rui314/mold
👍13🤣2❤1🤪1😡1