Rust
2.12K subscribers
131 photos
89 videos
2 files
177 links
Полезный контент по программированию на Rust
Download Telegram
«Почему компилятор Rust такой медленный?»

Я потратил месяц на создание веб-сайта в Docker и теперь готов поделиться ужасными историями.

У меня есть проблема.

Мой веб-сайт (на котором была опубликована эта статья) в основном обслуживается одним двоичным файлом Rust. Он стал слишком длинным. Каждый раз, когда мне нужно внести изменение, я должен:

Собрать новую статически компонуемую библиотеку (с --target=x86_64-unknown-linux-musl)

1. Скопировать её на сервер
2. Перезапустить веб-сайт

Ситуация, мягко говоря, неидеальная.

Поэтому мне бы хотелось перейти к развёртыванию веб-сайта при помощи контейнеров (будь то Docker, Kubernetes или что-то иное), в духе подавляющего большинства ПО, разворачиваемого в последний десяток лет.

Единственная проблема заключается в том, что реализовать быстрые сборки Rust с Docker не так уж просто.

https://habr.com/ru/articles/922534/

original https://sharnoff.io/blog/why-rust-compiler-slow

👉 @rust_lib
👍63🥰1
Книга Rust Embedded Drivers (RED)

- Научитесь писать простые драйверы для аппаратных устройств, работающие в экосистеме встраиваемого Rust.
- Драйвер для датчика DHT для считывания влажности и температуры.
- Освойте использование embedded-hal-mock для тестирования.

https://red.implrust.com/

👉 @rust_lib
👍215🔥2🥰1💊1
Youki — контейнерный рантайм на Rust

Это реализация OCI-совместимого контейнерного рантайма, написанная на Rust. Проект нацелен на то, чтобы быть быстрым, безопасным и простым для сопровождения.

Основные особенности:

- Полная совместимость с OCI Runtime Specification
- Использование Rust для повышения безопасности за счёт управления памятью без использования unsafe (по возможности).
- Модульная архитектура, что упрощает расширение и поддержку.
- Возможность заменить runc в таких инструментах, как Docker или Kubernetes.

https://github.com/youki-dev/youki

👉 @rust_lib
👍131🥰1
🤖 Тест по Rust проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на курс "Rust Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса

За 5 месяцев обучения ты разберёшь ключевые особенности Rust и сможешь не только разрабатывать сложные программные продукты, но и в целом лучше проектировать ПО.

➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cOkYUj

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1
Компилируемый асинхронный ORM с динамическим SQL

Rbatis — это высокопроизводительный ORM-фреймворк для Rust, основанный на генерации кода во время компиляции. Он отлично сочетает в себе эффективность разработки, производительность и стабильность, выполняя роль как ORM, так и компилятора динамического SQL.

https://github.com/rbatis/rbatis

👉 @rust_lib
👍5🔥43🥰1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
LSP-AI - это open source language server, обеспечивающий работу AI-функционала в ваших любимых редакторах кода. Он предлагает такие возможности, как чат с LLM прямо в редакторе и автодополнение кода. Поскольку это именно язык-сервер, он работает с любым редактором, поддерживающим LSP.

Цель LSP-AI — помогать и усиливать возможности программистов, интегрируясь с инструментами, которые они уже знают и любят, а не заменять их.

Небольшой список редакторов, с которыми он работает:

- VS Code
- NeoVim
- Emacs
- Helix
- Sublime

И ещё со множеством других редакторов.

https://github.com/SilasMarvin/lsp-ai

👉 @rust_lib
👍5🔥2🗿21🥰1
Хотите научиться разрабатывать многопользовательские чаты на Rust?

👉 Присоединяйтесь к открытому уроку «Rust в деле: пишем многопользовательский чат с сервером, клиентом и CLI» 14 августа в 20:00 МСК.

На вебинаре мы:
◽️Освоим сетевой протокол поверх TCP для связи клиента и сервера.
◽️Разработаем сервер с бизнес-логикой и клиентскую часть приложения.
◽️Реализуем интерфейс командной строки (CLI) для управления чатом.

❗️ Этот урок — отличная подготовка перед стартом курса «Rust Developer. Professional» от OTUS. Все участники вебинара получат скидку на обучение!

Записаться на вебинар → https://vk.cc/cOwJbH

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
3👍3🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Pumpkin — это сервер Minecraft, полностью написанный на Rust. Он предлагает быстрый, эффективный и настраиваемый игровой опыт. В основе — производительность и комфорт игроков при сохранении ключевых механик игры.

- Производительность: использование многопоточности для максимальной скорости и эффективности.
- Совместимость: поддержка последних версий серверов Minecraft (Java и Bedrock) при строгом следовании ванильной механике.
- Безопасность: защита от известных уязвимостей и приоритет безопасности.
- Гибкость: высокая степень настройки, возможность отключать ненужные функции.
- Расширяемость: база для разработки плагинов.

https://github.com/Pumpkin-MC/Pumpkin

👉 @rust_lib
👍132🥰1
Думай как компилятор: позиции и значения в Rust

Некоторое время назад мне попался в Интернете вопрос о таком синтаксисе в Rust:


*pointer_of_some_kind = blah;


Автору вопроса было интересно, как компилятор понимает такой код, особенно, если в данном случае используется не ссылка, а умный указатель. Я написал ему пространный ответ, но потом подумал, что стоило бы ещё развернуть этот текст и переработать в статью для блога, на случай, если такой вопрос интересует и более широкую аудиторию.

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

https://habr.com/ru/articles/935568/

original https://steveklabnik.com/writing/thinking-like-a-compiler-places-and-values-in-rust/

👉 @rust_lib
👍81🥰1
Устали от повторяющегося кода в Rust? Хотите научиться превращать 100 строк в 5?

