Rust
9.23K subscribers
575 photos
50 videos
3 files
1.1K links
Rust programming language

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

#VRHSZ
Download Telegram
Основатель CentOS и Rocky Linux представил Linux-совместимое ядро Ginux, написанное на Rust

Грегори Курцер (Gregory Kurtzer), основатель дистрибутивов CentOS и Rocky Linux, представил проект Ginux, развивающий ядро операционной системы на языке Rust, нацеленное на достижение совместимости с ядром Linux. Опубликованный исследовательский прототип уже способен загрузить системное окружение дистрибутивов Alpine с BusyBox и Rocky Linux 10 с systemd в многопользовательском консольном режиме. Код проекта распространяется под лицензией Apache 2.0. Поддерживается работа на системах с архитектурой x86-64.

Полный текст:
https://opennet.ru/66562/
https://opennet.iss.one/66562/
👍26❤11💅5😁3🤣3❤‍🔥2🤔2
This media is not supported in your browser
VIEW IN TELEGRAM
⚡ Minecraft переписывают на Rust: Horizon - альтернативный клиент с открытым кодом.

Проект воссоздаёт Minecraft: Java Edition 26.3: от генерации мира и физики до интерфейса, звука и сетевой игры. Доступен для Windows, Linux и Mac на Apple Silicon.

По заявлениям разработчиков, совместимость с оригиналом проверяется 281 набором сравнительных тестов. Клиент подключается к ванильным серверам, поддерживает сохранения и перенос совместимых модов из сборок Modrinth и CurseForge.

В сети распространяются демонстрации высокой производительности на слабых компьютерах. Однако обещать всем 60 FPS и мгновенную загрузку чанков нельзя: результат зависит от железа, настроек и конкретной сцены.

Как попробовать:

1. Установите свою лицензионную Minecraft: Java Edition через официальный лаунчер и один раз запустите версию 26.3.
2. Скачайте лаунчер Horizon и установите доступный релиз.
3. Подготовьте ресурсы из установленной копии игры и запускайте клиент.

Horizon – независимый проект, не связанный с Mojang и Microsoft. Код распространяется под MIT, файлы самой Minecraft в комплект не входят.

https://playhorizon.dev/
❤27👍19🤝1
Переписал GPU-вычисления на Rust и ускорил обработку в десятки раз. Но часть работы не окупилась

Провин Перера рассказал, как за три недели перевёл speakrs с ONNX Runtime на собственные GPU-ядра, написанные на Rust с помощью NVIDIA cuda-oxide.

Библиотека занимается диаризацией речи: определяет, кто и когда говорит в аудиозаписи.

По замерам автора на RTX 4090, после всех изменений:

- VoxConverse dev: 1236 → 38 секунд.
- Earnings-21: 2692 → 75 секунд.
- Ошибка диаризации, DER, осталась прежней.

Однако отказ от ONNX Runtime сам по себе дал ускорение в 1,81 раза. Остальной прирост нельзя приписывать одной замене рантайма.

А вот замена cuDNN и cuBLAS собственными ядрами, по оценке автора, преимущественно не оправдала усилий. Библиотеки NVIDIA оптимизированы под множество GPU, а свои реализации приходилось отдельно настраивать под A100, T4 и RTX 5090. H100 пока осталась без настройки.

Бонус полного отказа от этих библиотек - GPU-контейнер примерно на 2 ГБ меньше.

Большую часть ядер написали ИИ-агенты. Автор задавал цели, измерял результат и решал, что принимать. Пять дней ушли на сложную систему проверок, принёсшую один PR. После перехода к простой сквозной проверке за восемь часов удалось внедрить больше изменений.

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

https://avencera.com/
👍12❤5🔥5🤔3⚡1🥰1
Два месяца оптимизаций Rust-кода. А самое большое ускорение дало знание того, как устроен Linux.

Гийом Гомес, разработчик sysinfo, добавил сбор данных об использовании GPU отдельными процессами. Обновление информации резко замедлилось: приходилось обходить открытые файловые дескрипторы и искать подключения к видеокарте.

Дальше началась оптимизация:

- Работа с байтами вместо строк - примерно на 20% меньше инструкций.
- Замена Vec структурой в одном парсере - около 6%.
- fstatat вместо readlink - около 8%.
- Повторное использование буферов - на 79% меньше выделенных байтов, но без ускорения.

Перелом случился после чтения исходников htop: потоки обычно разделяют таблицу файловых дескрипторов своего процесса.

Значит, обходить одну и ту же таблицу для каждого потока незачем. Если она общая, достаточно скопировать GPU-данные процесса.

В замерах автора время выполнения сократилось с 0,31 до 0,11 секунды - примерно на 64%, а число инструкций упало на 65%.

Есть нюанс: поток может отделить свою таблицу. Проверить, общая ли она, позволяет kcmp.

Цифры получены на машине автора и зависят от нагрузки.

https://blog.guillaume-gomez.fr/
🔥14❤12
❤48😁35🤣9💯3💊2
Показываешь ИИ чужой сайт или приложение, а он разбирается, как всё работает, и собирает свою версию

