Обновить
77.49

Rust *

Мультипарадигмальный компилируемый язык

Сначала показывать
Порог рейтинга
Уровень сложности

Guessing Game на STM32 c использованием Rust

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.4K

Cегодня редко встретишь разработчика, который хоть раз бы не слышал о Rust. После долгого хайпа и зародившегося мема RIIR (rewrite it in Rust — перепиши это на Rust) ажиотаж вокруг языка как будто бы поутих. Но оказалось, все и вправду по‑тихому переписывается на Rust (если мой дебют не утонет в минусах, постараюсь написать статью‑исследование на тему, где уже Rust надежно поселился в системе).

Первое, что меня впечатлило — это статья, что вся инфраструктура Cursor написана на Rust в целях экстремальной производительности, и язык с этой задачей, как видно, прекрасно справляется. Второе, что и сподвигло не только читать о Rust, но и начать на нем писать, — это, конечно же, дефицит комлектующих. «640 КБ на самом деле хватит всем» и интерес пал на братьев наших меньших — микроконтроллеров. Вот где действительно можно прочувствовать всю необходимость оптимизации.

Конечно, знакомство с Rust, как и у всех, началось с классики — Rust book для новичков и Embedded Rust для желающих окунуться в разработку встроенных систем. В Rust Book новичкам предлагается написать простую программу Guessing Game — приложение, которое загадывает число, а «игрок» должен попытаться его угадать.

Но просто читать не так интересно как набивать свои собственные шишки, поэтому, вооружившись книгами, документацией, все еще живым StackOverflow и Gemini в качестве ментора, я решила объединить эти два мира и сделать Guessing Game на STM32.

Далее хочу предложить небольшой гайд (или просто объяснение кода) из того, в чем удалось разобраться.

Читать далее

Новости

Разработка аркадной гонки на Rust с нуля. Ошибки и успехи

Время на прочтение7 мин
Охват и читатели8.4K

14 месяцев назад я начал разрабатывать гонку. Идея была простой — с дедлайном 4 месяца сделать простую игру без пафоса. Ну, любой разработчик знает, что произошло дальше: без пафоса не вышло.

Читать далее

Один endpoint — одна строка. Как мы до этого докатились на Rust

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8.8K

Я пишу на Python. В последнее время увлёкся Rust — типы, скорость, предсказуемость. Но когда смотрю, как пишут веб на Расте, по спине холодный пот: десятки строк замыканий на один endpoint, Box::pin, lock контейнера, resolve, clone. Хотелось питонячего подхода — без мишуры. Решил расширить своего Urich до Rust. Пошёл дальше: написал растовое ядро (роутинг, протокол приложения, HTTP), поверх него — две обёртки: для Rust и для Python. Один core, два языка. В ядре — зачатки ASGI (scope, receive, send).

Всё в ветке multi. Пока work in progress, но то, что получается, нравится. Ниже — суть, пример кода, ссылки. Зову помогать: комментарии, контрибьюции, реальные использования — буду рад.

Читать далее

Исходный код человечества: как язык и психика программируют нашу реальность

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.1K

Выйдя на пенсию и имея много свободного времени, я решил посвятить себя любимому занятию - разработке высоконагруженных финансовых архитектур, ядер и протоколов межбанковского клиринга (проект Orda). Я создал Qazna - проект, который называю «финансовым Linux», полностью переведенный на строгую открытую лицензию GNU AGPLv3.

Ежедневно ковыряясь в архитектуре систем, отлавливая уязвимости на пайплайнах (вроде недавних багов в crypto/tls в стандартной библиотеке Go) и выстраивая отказоустойчивые сети, я поймал себя на одной мысли. Мы тратим колоссальные ресурсы на защиту серверов и протоколов, но игнорируем самую уязвимую систему с устаревшим legacy-кодом - нас самих.

Этот пост - попытка выйти за рамки классического IT и посмотреть на историю, политику, общество и медицину через призму системного анализа, API-инъекций и социальной инженерии. Документ "Тартар и Я", над которым я работал до этого, натолкнул меня на мысль, что праязык человечества - это не утерянный миф, а живой код. И сегодня я хочу поговорить о том, как этот код компилируется в нашу реальность.

Когда мы говорим о программировании, мы по привычке представляем кремниевые процессоры, серверные стойки и строки кода на Python, Go или C++. Но мы упускаем из виду одну фундаментальную вещь: задолго до появления первых ЭВМ человечество уже создало мощнейший язык программирования - нашу речь.

