Обновить
256K+

Rust *

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

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

Как я писал сервис авторизации на Rust…

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

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

С первого взгляда звучит легко, но на деле не всё так однозначно.

Читать далее

Новости

Мы переписали наш парсер WASM с Rust на TypeScript — и он ускорился в три раза

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

Мы создали парсер openui‑lang на Rust и скомпилировали его в WASM. Логика была здравой: Rust быстрый, WASM в браузере даёт скорость, близкую к нативной, а наш парсер — разумно сложный, многоэтапный конвейер. Почему бы не захотеть его на Rust?

Но оказалось, мы оптимизировали не то, что нужно.

Читать далее

Как я написал обход блокировки Telegram на Rust — без VPN, без серверов, через WebSocket

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

TL;DR: Написал open-source десктопное приложение TG Unblock на Rust, которое в один клик обходит блокировку Telegram через локальный WebSocket-прокси. Трафик заворачивается в обычный HTTPS к web.telegram.org — DPI не видит MTProto, провайдер не может шейпить. Без VPN, без серверов, без абонентки. Код на GitHub — by-sonic/tglock.

Предыстория: почему GoodbyeDPI не спасает

С весны 2026 года Telegram в России стал работать, мягко говоря, через боль. Сообщения доходят по 10 секунд, медиа не грузятся, звонки рвутся. Классическая картина: провайдер + DPI = страдания.

Первое, что приходит в голову — GoodbyeDPI. Запустил, пакеты фрагментируются, DPI не узнаёт MTProto... и вроде работает. Но:

Пинг 200+ мс — при норме 40–60

Постоянные переподключения — DPI переобучается и режет соединения

IP-шейпинг — провайдер троттлит весь трафик к подсетям Telegram (149.154.x.x, 91.108.x.x)

Соник, что ты сделал?

Send и Sync в Rust: что решает компилятор за вашей спиной

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

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

Сегодня рассмотрим Send и Sync. Не «что это такое» (это вы в book прочитаете за пять минут), а как именно компилятор принимает решения, почему &mut T внезапно Sync, и что происходит, когда вы пишете unsafe impl Send.

Читать далее

Как я в одиночку начинаю IoT-стартап на Rust в Бразилии

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

Начну с короткого рассказа, как я докатился до жизни такой ) Меня зовут Егор, мне 28. У меня нет диплома программиста, нет опыта работы в IT и нет ни одного коммерческого проекта в резюме. Зато я всю жизнь очень любил железо — буквально с детства, будучи ещё в детском саду, я чинил себе джойстики на Sega, а потом на PS1. В школьные годы открыл для себя сначала Ucoz, потом Wix, Tilda, WordPress, и уже к институту освоил React. Но так сложилось, что это для меня всегда было просто хобби — как и собирать себе датчики для дома: датчики влажности, открытия дверей и т.д. ))

Возможно, я бы мог стать программистом и зарабатывать приличные деньги, но учился в школе с военным уклоном, а после школы стал предпринимателем — занимались производством металлоконструкций и мебели ) После череды ссор с партнёром стал аккаунт-менеджером в Достависте, и отработал там славные 4 года (и по вечерам програмировал мечтал об магазине аля САМОКАТ ), что, собственно, и позволило мне отправиться в Грузию в 2021 году перезимовать и познакомиться с будущей женой.

Грузия, которая не случилась

Жили в Грузии, всё было кайф. Купил там квартиру не в центре Батуми, буквально на кредитку(было так дешево ), в начале 2022 года — до начала событий . Август 2025. Мы с женой (беременной, она грузинка) пошли в Турцию на визаран — так как ПМЖ мне не давали, а давали справку о том, что я «угроза нац. безопасности». На границе меня разворачивают — аргументируя тем, что я слишком долго туристом у них живу.

Месяц живу в Турции, жена быстро всё продаёт. В Россию не хочется — у меня повестки висят и ничего в России кроме родственников нет. Решили поехать туда, где паспорт по рождению ребёнка и не слишком дорого. Так и выбрали Бразилию.

Читать далее

Как мы подружили однопоточный C++ с многопоточным Rust

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

Этот пост написан по мотивам выступления, с которым мы с Шисянь Ван ездили на конференцию Rust UnConf, организованную нью-йоркским сообществом Rust. Конференция UnConf собрала поистине потрясающий коллектив энтузиастов a Rust, в компании которых мы более двух часов посвятили глубоким техническим дискуссиям (а также поеданию мороженого). Далее при необходимости я буду ссылаться на опыт нашей компании Antithesis.

Читать далее

Написал шахматный движок для 6×6 Crazyhouse — стал #1 на chess.com, а потом меня забанили

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

Привет, Хабр. Меня зовут Владимир, я бэкенд-разработчик. Это моя первая статья здесь — о том, как пет-проект для нишевого варианта шахмат прошёл путь от «а что, если...» до первого места в рейтинге на chess.com. Без нейронок. На чистом alpha-beta поиске, написанном на Rust.

Статья будет полезна тем, кто интересуется шахматным программированием, оптимизацией CPU-bound задач или связкой Python + Rust через PyO3.

Читать далее

Под капотом Beetroot: как я написал менеджер буфера обмена на Tauri v2 и Rust с установщиком 6 МБ

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

Переезд с macOS на Windows для разработчика часто сопровождается болью от потери привычного инструментария. В моем случае решающим стимулом свитчнуться на ПК стала мощная видеокарта. Сейчас мой верный MacBook всё так же лежит на столе и даже подключен к мониторам, но по факту именно Windows (как бы сильно она мне ни не нравилась) стала основной рабочей системой.

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

