Новости

Post Thumbnail

Реверс самоката

Автор занимается реверс-инжинирингом своего электросамоката. Через Bluetooth-приложение и осциллограф он обнаруживает скрытую шину CAN на разъеме USB-C дисплея, снимает ее трафик с помощью самодельного логгера на ESP32 и расшифровывает сообщения, управляющи...

Post Thumbnail

Оптимизация DNS-кэша

Ребята из Cloudflare рассказывают, как пять последовательных оптимизаций раскладки DNS-кэша Big Pineapple сократили потребление памяти на запись на 56% - с 953 до 420 байт. Освободили около 100 терабайт ОЗУ по всем машинам, а также ускорили кэш. Они сдела...

Post Thumbnail

Профилирование Rust

В статье про hotpath-rs - универсальный профайлер производительности для Rust. Автор показывает, как находить и устранять реальные узкие места на разных уровнях приложения: SQL-запросов, HTTP-вызовов и I/O до блокировок, каналов, аллокаций памяти и сэмплир...

Post Thumbnail

На Rust после Go

Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в его команде. Но появился проект, в котором нужны были низкое потребление памяти и mpmc-обмен сообщениями. Пожтому несколько CLI и сервисов решили переписать на Rust и это застав...

Post Thumbnail

Вкуc zig после Rust

Автор, семь лет писавший на Rust, переписал свой проект jsonpath-rust на Zig и делится впечатлениями от перехода. Больше всего его удивило почти полное отсутствие IDE-поддержки в Zig, что заставило вернуться к CLI и build.zig и даже подтолкнуло к переходу ...

Post Thumbnail

Конкурентный сервер на Rust

Седьмая часть серии о конкурентных сетевых серверах. Тут автор рассматривает, как в Rust решаются те же задачи, что и в предыдущих частях на C, Python и JavaScript. Автор последовательно показывает реализации сервера с простым протоколом. Сначала последова...

Post Thumbnail

Сервисы на Rust

Автор объясняет, почему Rust - отличный выбор для средних по размеру backend-сервисов, несмотря на меньшую "продуктивность" по сравнению с Go. В Rust богатая система типов, проверки компилятора и zero-cost-абстракции избавляют от багов бизнес-логики. В ст...

Post Thumbnail

Мигаем диодом на Rust

Автор показывает использование Embedded Rust - от подключения программатора ST-LINK V2 через SWD-интерфейс до сборки и прошивки. Все это на STM32 Автор использует готовый шаблон проекта на базе крейта stm32f1xx-hal, разбирает ключевые атрибуты, а затем прям...

Post Thumbnail

esp32 http2 сервер

Вот у людей времени дофига. Автор демонстрирует, как он запускает HTTP/2-сервера с TLS 1.3 на микроконтроллере ESP32-WROVER-E. Сервер написан на Rust с помощью собственного крейта WTX, Embassy и официальных ESP-крейтов. Сервер слушает порт 9000, выполняет п...

Post Thumbnail

SteelMC

Чувак рассказал про свой SteelMC. Это Minecraft-сервер на Rust, который "блок за блоком" добился паритета по генерации мира с ванильным сервером после девяти месяцев разработки. Автор запилил многопоточный "chunk pyramid" - планировщик, продвигающий чанки ч...

Post Thumbnail

Самодельные арены в Rust

В статье автор рассказывает про реализацию арен в Rust с нуля. Получилось такое себе пошаговое руководство от простейшей обертки над Vec до продвинутой версии с сырыми буферами, UnsafeCell и поддержкой динамических типов через nightly-фичу allocator_api. Ав...

Post Thumbnail

GDPatch

GDPatch - это новый универсальный загрузчик модов для Godot 4.x, написанный на Rust, который вместо патчинга движка или игровых файлов перехватывает системные вызовы файловой системы, подменяя .pck-файлы и перенаправляя чтения на модифицированный контент. Тако...

Post Thumbnail

А теперь переписываем на Zig

Окей, Bun переписывают с Zig на Rust. Но вы что думаете, только на Rust всё переписывают? Нифига! Команда языка Roc за полтора года переписала свой 300 000-строчный компилятор с Rust на Zig и реализовала почти весь функционал оригинала. Основной причиной...

Post Thumbnail

Свой 3d редактор

Это первый эпизод серии туториалов по созданию простого 3D-редактора сцен на движке Bevy 0.19. Проект вдохновлен Blender. Теоретически, его можно будет использовать для разработки игровых миров, где редактор и игра используют одну и ту же ECS-архитектуру. ...

Post Thumbnail

Сокращатель ссылок на rust

Это вводная статья серии по бэкенд-разработке на Rust и Axum. Автор на примере создания сокращателя URL разбирается веб-фреймворк Axum и объясняется как он устроен. По сути, Axum это надстройка поверх Hyper, Tower и асинхронной среды Tokio. Автор раскр...

Post Thumbnail

Gossamer

Новый пятничный язык программирования, вдохновленный Rust но с горутинами на M:N-планировщике и моделью памяти, близкой к Swift Без borrow checker'а. Для сборщика муссора используется не трассировка, а подход Swift: детерминированный подсчет ссылок с автома...

Post Thumbnail

Миллиард строк

Автор проходит One Billion Row Challenge на Rust - задачу по обработке файла с миллиардом строк метеоданных за минимальное время. В 10-часовом стриме он итеративно оптимизирует решение: от наивной версии через отказ от парсинга UTF-8 и мапинга файла в память ...

Post Thumbnail

WAL-RUS

ClickHouse Cloud переписали утилиту для бэкапов и WAL-архивирования Postgres с Go на Rust. В результате появился WAL-RUS - опенсорсный инструмент, у которого пиковое потребление виртуальной памяти более чем на 70% ниже, чем у WAL-G. Это достигнуто за счет прям...

Post Thumbnail

6 связанных списков

"Learning Rust With Entirely Too Many Linked Lists" - это прикольный учебный материал, где автор учит основам и продвинутым концепциям Rust через реализацию шести разных связных списков - от плохого односвязного стека до production-unsafe двусторонней очереди,...

Post Thumbnail

Асинхронный Rust в трех частях

Совсем не свежие но все еще очень актуальные и полезные статьи про устройство ассинхронности Rust в трех частях Async/await, или "асинхронный ввод‑вывод" - это функция языка, которая позволяет программам выполнять несколько задач одновременно. Это в некото...

Post Thumbnail

Аллокации в Rust

Автор заметили, что Rust-сервис после обработки всплеска событий не возвращает память операционной системе - RSS остается высоким, хотя настоящих утечек в коде нет. Оказалось, что стандартный аллокатор glibc плохо подходит для его сценария: короткоживущие ...