Rust
8.95K subscribers
550 photos
46 videos
3 files
1.08K links
Rust programming language

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

#VRHSZ
Download Telegram
Это не строка
😁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
❤14🔥11👍3🖕1
🦀 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/
❤24🔥5👍2😡1
🦀 mold переписали с C++ на Rust

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

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

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

https://github.com/rui314/mold
👍45❤14🤣8🥰3🤬1🤪1😡1
🦀 Burn 0.22: меньше дженериков, быстрее сборка и почти вдвое меньше VRAM в тесте CNN.

Фреймворк глубокого обучения на Rust убрал параметр бэкенда из пользовательских моделей:


// Было
struct Model<B: Backend> {
linear: Linear<B>,
}

// Стало
struct Model {
linear: Linear,
}


Теперь место и способ выполнения выбираются через Device. Изменение модели затрагивает меньше кода при перекомпиляции.

Пересборка после правки модели в замерах команды:

• CNN: 28,42 → 4,57 с, ускорение в 6,2 раза.
• Transformer: 14,73 → 1 с, ускорение в 14,7 раза.

В тесте обучения CNN на RTX 4050 Laptop, FP32 пропускная способность выросла на 80%, а пиковая VRAM после прогрева снизилась с 956 до 486 МиБ. Для Transformer экономия памяти составила около 18%. Это результаты конкретных тестовых моделей.

Также добавили LoRA и QLoRA, раннюю поддержку экспорта в ONNX, удалённые вычисления и повторное исполнение GPU-графов.

Обновление ломает совместимость API: Candle удалён, NdArray и LibTorch объявлены устаревшими.

https://tracel.ai/blog/release-0.22.0/

@machinelearning_ru
❤29👍8🔥7🥰1💊1
⚡️ Как запретить ошибку в работе с путями ещё до запуска программы?

В Rust путь состоит из разных компонентов: имени папки, корня, . или ... Если функция принимает произвольную строку, ей могут передать .. или абсолютный путь и неожиданно изменить результат объединения.

Автор статьи предлагает выделить обычное имя в отдельный тип NormalComponent. Тогда сигнатура говорит сама за себя:


fn join_normal(&self, name: &NormalComponent) -> AbsPath


Функция принимает только компонент имени, а не любой фрагмент пути. Ошибочный вызов отсекается типами, без россыпи проверок внутри функции. Приём простой: если разные варианты enum дают разные гарантии, иногда полезно представить нужный вариант отдельным типом.

https://www.schneems.com/2026/09/24/a-type-stronger-than-the-sum-of-its-components/
👍9🥰3💊2🔥1
😁37❤3❤‍🔥2
🦀 Что удивляет в C, если первым языком был Rust?

Обычно разработчики переходят от C к Rust. Автор C for Rust Programmers пошёл в обратную сторону и собрал нюансы, которые легко пропустить.

Например, такая функция выглядит как принимающая массив из трёх элементов:


void inspect(char data[3]) {
printf("%zu\n", sizeof(data));
}


Но параметр здесь становится указателем. На платформе с 64-битными указателями увидите 8, а не 3. Длина массива в функцию не передаётся.

Ещё несколько сюрпризов:

• C-строки заканчиваются \0, а strlen() ищет этот байт, проходя по памяти.
• long обычно занимает 64 бита в 64-битных Unix-системах и 32 бита в Windows.
• malloc() может вернуть NULL, а язык не заставит проверить результат.
• Вместо ссылок с проверкой заимствований работают сырые указатели.

Полезное чтение для тех, кто пишет FFI или хочет понять, какие гарантии привычно получает от Rust.

https://bd103.dev/blog/2026-10-07-c-for-rust-programmers/

@rust_code
❤12👍7🤔3🔥2😁1
Forwarded from Data Science. SQL hub
🍃 Добавить реплику MongoDB, не копируя всю базу: что меняет Atlas Infinite

В привычной архитектуре каждый узел replica set хранит полную копию данных. Добавление реплики или изменение размера узла требует перемещения больших объёмов данных.

Atlas Infinite разделяет вычисления и хранение. Узлы выполняют запросы, а общий слой хранения, написанный на Rust, отвечает за журнал, страницы данных и долговечность. Вычислительные ресурсы и хранилище масштабируются независимо.

Самая интересная деталь: два журнала с разными задачами.

• oplog фиксирует логические операции. Запись подтверждается после устойчивого сохранения большинством реплик журнала.
• phylog передаёт физические изменения страниц при checkpoint, сохраняя пакетную обработку WiredTiger.

То есть подтверждение записи отделено от подготовки страниц для чтения.

Новая read replica подключается к общим страницам и догоняет хвост журнала. Ей не нужно сначала копировать всю базу. А данные шифруются на вычислительном узле: общий storage-слой работает с зашифрованным содержимым.

