Обновить
256K+

Rust *

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

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

clipboard-mcp: даём AI-ассистентам доступ к буферу обмена

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

AI-ассистенты в 2026 году умеют писать код, анализировать данные и управлять инфраструктурой. Но попросите Claude прочитать то, что вы только что скопировали — и он разведёт руками.

Буфер обмена — одна из самых базовых вещей в десктопном workflow, и AI к нему доступа не имеет. Я написал clipboard-mcp, чтобы это исправить.

Читать далее

Новости

Четыре IDE, тьма агентов, ноль свободного времени

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

В какой-то момент понял, что у меня открыто четыре IDE с разными проектами. В каждой крутится одна или несколько сессий с Claude AI. А я сижу и жонглирую вкладками. Планирование. Ревью там, где критично. Там, где не критично, накидываю хитрые тестовые сценарии, тестируя проект как black box. Постоянно переключаю контекст у себя в голове чтобы понять, а на каком шаге я на этой вкладке и в этом проекте. И потом бам, пора спать. Или есть. Или идти гулять с ребёнком. И в этот момент все процессы останавливаются. Агенты ждут. И получается по факту, что я слабое звено. Не модель с её косяками, а я. Начинаю меньше спать. Парадокс, вроде как должно было быть все наоборот: модели работают, ты спишь. Ан нет.

Читать далее

Как я перенес консольное приложение в Rust + WASM и выложил на GitLab Pages

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

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

переписал логику на Rust,

собрал в WebAssembly и завернул в статичную страницу с терминальным интерфейсом на чистом HTML/CSS/JS.

В статье разбираю практический пайплайн: экспорт функции из Rust в WASM (wasm_bindgen), инициализацию модуля в браузере через JS, вывод результата в DOM и публикацию через GitLab Pages. Отдельно показываю, как встроил .wasm в base64, чтобы страница работала даже без отдельной загрузки бинарного файла.

Это кейс про то, как быстро превратить небольшую CLI-логику без системных API в наглядное web-демо, которое открывается с любого устройства без установки.

Репозиторий: gitlab.com/Evgene-Kopylov/iching_wasm
Демо: i-ching-wasm-c50914.gitlab.io

Читать статью с картинками

Как я проектирую OLTP-БД с нуля: принципы, trade-off'ы и архитектурные решения

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

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

В этой статье я открываю капот своей OLTP-базы данных, которую пишу с нуля на Rust.

Это не обзор готового коробочного решения, а честный рассказ про инжиниринг на раннем этапе. Я покажу, как абстрактные идеи вроде «fail-closed контрактов» превращаются в работающий код, почему я выбрал UNDO-log MVCC вместо Multi-version Heap и зачем всё это упаковывается в PostgreSQL-wire протокол. Архитектура ещё подвижна, и сейчас — лучшее время, чтобы обсудить её с теми, кто каждый день эксплуатирует БД в продакшене.

Заглянуть под капот движка

Храните данные в мышах

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

Всё началось с тупой идеи. 

У меня есть мышь Logitech MX Vertical, которая постоянно перемещается между моей домашней машиной, рабочим ноутбуком и другими устройствами. Однажды я задумался: у этой штуки есть флэш-память. Она обязана быть, иначе как мышь запоминает настройку DPI между подключениями? А можно ли в этой памяти хранить что-то ещё?

Ага, мне было скучно.

Я решил использовать мышь в качестве крошечного USB-накопителя. Так как она физически перемещается между компьютерами, то, строго говоря, способна и переносить между ними данные.

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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 мин
Охват и читатели9.2K

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

Сегодня рассмотрим 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 мин
Охват и читатели12K

Этот пост написан по мотивам выступления, с которым мы с Шисянь Ван ездили на конференцию 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.7K

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

Я думал над этим вопросом несколько недель. И в итоге решил не искать ответ в виде
"возьмите правильный инструмент 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 мин
Охват и читатели21K

В начале 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.

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