Язык - это не просто средство коммуникации. Это низкоуровневый фреймворк, на котором «крутится» наше сознание. Как я отмечал в материалах к исследованию "Тартар и Я", слова несут в себе архетипические смыслы, формирующие саму логику мышления. И если мы признаем, что человек программируется языком, возникает закономерный вопрос: насколько хорошо защищена наша внутренняя операционная система?

Читать далее

Первое знакомство с Rust

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели8.8K

Язык программирования Rust в последние годы приобрел значительную популярность, выступая в качестве универсального языка, обеспечивающего высокую производительность и безопасную работу с памятью. Разработанный Mozilla, это современный язык программирования системного уровня, который является наиболее популярным среди разработчиков, работающих над различными приложениями, от операционных систем до веб-браузеров.

Эта статья предназначена для тех, кто только начинает свое знакомство с миром Rust. Мы рассмотрим основные преимущества этого языка, установим необходимые компоненты и соберем первое приложение.

Читать далее

Нестандартные фичи Rust, которые вы полюбите

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели13K

Привет, Хабр! В Rust есть тип, у которого нет ни одного возможного значения. Звучит необычно. Но я однажды столкнулся с этим самым никогда‑типом и понял — без него жить в Rust уже не хочется! Что это такое и зачем нужно — разберём подробно. По ходу дела упомянем и связанные фичи: Infallible, новоявленные макросы вроде matches!, разные фишки для оптимизации кода и FFI, про которые часто не догадываешься.

Читать далее

Шесть мыслей о генерации кода на C

Время на прочтение7 мин
Охват и читатели7.7K

Я занимаюсь разработкой компиляторов, то есть, пишу программы, преобразующие программы в программы. Иногда требуется нацелиться на более высокоуровневый язык, чем, скажем, простой ассемблер, и зачастую именно в таком качестве удобно взять язык C. Генерировать C не так страшно как писать от руки — в частности, потому, что генератор умеет не попадать в ловушки, связанные с неопределённым поведением. А когда пишешь на C вручную, именно неопределённого поведения следует особенно остерегаться. Здесь я опишу некоторые паттерны, которые обнаружил сам, и которые помогают мне результативно работать.

Считайте этот пост краткой подборкой тех вещей, которые мне действительно помогают. Рискуя, что меня могут обвинить в тщеславии, назову их «наилучшими практиками», хотя, это действительно мои рабочие практики, поэтому, если они вам понравятся — смело берите их на вооружение.

Читать далее

Miri ловит то, что пропускает компилятор

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.3K

Привет! Сегодня рассмотрим инструмент, который поможет вам с низкоуровневым кодом на Rust. Если вы пишете на Rust только безопасный код, возможно, никогда о нём не слышали.

А вот тем, кто периодически заглядывает в тёмные уголки unsafe, этот инструмент сэкономит нервишки.

Читать далее

PostgreSQL для финансов 2.0: Как мы заменили SWIFT на gRPC и внедрили WASM-политики

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели6.6K

В предыдущих сериях (От стартапа к протоколуПочему финтеху нужен капитальный ремонтПочему мы терпим факс в эпоху ИИ) мы обсуждали, почему современный финтех - это "Ferrari на грунтовке", и зачем мы начали писать с нуля свой леджер Qazna (на Rust) и ERP-систему Orda (на Go).

В комментариях вы справедливо спрашивали: "Зачем изобретать велосипед, если есть PostgreSQL и Kafka?" и "Чем это отличается от Hyperledger/Ripple?".

Сегодня я отвечу на эти вопросы кодом и архитектурой. Мы не просто "переписали базу". Мы построили суверенный стек, который делает три вещи, невозможные в legacy-системах:

Читать далее

Защита LLM за 3ms: как я построил open-source иммунную систему для AI

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели11K

340% рост AI-атак за 2025 год, а защита LLM всё ещё — «закиньте промпт в облако, подождите 200ms». Я построил альтернативу: SENTINEL — open-source стек из C, Rust и Python, который фильтрует jailbreak за <3ms on-premise. Ключевая фича — Micro-Model Swarm: рой из моделей <2000 параметров, который ловит то, что не видят регулярки.

Читать далее

Введение в Yttri — Что это и почему это нужно?

Время на прочтение6 мин
Охват и читатели12K

Устали прыгать между Jira, Confluence, Notion, Calendar и почтой? Я написал Yttri — мощный комбайн на Rust + Tauri для управления всей цифровой жизнью. Локальный AI, графовая база знаний, приватность и никакой облачной зависимости. Рассказываю, как объединить хаос в одну систему и почему Local-First победит.