На GitHub появился Craft Anything - open-source инструмент на Rust, объединяющий реверс-инжиниринг и AI-разработку.

Работает довольно интересно. Указываешь сайт, десктопное приложение или игру и описываешь, что хочешь воспроизвести.

Система исследует оригинал, передаёт результаты coding-агенту, собирает новый проект и сравнивает его с исходным. Если обнаруживает расхождения, запускает следующую итерацию исправлений.

Внутри целый движок реверс-инжиниринга с более чем 300 инструментами. Поддерживаются анализ бинарников, .NET, Java, Android, Electron, JavaScript и игровых файлов.

Есть два режима. Clean Room изучает только внешнее поведение и интерфейс, не читая исходники. Deep позволяет исследовать внутреннее устройство программы, включая дизассемблирование и декомпиляцию.

Все инструменты доступны через CLI и MCP. Для генерации кода используется прежде всего Claude Code.

Например, можно попросить агента воссоздать интерфейс сайта, а затем проверить результат на трёх размерах экрана.

Проект пока в ранней альфе: часть проверок и интеграций ещё экспериментальная.

Интересная идея для coding-агентов: вместо попытки угадать устройство программы по скриншоту сначала собрать реальные данные о её работе, а затем писать код.

https://github.com/storytold/craft-anything
🔥22🤔9🤬6👀4🖕3🥰1
✔️ Google переписала 40-летний код с Fortran на Rust за 59 минут с помощью ИИ

Инженеры Google дали Gemini 4 Argon через Antigravity научную модель океана FVCOM. В исходном проекте было 174 тысячи строк Fortran и C, накопленных за десятилетия.

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

Результаты эксперимента:

- 59 минут на миграцию основного вычислительного ядра.
- Ускорение симуляции в 1,88 раза.
- Потребление памяти снизилось на 54%.
- Обнаружено 6 старых ошибок, включая переполнения и выходы за границы массивов.
- 96,8% покрытия ветвей тестами.
- Численные результаты совпали с оригиналом до 12 знаков после запятой на 100 тестовых сценариях.

В новом коде полностью запретили unsafe. Для ускорения агент убрал лишние выделения памяти внутри циклов, переработал структуры данных и применил LLVM PGO.

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

Google выложила использованный workflow в виде открытого skill для Antigravity. Запуск миграции выглядит так:

/migrate-to-rust <github-repo-url>

https://antigravity.google/blog/modernizing-40-year-old-scientific-code-with-gemini-4-argon

@data_analysis_ml

#rust #Google #Argon
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥45😁10👍6🥱6❤4🤔1🖕1
Borrow Checker Needs Source
🔥15👍4❤3
Discord переписывают на Rust. Electron отправляют на пенсию

Технический директор Discord Станислав Вишневский подтвердил, что компания разрабатывает новый клиент на Rust, полностью отказываясь от Electron на десктопе и React Native на мобильных устройствах.

Вместо Electron разработчики используют GPUI, нативный UI-фреймворк на Rust с GPU-ускорением. Мобильные приложения сохранят нативный интерфейс, но будут использовать общую с десктопом логику на Rust.

Тестовый клиент Discord Phoenix потребляет всего 290,2 МБ оперативной памяти. Для сравнения, нынешний Discord у некоторых пользователей занимает 1-2 ГБ и больше. Правда, полноценного сравнительного тестирования пока нет.

Discord использует Rust ещё с 2018 года: на нём уже работают части инфраструктуры, голосовые технологии и отдельные компоненты клиента.

Новая версия должна сохранить привычный интерфейс, но стать быстрее и экономнее по памяти. Пользовательское тестирование планируют начать скоро, точной даты релиза пока нет.

Источник: https://x.com/svishnevskiy/status/2118081920194203799
🔥51❤13👍5
Nitpicky Rust Compiler
🤣55👍6🥰6❤1
Rust, который наконец становится понятным 🦀

Давно хочешь выучить Rust, но ownership, borrowing и lifetimes выглядят как отдельный вид боли?

Этот курс проведёт тебя с самого начала до уровня, где ты уже пишешь реальные системные и сетевые программы.

Ты разберёшь:
Ownership → Borrowing → ошибки → коллекции → Generics → Traits → модули → тесты → сетевой код

Никакого бесконечного чтения документации. После каждого урока ты сразу пишешь код, проходишь тесты и решаешь задачу с автопроверкой.

🔥 Rust с нуля
🔥 5–6 часов в неделю
🔥 Практика после каждого урока
🔥 Подойдёт после Python, JavaScript, Java и других языков
🔥 Можно начать сразу

В конце у тебя будет понимание Rust, с которым уже можно писать быстрые backend-сервисы, сетевые приложения и системные утилиты, а не смотреть на borrow checker как на врага.

Пора добавить Rust в свой стек. Начинай курс и пиши первый код уже сегодня: https://stepik.org/a/294885/
🗿12❤5👍1🥰1
Задача на Rust с подвохом: палиндром после одного удаления

Дана строка s. Нужно определить, можно ли удалить ровно один символ, чтобы оставшаяся строка стала палиндромом.