Для приложения сохраняются протокол, драйверы и семантика операций. Меняется инфраструктура под базой. Atlas Infinite пока в public preview.

Хороший разбор для тех, кому интересны внутренности СУБД:

https://muratbuffalo.blogspot.com/2026/10/atlas-infinite-mongodbs-disaggregated.html

@sqlhub
👍2❤1🔥1
От ML-инференса до прошивки железа — обсуждаем на Rust-митапе с экспертами MWS

Как Rust ускоряет инференс ML-моделей, снижает стоимость продуктов и оживляет микроконтроллеры — расскажем в трёх реальных кейсах.

Добавьте в календарь с МТС Link, чтобы не пропустить. В программе:

«Ускоряем инференс ML с Rust»
Python — бутылочное горлышком в ML-пайплайнах. Кейс ускорения с Rust в платформе синтеза и распознавания речи

«Как мы снизили стоимость продукта после миграции части стека на Rust»
Меньше инцидентов, быстрее фичи, меньше железа. Как получить более стабильный продукт с Rust

«Прошить железо c Rust: ESP32 за 20 минут»
Бонусный доклад для тех, кто не работал с электроникой, но хочет оживлять датчики, гаджеты и кастомные устройства с Rust


Когда: 15 октября в 16:00
Где: онлайн
Ссылка для регистрации

До встречи!

Реклама. ООО "МВС". ИНН 7707767501. erid: 2W5zFGw6oEH
👍6🖕5❤4🕊1💋1
Forwarded from Golang
🦀 1,8 млн ошибок из-за одного пробела: как разработчик собирал Kubernetes Ingress на Rust и Go

Автор Silex разделил систему на две части:

• Go-контроллер наблюдает за Ingress и EndpointSlice, отслеживая маршруты и адреса бэкендов.
• Rust-движок на Tokio принимает трафик и ищет маршруты в конкурентной таблице DashMap.

Обработка запросов отделена от взаимодействия с Kubernetes API.

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

Причина оказалась в разборе конфигурации. Вместо JSON-парсера код искал точную подстроку:


Ожидал: "host":"silex.local"
Получил: "host": "silex.local"


Допустимый в JSON пробел ломал поиск. Обработчик молча завершался и закрывал TCP-соединение. Итог: 1,8 млн ошибок чтения.

После исправления автор сравнил Silex с NGINX Ingress: K3s, HTTP echo-бэкенд, wrk, 400 соединений, 4 потока, 30 секунд.

Silex: 2536 запросов/с. NGINX: 2274. Разница: +11,5%.

Но максимальная задержка у обоих была около двух секунд, таймауты тоже остались. У Silex их даже больше: 302 против 286. По объяснению автора, нагрузка упёрлась в Node.js-бэкенд.

На момент статьи TLS-терминация, активные проверки бэкендов и Prometheus-метрики ещё были в планах.

Самое ценное здесь: увидеть, как устроен небольшой ingress, где ломается взаимодействие компонентов и почему throughput нужно читать вместе с ошибками и задержками.

https://dev.to/sysalchemist/how-i-built-a-custom-kubernetes-ingress-in-rustgo-that-outperforms-nginx-by-11-4iag

@Golang_google
👍8🖕2🔥1🥰1😁1
👣 Campfire переписали на Rust, почти без ручного Rust.

DHH пишет, что сегодня уже гоняет beta-версию Campfire на Rust.
Самое интересное:
- код пока получился «уродливым»
- стал примерно в 6 раз более многословным
- сам перенос, по его словам, практически ничего не стоил
- и главное — ему не пришлось напрямую разбираться в Rust-коде

То есть AI уже позволяет переносить реальные приложения между языками почти как между разными runtime.
Пусть результат пока далёк от красивого production-кода, сам факт показательный: миграция большого приложения на другой язык становится задачей не месяцев, а агентного workflow.

https://github.com/basecamp/once-campfire
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😁7🙈5❤4🖕4🔥1
🦀 В Rust нашли баг, который 11 лет обходил гарантии безопасности памяти.

Ошибка позволяет нарушить ограничения времени жизни при присваивании полю структуры. В результате код без `unsafe` может сохранить ссылку на уже уничтоженные данные, а затем обратиться к ним.

В issue есть примеры чтения освобождённой памяти и падения программы. Один из них воспроизводится начиная с Rust 1.4.

Разработчики присвоили ошибке высокий приоритет `P-high`. По оценке команды, случайное проявление маловероятно: для показанного нарушения безопасности нужна специально сконструированная реализация Drop.

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

Гарантии Rust тоже зависят от корректности компилятора. Здесь нашли дыру именно в их реализации.

https://github.com/rust-lang/rust/issues/164250
❤22👍7🥰6👏3😁3🤯1