Читать далее

Как я написал ASR-движок на Rust: от разочарования в одной модели до мульти-модельной архитектуры

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели7.8K

Привет, Хабр! В предыдущей статье я рассказывал, как портировал модель синтеза речи Qwen3-TTS на Rust. Тот проект (RustTTS) получился достаточно успешным — один бинарник, мгновенный старт, никаких Python-зависимостей.

Естественным продолжением стала обратная задача — распознавание речи (ASR, Automatic Speech Recognition). Логика казалась простой: у Qwen есть и TTS и ASR, архитектуры похожи, опыт с Candle уже есть, значит справимся за пару недель. Ну... не совсем.

Читать далее

Партизанский Telegram: как поднять прокси-невидимку, прикидываясь онлайн-магазином

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели80K

Привет, Хабр!

Это продолжение серии про обход блокировок Telegram. В первой части мы подняли MTProxy на nineseconds/mtg с Fake TLS. Работает, подключаешь и забываешь. Но есть нюанс.

Fake TLS маскирует протокол. DPI смотрит на пакеты и видит обычный TLS к 1c. Всё красиво, пока к вашему серверу не придёт краулер и не попробует на него зайти.

Читать далее

Ближайшие события

Git в браузере. Расширяем возможности с помощью LFS

Уровень сложностиСложный
Время на прочтение17 мин
Охват и читатели6.8K

Привет, Хабр! Я Паша, разработчик Gramax — Open Source платформы для управления документацией в подходе Docs as Code.

В прошлой статье я рассказывал о том, как мы переводили наше приложение с Isomorphic Git на libgit2, как засунули его в веб-версию приложения при помощи Emscripten и с какими трудностями столкнулись в процессе.

На этот раз — как мы оптимизировали хранение файлов ресурсов каталога (в большинстве случаев, изображений) при помощи Git LFS, тем самым ускорив его клонирование и синхронизацию.

Читать далее

Пишем свою мобильную ОС с нуля на Rust. Часть 2. Менеджер памяти

Уровень сложностиСредний
Время на прочтение37 мин
Охват и читатели8.6K

В прошлой части мы загрузили своё мобильное ядро, вывели "Hello world" в UART и нарисовали квадратик на экране.

В этой части я покажу, как улучшилось ядро за это время: поддержка новых устройств (запуск и отладка в QEMU и Raspberry Pi 5), разбиение на модули, и, наконец, полноценный менеджер памяти. В этом нам очень поможет система типов Rust.

Читать далее

Как я писал библиотеку для локализации на Rust

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели9.7K

Эта статья посвящена тому, как я делал библиотеку локализации на Rust. От разработки для своего приложения до полноценного универсального решения.

Читать далее

Делаем приложение на Расте с GUI нестандартным способом

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели10K

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

Читать далее

Kawai-Focus 2.2: Python-бинарник в Tauri — проблемы и альтернативы

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели8.5K

В данной статье я расскажу, с какими проблемами, связанными с бинарником, столкнулось моё решение при запуске на Arch Linux у моих знакомых, и почему у меня оно работает нормально на Debian 12 и 13. Также я разберу преимущества и недостатки текущей реализации, покажу возможные пути решения и альтернативы, а лучшее решение применю на практике.

Я снова попрошу Сергея и Ивана запустить моё приложение на Arch Linux, чтобы проверить его работу.

Заваривайте чай, доставайте вкусняшки — пора «удобрять почву для выращивания помидоров»! 🍅

Читать далее

Как я написал TTS-движок на Rust за месяц: путь от Python к production-ready решению

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели14K

Что будет, если выкинуть Python-обвязку и сделать TTS по-взрослому?

Я взял Qwen3-TTS и за месяц собрал RustTTS: компактный бинарник, быстрый старт, стриминг и контролируемый инференс без “venv на 2 ГБ”.

Покажу, как устроен пайплайн (text → tokens → audio), где реально узкие места, какие оптимизации дают эффект, и почему RTF на CPU может быть конкурентным, если не стрелять себе в ногу архитектурой.

Читать далее

Пишем свой git: минимальная реализация на Rust

Время на прочтение5 мин
Охват и читатели9.2K

Контроль версий долгое время был для меня «чёрным ящиком»: я не понимал, как именно хранятся файлы, как формируются diff’ы и из чего состоят коммиты. А поскольку я люблю изобретать велосипеды, почему бы не попробовать реализовать git самому?

Читать далее
1
23 ...