При этом строка может содержать Unicode, а удалять разрешается именно один char, а не один байт.


fn can_be_palindrome_after_one_deletion(s: &str) -> bool {
// Ваш код
}

fn main() {
assert!(can_be_palindrome_after_one_deletion("racecar"));
assert!(can_be_palindrome_after_one_deletion("абвба"));
assert!(can_be_palindrome_after_one_deletion("abca"));
assert!(!can_be_palindrome_after_one_deletion("abcdef"));
}


Условия:

Строка может быть уже палиндромом, но удалить один символ всё равно обязательно.

Использовать s.as_bytes() для сравнения символов нельзя, поскольку один Unicode-символ может занимать несколько байт.

Желательная сложность решения: O(n) по времени.

Подвох в том, что обычная проверка палиндрома двумя указателями здесь недостаточна. Нужно правильно обработать первое несовпадение и случай, когда исходная строка уже симметрична.

Как бы вы решили эту задачу на Rust без перебора всех возможных удалений?
❤2🥴2🔥1🥰1🥱1🖕1
Rust может научиться автоматически стирать секреты из памяти при выходе из функции

В Rust предложили новую атрибуцию #[zeroize_on_return], которая должна решить одну из неприятных проблем системного и криптографического программирования: остатки секретных данных в памяти после завершения функции.

Сейчас разработчики используют библиотеку zeroize, чтобы вручную очищать пароли, ключи шифрования и другие чувствительные данные. Но есть проблема: компилятор может создавать дополнительные копии значений в регистрах и стеке, которые обычная очистка не затрагивает.

Новая идея предполагает, что компилятор будет самостоятельно очищать:

- Локальные данные в стеке функции.
- Временные копии и spill slots, созданные при генерации машинного кода.
- Остаточные значения в регистрах процессора.

Предлагаемый синтаксис:


#[zeroize_on_return]
pub fn process_secret(
key: &Key,
input: &[u8],
) -> Output {
// Работа с секретными данными
}


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

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

Предложение пока находится на стадии Pre-Pre-RFC. Это обсуждение концепции, а не готовая возможность стабильного Rust.

Если идею реализуют, это станет серьёзным шагом для криптографических библиотек, систем аутентификации и приложений, работающих с конфиденциальными данными.

Обсуждение: https://internals.rust-lang.org/t/pre-pre-rfc-zeroize-on-return-for-function-boundary-zeroization/24796
❤38👍21🔥10🤯1
Media is too big
VIEW IN TELEGRAM
⚠️ База тормозит. Вы открываете мониторинг — уже все в норме. Короткий инцидент не попал на графики. Причина неясна, и непонятно, что исправлять, чтобы задержки не вернулись.

🖥 Postgres Pro Enterprise Manager (PPEM) объединяет мониторинг, диагностику и администрирование БД в одном интерфейсе:

📊 Active Session Engine помогает найти причину по истории активных сессий и ожиданий.

🔎 HealthCheck Advisor анализирует нагрузку и дает рекомендации по устранению проблем.

🤖 ИИ-ассистент Ask Postgres дает советы по диагностике и администрированию.

🎙 Приходите 12 ноября на бесплатный вебинар Postgres Professional за подробностями. Эксперты покажут PPEM в работе и проведут демо управления отказоустойчивыми кластерами.

🗓 12 ноября, четверг, 11:00

👉 Регистрируйтесь, участие бесплатное.
❤2🔥2😡2😍1
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Rust не даст тебе написать плохой код: 4 ошибки, которые ловит компилятор

Висячая ссылка, забытый вариант в match, null и гонка данных между потоками. В C и C++ такие баги находят пользователи, а Rust останавливает сборку и показывает ошибку ещё до первого запуска.

Запускаем полный бесплатный курс по Rust для новичков: https://www.youtube.com/playlist?list=PLS7ref2UKTvQ

1 урок Урок 1: введение, установка и первая программа : https://youtu.be/98KlcWVYiXw

2 урок Переменные и типы в Rust: почему x = 6 не скомпилируется: https://youtu.be/7phhK4G02ws
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤1👍1🥰1🤣1🖕1🗿1😡1
🔐 Кто подключён к твоему Wi-Fi и насколько сложно подобрать пароль?

Airgorah - открытый инструмент для аудита беспроводных сетей с графическим интерфейсом. Написан на Rust, работает на Linux.

В одном приложении можно:

• Найти точки доступа и подключённые устройства.
• Захватить Wi-Fi-трафик.
• Проверить устойчивость клиентов к принудительному отключению.
• Перехватить handshake или PMKID и проверить пароль подбором.

Для работы нужен Wi-Fi-адаптер с поддержкой monitor mode и packet injection. Стойкий пароль не становится уязвимым просто от того, что удалось перехватить handshake.

Подойдёт для домашней лаборатории и проверки сетей, на аудит которых у вас есть разрешение.

💻 https://github.com/martin-olivier/airgorah
👍15❤5🔥3
0 DAYS SINCE THE LAST RUST REWRITE
😁45🔥4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥59❤11👍7🎉1