Штатный инструмент Windows (Win+V) разочаровал моментально: лимит в 25 элементов, отсутствие поиска и полное обнуление после перезагрузки ОС. Поиск альтернатив тоже не увенчался успехом: Ditto надежен, но выглядит как гость из 2005 года, а мощный CopyQ имеет перегруженный интерфейс суровой системной утилиты. Ни в одном из них не было современных функций вроде OCR «из коробки» или базовой интеграции с LLM для обработки текста на лету.

Решение напрашивалось само собой — написать свой велосипед. Но сделать его легким, быстрым и без Electron. В этой статье расскажу о том, как устроен Beetroot — менеджер буфера обмена с бесконечной историей, нативным OCR и AI-трансформациями.

Как это работает под капотом

Парсим номер телефона за 500 наносекунд: как я портировал libphonenumber на Rust

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

"Стоит только начать" - я писал бэкенд-сервис на Rust, и мне понадобилась валидация международных телефонных номеров. Как и любой Rust-разработчик, я пошёл на crates.io и скачал самую популярную библиотеку для этой задачи.

А затем я открыл их issues на GitHub.

Читать далее

#[inline] в Rust — это не про инлайнинг. И вот почему вы расставляете его не там

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

Вы открываете горячую функцию в профилировщике, видите миллионы вызовов, добавляете #[inline(always)]. Бинарник распухает, время сборки подскакивает, а производительность не меняется. Или ваще падает. Проблема не в атрибуте. Проблема в том, что #[inline] делает совсем не то, что подсказывает интуиция.

Читать далее

Контракт вместо настроек: чего я жду от OLTP-БД

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

После первой статьи в комментариях несколько раз прозвучало примерно одно и то же:
"Всё правильно, но это же про любую зрелую СУБД — что с этим делать?"

Я думал над этим вопросом несколько недель. И в итоге решил не искать ответ в виде
"возьмите правильный инструмент X" — а попробовать честно сформулировать:
какими свойствами OLTP-БД должна обладать сама по себе, независимо от того,
насколько хорош ваш оператор, консультант или runbook.

Что такое "контракт" — и почему это не маркетинг

Попробую объяснить не через определение, а через ощущение.

Когда вы покупаете автомобиль, вы не читаете инструкцию к тормозам каждое утро.
Вы просто знаете: нажал педаль — машина тормозит. Это контракт. Он не зависит от того,
правильно ли вы настроили тормозную жидкость этим утром или не забыли включить
"режим торможения" в меню.

Читать далее

Одна Rust-библиотека вместо шести Python-пакетов — или как я перестала запускать фит и идти за кофе

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

Кому будет полезно

Если вы живёте в Python и одновременно используете statsmodels, lifelines, pyhf, PyMC/BlackJAX, linearmodels (или что‑то похожее).

Если вам важны воспроизводимость и понятная валидация численных оптимизаций (особенно в HEP).

Если вам интересна архитектура «одно вычислительное ядро → много задач» и практические hot paths (AOT, SIMD, zero‑copy).

Читать далее

Как я искал замену MinIO S3 и написал свой S4 на Rust

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

В начале 2025 года компания MinIO в лице сооснователя Harshavardhana начала поэтапно сворачивать свою версию Community Edition. В феврале из open-source версии был вырезан веб-интерфейс администрирования - управление политиками, мониторинг, репликация, IAM - всё это переехало в коммерческий продукт AIStor с ценником от $96 000 в год. Пользователям оставили лишь базовый object browser и CLI-утилиту mc. В мае последовало удаление поддержки OIDC-аутентификации. В октябре MinIO прекратил публикацию Docker-образов и готовых бинарников - причём аккурат в момент раскрытия критической CVE-уязвимости. А в декабре 2025-го проект официально перешёл в режим maintenance mode: никаких новых фич, pull request'ы не принимаются, только точечные security-фиксы по усмотрению компании.

Читать далее

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

Профилирование и PGO в LLVM

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

Нередко при оптимизации приложений, написанных на языках со статической компиляцией (C, C++, Rust), наступает момент, когда стандартные методы оптимизации, такие как улучшение алгоритмов, подбор структур данных, флаги компиляции вроде -O3, перестают давать дополнительный прирост производительности. В этот момент многие вспоминают про фундаментальное ограничение статических компиляторов. В отличие от JIT, они не знают, какой код будет горячим, а какой холодным. JIT-компиляторы (JVM, V8, .NET) получают эту информацию в runtime и адаптируют оптимизации под реальную нагрузку. Статические компиляторы генерируют машинный код заранее и лишены информации о поведении программы в runtime. Для решения этой проблемы используется подход Profile Guided Optimization (PGO). Он позволяет собрать данные о выполнении программы и передать их компилятору для принятия более оптимальных решений при генерации кода. По сути, PGO - это способ дать статическому компилятору некоторые преимущества JIT, сохраняя при этом все преимущества ahead-of-time компиляции: отсутствие пауз на перекомпиляцию и полный контроль над билдом.

Читать далее

Почему macro_rules! может не остановиться и что с этим делает Rust

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

Приветствую.

В 1936 году Алан Тьюринг опубликовал статью, которая среди прочего доказала одну неприятную вещь: невозможно написать алгоритм, который для любой программы и любого входа определит, остановится программа или нет. Проблема остановки. Мы натыкаемся на неё гораздо чаще, чем кажется. Иногда прямо в Cargo.toml.

Читать далее

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

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.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 мин
Охват и читатели9.6K

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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