Обновить
64K+

Rust *

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

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

Разработка Platinum OS на базе Samsung M52

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

Начал портировать свою операционную систему Platinum OS на Samsung Galaxy M52. В основе — Ubuntu 26.04 LTS, собственная графическая оболочка, службы и пакеты приложений. Разблокируемый загрузчик телефона позволяет запускать модифицированные загрузочные образы и экспериментировать с Linux на настоящем устройстве.

Читать далее

Новости

Семь мест, где «S3-совместимое» хранилище ведёт себя не как AWS

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

Код, который отлично работает с AWS S3, на Ceph RGW или MinIO может упасть с пустым текстом ошибки. Разбираю семь таких мест из собственного клиента, с кодом и объяснением, почему сервер отвечает именно так.

Читать далее

Ваш future весит два килобайта, и виновата одна фигурная скобка

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

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

Возьмём асинхронную функцию. Заведём в ней буфер на килобайт, подождём чего-нибудь, потом прочитаем из буфера байт. Делали так тысячу раз: читаем из сокета, разбираем ответ, идём дальше, в общем — ничего особенного.

Такая функция возвращает future размером 1026 байт. А если передвинуть буфер так, чтобы он умирал до ожидания — банально, обернуть в фигурные скобки, — размер упадёт до 2 байт.

Прикинем, что это вообще значит. Сервис держит десять тысяч соединений и на каждое заводит такую задачу. Первый вариант — 10 мегабайт под буферы, которые в момент ожидания никому не нужны. Второй — 20 килобайт. А на микроконтроллере, где памяти к примеру всего 128 килобайт, первый вариант не влезет вообще, а второй займёт от неё шесть сотых процента.

Сегодня посмотрим, в чем же тут беда.

Читать далее

Как плагин обновлений Tauri ломает HTTPS на ALT Linux

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

Приложение на Tauri 2 проходит все тесты на Ubuntu, а на ALT Linux теряет HTTPS сразу после проверки обновлений. Разбираю, почему так происходит, как это воспроизвести и как исправить одной функцией в своём коде.

Читать далее

Написал менеджер буфера обмена на Rust, потому что Win+V меня добил

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

Есть встроенный в Windows Win+V. Я честно пользовался им года полтора. А потом однажды скопировал кусок кода, полез искать то, что копировал двадцать минут назад, и понял, что искать там нечем. В Win+V нет поиска. Совсем. Список, по которому ты скроллишь глазами. Двадцать пять элементов, картинки вперемешку с текстом, и ты листаешь колёсиком, как ленту, пытаясь вспомнить, как выглядела нужная строчка.

Ещё он не помнит историю между перезагрузками так, как мне хотелось, теряет то, что я закреплял, и живёт своей жизнью где‑то в облаке аккаунта Microsoft, о чём я стараюсь не думать.

В общем, в какой‑то вечер я решил, что напишу своё. Получилось то, чем я теперь пользуюсь каждый день, и мне кажется, оно вышло достаточно аккуратным, чтобы показать. Называется ClipVault. Дальше расскажу, как оно устроено внутри, что я решил в него не добавлять и почему, и где скачать, если захотите потыкать.

Читать далее

Как мы сэкономили 100 ТБ за счёт оптимизации DNS-кэша сервиса 1.1.1.1

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

Платформа Big Pineapple — на базе которой работают 1.1.1.1Gateway DNSDNS FirewallAS112 и ряд других DNS-сервисов Cloudflare — в любой отдельный момент времени хранит 250 млрд. кэш-записей. При таких масштабах использование даже одного лишнего байта на запись стоит нашему парку машин более 250 ГБ памяти.

Озадачившись этой проблемой, мы последовательно внесли пять изменений в механизм сохранения кэш-записей, сократив объём памяти, необходимый для хранения одной такой записи, более чем вдвое. В общей сложности нам удалось освободить примерно 100 ТБ по всему парку, что равнозначно объёму RAM в 130 из наших серверов 13-го поколения. При этом также ускорилась работа кэша. Пропускная способность при вставке записей выросла на 43%, а задержка поиска упала на 19%. Причём за счёт сокращения числа аллокаций и повышения локальности данных жертвовать скоростью ради экономии памяти не пришлось.

Читать далее

Rewrite It in Rust: когда переписывание действительно оправдано

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

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

Разобраться в RIIR

«Лучшие» практики Rust, которые вас подведут. Часть 2

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

Ну, привет.

В январе мы разбирали пять привычек, которые звучат разумно, а на деле мешают: дженерики на каждый параметр, Arc<Mutex>