➡️ Присоединяйтесь к открытому уроку «Макросы в Rust: от macro_rules! до процедурных макросов» 19 августа в 20:00 МСК.

На вебинаре мы:
— Освоим декларативные макросы: синтаксис и паттерн-матчинг.
— Разберемся с процедурными макросами: derive, attribute, function-like.
— Научимся создавать DSL и автоматизировать рутинные задачи.
— Поймем, когда использовать макросы и когда их избегать.

❗️Этот урок — отличный тест-драйв курса «Rust Developer. Professional» от OTUS. Все участники вебинара получат скидку на обучение!

🔴 Зарегистрироваться на вебинар → https://vk.cc/cOFrEb

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
2👍1🥰1
Leptos

Это современный фреймворк для разработки веб-приложений на Rust с реактивным подходом. Он позволяет писать как фронтенд, так и бэкенд, используя единый стек, с акцентом на производительность и безопасность.

Особенности:

Высокая скорость работы благодаря компиляции в WebAssembly и оптимизациям Rust.
🔄 Реактивность: обновления интерфейса происходят автоматически при изменении состояния.
🛠 Полный стек: можно писать и серверный, и клиентский код на Rust.
🌐 SSR (Server-Side Rendering) и гидратация для SEO и быстрого первого рендера.
🧩 Богатая экосистема и возможность использовать привычные паттерны вроде компонентов.

Фреймворк позиционируется как альтернатива React/Vue/Svelte, но с силой и безопасностью Rust.

https://github.com/leptos-rs/leptos

👉 @rust_lib
👍114🤔2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Ripdrag

Утилита Drag and Drop, написанная на Rust и GTK4

https://github.com/nik012003/ripdrag

👉 @rust_lib
👍61🥰1
🤖 Тест по Rust проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на курс "Rust Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса

За 5 месяцев обучения ты разберёшь ключевые особенности Rust и сможешь не только разрабатывать сложные программные продукты, но и в целом лучше проектировать ПО.

➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cOMmpA

Поторопись, до старта осталось совсем немного!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
2
This media is not supported in your browser
VIEW IN TELEGRAM
Pake

🤱🏻 Превратите любую веб-страницу в настольное приложение с помощью Rust.

Особенности:

-Упаковка сайта в exe/dmg/appimage без лишних зависимостей.
-Основан на Tauri — быстрый, лёгкий, с низким потреблением памяти.
-Поддержка кастомных иконок, заголовков окна, горячих клавиш.
-Безопаснее, чем Electron, так как вес приложения в разы меньше и нет лишнего Node.js-кода.
-Работает на Windows, macOS и Linux.

https://github.com/tw93/Pake

👉 @rust_lib
👍122🔥2🥰2
An Optimization That’s Impossible in Rust

Автор разбирает интересный случай оптимизации, которая возможна в C/C++, но недостижима в Rust из-за модели заимствований и строгих правил работы с aliasing.

Речь идёт о ситуации, где компилятор C может агрессивно оптимизировать код, предполагая отсутствие пересечения указателей (если нет restrict). В Rust же гарантии безопасности требуют, чтобы ссылки не пересекались, и это ограничение мешает сделать такую же оптимизацию, даже если на практике пересечения не происходит.

В итоге:

- В C/C++ оптимизация возможна, но небезопасна без явных аннотаций.
- В Rust - безопасность всегда гарантируется, но ценой отказа от определённых оптимизаций.
- Для производительного кода в Rust приходится использовать небезопасные конструкции (unsafe) или вручную подсказывать компилятору.

https://tunglevo.com/note/an-optimization-thats-impossible-in-rust/

👉 @rust_lib
👍71🥰1😁1
Redox - это операционная система, написанная полностью на Rust. Проект вдохновлён принципами Unix, но стремится к более безопасной и современной архитектуре. В Redox используются микроядерный подход, драйверы и сервисы запускаются в пространстве пользователя, что уменьшает поверхность атак и повышает стабильность.

Кроме ядра, экосистема включает файловую систему TFS, собственный дисплейный сервер Orbital и набор утилит. Разработчики делают упор на безопасные абстракции Rust и минимизацию использования небезопасного кода.

https://gitlab.redox-os.org/redox-os/redox

👉 @rust_lib
🔥19👍123🥰1
Неожиданный скачок продуктивности благодаря Rust

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

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

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

https://habr.com/ru/articles/944706/

original https://lubeno.dev/blog/rusts-productivity-curve

👉 @rust_lib
👍16🥰21👎1
Plotlars - это многофункциональная библиотека на Rust, которая выступает в роли обёртки вокруг библиотеки Plotly, соединяя мощную библиотеку анализа данных Polars с Plotly.

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

https://github.com/alceal/plotlars

👉 @rust_lib
👍10🥰31
Создание набора инструкций для виртуальной машины на Rust

В этом подробном руководстве мы создадим базовую виртуальную машину (VM) на Rust. Речь пойдёт не только о написании кода, но и о понимании ключевых концепций виртуализации, наборов инструкций и их практической реализации.

К концу этого урока вы получите более глубокое понимание принципов работы виртуальных машин и готовое Rust-приложение, которое симулирует простую VM.

https://telegra.ph/Building-a-VM-Instruction-Set-in-Rust-09-18

👉 @rust_lib
👍142🥰1
Onefetch

Выводит информацию о локальном Git репозитории прямо в терминал. Утилита не нуждается в подключении к интернету.

По умолчанию информация о репозитории отображается вместе с логотипом главного языка программирования, но вы можете сделать так, чтобы Onefetch использовал изображение (если терминал это позволяет), читал ваш собственный ASCII-рисунок или вообще не выводил его.

https://github.com/o2sh/onefetch/blob/main/docs/README.ru.md

👉 @rust_lib
👍94😐2🥰1