Пока их читал, до меня дошло, чего не хватало той статье. Все пять историй по сути про одно и то же, просто я тогда этого не увидел. Мы везде платим сейчас за что-то, что, скорее всего, не случится никогда. Строим абстракцию под вторую реализацию. Обобщаем под тип, который никто не подставит.

Сегодня — ещё пять таких же «лучших» практик. Трейт на случай смены базы. Лайфтаймы в структурах ради аллокаций, которые никто не считал. Строка #[derive(...)], которую копируют не глядя и однажды сливают пароль в лог. Newtype на каждое число. И оптимизации, которые воткнули до того, как кто-нибудь вообще открыл профилировщик.

Читать далее

CADBase: Инженерная Open Source платформа для обмена 3D-моделями на стеке Rust, WASM и WebGPU

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

Обмен чертежами и инженерными данными сегодня ограничен тремя путями: сложные внутренние PDM-системы требуют покупки дорогих лицензий для каждого внешнего контрагента, коммерческие облачные платформы представляют собой закрытый «черный ящик» без доступа к коду, а локальные хранилища (NAS) не дают ни 3D-просмотра, ни карточек изделий.

Идея открыть исходный код закладывалась с самого старта проекта, но была реализована поэтапно. Первым шагом в 2023 году стало открытие фронтенда (cdbs-app) под лицензией MIT. В 2026 году, с релизом v0.3.2, в статус Open Source под лицензиями GNU AGPL v3.0 и PostgreSQL License перешли все оставшиеся части платформы, полностью закрывая этот долг перед сообществом. Теперь это полноценное, независимое и технологически продвинутое решение для инженерных команд.

Читать далее

EvertyDisplay: что я сделал и зачем

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

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

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

Читать далее

Zed: Великий и ужасный

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

Zed — новый редактор, написанный почти полностью на Rust. Своим слоганом он сразу заяляет то, для чего предназначен: Zed — Your last next editor.

Для меня Zed оказался нужен по следующим причинам: не устраивало наличие 5+ редакторов под разные языки программирования; требовалось иметь интеграцию с ИИ, чтобы тот мог вносить точечные изменения в код с автозапуском тестов и генерировать коммиты; хотелось найти что-то полегковеснее условных PyCharm, Intellij IDEA и им подобных; искал редактор, который без проблем сможет работать с WSL (в принципе, подходит большинство, но возвращаемся к вопросу о числе редакторов для разных проектов, так что нужно было “1 раз и чтобы навсегда”)

Я прошел через стадию отрицания при настройке (нет обычных кнопок Run и Debug, повсюду! Максимально непривычный интерфейс), но когда всё заработало, остался лишь один вопрос: почему я не слышал о Zed раньше?

Читать далее

Я добавил монитор, которого не существует. EvertyDisplay и пространство за краем экрана

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

С Вами Артур Валиев V.

Когда-то давно я начинал писать музыку на пятнадцатидюймовом ЭЛТ-мониторе. Кажется, это был какой-то старенький 550S — огромная тяжёлая коробка с выпуклым стеклом, занимавшая приличную часть стола.

А ещё у меня был диск.

Один из тех дисков из далёкого и уже почти забытого компьютерного прошлого: сборник программ, который мой брат когда-то купил на Горбушке. Я не знаю, зачем он его купил. Диск несколько лет лежал среди игр, драйверов и прочего компьютерного хлама, пока однажды после игр, учёбы и обычной подростковой суеты мне просто не стало скучно.

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

Не писать музыку. Не заниматься продакшеном. Не строить планы на будущее. Просто нажимать на квадратики и слушать, что получается.

Зачем я вообще начинаю статью про системное приложение для Windows с какого-то старого диска и ЭЛТ-монитора?

Потому что эта статья на самом деле не столько про мониторы.

Она про пространство.

Читать далее

Мы измерили платный антидетект‑браузер: canvas совпадал с чистой машиной байт в байт. Потом сделали свой, открытый

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

Антидетект‑браузеры — инструмент, которым агентства ведут десятки рекламных кабинетов и аккаунтов маркетплейсов с одной машины: у каждого профиля свой отпечаток, свой прокси, свои cookies. Стоят они $30–150 в месяц на команду, и все до одного закрытые. В интерфейсе — зелёные галочки «canvas: защищён», «WebGL: защищён». Что на самом деле уходит сайту — не знает никто, включая, как выяснилось, пользователей.

Мы взяли один из популярных продуктов, поставили рядом с настоящим Chrome на одном Mac и сравнили ~250 значений отпечатка. Результат стал причиной написать свой. Ниже — методика, которую можно повторить на любом антидетекте за десять минут, что она показала, и как в итоге устроен Fury — открытый форк Chromium, где подмена делается в C++ у источника значения, а не инжектом JS.

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

Читать далее

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

Декларативные макросы в Rust: полное руководство

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

Макросы - это механизм генерации кода во время компиляции. В отличие от макросов в C, где препроцессор работает исключительно на уровне текста, макросы Rust работают с токенами языка, а не с текстом программы. Процедурные макросы получают TokenStream и возвращают новый TokenStream, а декларативные сопоставляют поток токенов с заданными шаблонами. После раскрытия макросов полученный код компилируется так же, как если бы его написал программист вручную.

Читать далее

Реверс‑инжиниринг электросамоката и новая прошивка для него на Rust

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

Я выполнил реверс‑инжиниринг оборудования и прошивки своего электросамоката Egret GT. В статье будет рассказано о том, как мне удалось забраться внутрь, проанализировать обмен данными между компонентами и отреверсить прошивку.

Читать далее

Холмс, 993 вызова исчезли, и лучше не становится. Три ловушки Rust IPC в Tauri 2

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

Холмс, я убрал 993 лишних IPC-вызова, и моё приложение стало тормозить в два с половиной раза сильнее. В логах было тихо. Бэкенд на Rust молчал. На границе с WebView творилось что-то необъяснимое…

Следствие начинается!

Life Cycle: что остаётся после того, как тебя больше нет

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

Две недели назад я ехал к отцу и не успел примерно на сорок минут.

Ему было 84 года, последние месяцы он был совсем плох, поэтому сама возможность такого исхода не была неожиданностью. Я девятый ребёнок в семье и самый младший. Я метис: отец был кумыком, мама русской. Маму я похоронил в 2016 году. Из всей большой семьи именно я жил в Ставропольском крае, и когда близкие сообщили, что отец совсем плох, я выехал к нему.

Когда приехал, его уже не было.

Я спокойно могу говорить об этом. Не потому, что мне всё равно, и не потому, что смерть близкого человека можно рационализировать несколькими красивыми фразами. Просто мне не хочется делать из этой истории просьбу о жалости. Отец прожил очень длинную жизнь. У меня была возможность знать его, разговаривать с ним, спорить с ним. Это уже огромное количество времени.

Но эти сорок минут почему-то заставили меня думать не столько о смерти, сколько о времени.

Меня зовут Артур Валиев. Я программист. Раньше я уже пытался разговаривать через Rust о совсем не технических вещах — например, о любви. И чем дольше я пишу код, тем чаще ловлю себя на довольно странной профессиональной деформации: я начинаю смотреть на собственную жизнь как на систему, которую желательно хотя бы не оставлять в заведомо некорректном состоянии.

На этот раз мне захотелось попробовать описать не любовь.

Мне захотелось описать конец жизненного цикла.

Читать далее

Rust на вырост. Почему мы изучаем язык, который не входит в наш основной стек

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

Хабр, привет! На связи Алексей Постригайло, старший партнер интегратора «Энсайн».

Если размышлять об идеальной разработке, я бы вообще хотел, чтобы ошибка не уходила дальше разработчика, потом она только дорожает. Код уже ушел в тестирование, разработчика надо возвращать в старую задачу, восстанавливать контекст, а после исправления заново запускать проверки.

Rust нам интересен тем, что убирает часть этой работы. И хотя в основной стек этот язык пока не входит, мы осваиваем его заранее. Нам важно проверить: Rust действительно снимает часть будущих проблем или же переносит стоимость разработки в начало проекта? Об этом и поговорим.

Читать далее

Как подружить расширение Claude Code для VSCode с моделями и подпиской OpenAI

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

Мост на Rust, который поселил модели GPT внутри расширения Claude Code для VSCode - через существующую подписку OpenAI, без API-ключа и ручного запуска серверов.

Читать далее

Вместо конвертации ассетов перепишу с нуля рантайм игры

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

Допустим, вы хотите перенести модельку из одной игры в другую.

Классический путь — извлечь, перегнать в промежуточный формат, адаптировать под целевой движок и собрать заново. Звучит рационально, практично и таких решений не мало:

OpenAssetTools / ZoneTool автоматизируют процесс конвертации для Call of Duty

UE Viewer экспортирует данные Unreal в GLTF, PSK, DDS и др.

Мы сегодня рассмотрим альтернативный путь. Как вам идея переписать рантайм целевой игры с нуля и добавить нативную поддержку чужих ассетов? Моя попытка сделать что‑то подобное привела к созданию экспериментального движка IW4L, основой для которого является IW4 (Call of Duty Modern Warfare 2 2009).

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