Как я Rust в Python встраивал
Rust все популярней, а вместе c этим создается много библиотек для Python на Rust.
В данной статье узнаем, как создать простенькую библиотеку для Python на Rust на примере кодирования данных в Base 64.

Мультипарадигмальный компилируемый язык
Rust все популярней, а вместе c этим создается много библиотек для Python на Rust.
В данной статье узнаем, как создать простенькую библиотеку для Python на Rust на примере кодирования данных в Base 64.

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

История о том, как написать свой P2P-мессенджер, когда Discord и Telegram перестали устраивать. В статье разбирается устройство транспортного протокола с ECDH и ротацией ключей, решение проблем с NAT traversal, реализация голосовых звонков и работа с аудиоустройствами. Бонусом — откровенный опыт использования LLM для написания кода: что работает из коробки, а какие модули пришлось полностью переписывать.

Привет, Хабр!
Сегодня я расскажу, как подружить Node.js с Rust и создать нативный модуль с помощью библиотеки NAPI-RS. Если вы вообще писали расширения для Node.js на C++ через N-API или node-gyp, то знаете, какое это удовольствие, точнее, не удовольствие вовсе.
Постоянная суета с указателями, утечками памяти и тонкостями ABI. Rust приходит на помощь как свежий бриз: безопасная работа с памятью, высокое быстродействие и довольно простой синтаксис по сравнению с C++.

Издание SelaNi опубликовало результат анализа утечки секретных документов DARPA, слитых в сеть в начале недели. В документах в основном финансовые отчёты и перечисления финансируемых программ, но также там оказались планы и отчёты по экспериментам и разработкам проведённым агентством за период с 2009 до 2025 год.
Отчёт 2010 года свидетельствует о том, что основной проблемой военной промышленности США стал найм программистов. Основные критические системы, такие как банки, были написаны на COBOL, а в военной сфере по директиве DoD 3405.2 использовался только язык программирования Ada. Оба языка постепенно потеряли носителей и к 2010 году стало понятно, что им нужно искать замену.

Tilda раздражала, JS пугал, а Rust манил… В итоге я переписал лендинг на Rust + Leptos - просто потому что «а почему бы и нет?». Под катом: немного боли, пара побед, сравнение с конструктором и вывод о том, что заниматься фигнёй иногда очень полезно.

В прошлой статье на Хабре я рассказывал о том, как построил небольшое приложение - Solana Quiz, где пользователи отвечают на ежедневные вопросы и получают награды.
Вот ссылка на ту статью - чтобы не повторять архитектуру и базовые вещи:
👉 https://habr.com/ru/articles/956186/
С тех пор я значительно расширил функционал: я добавил on-chain награды, 7-дневные стрики и самое интересное - NFT за серию полностью правильных ответов.
Казалось бы, задача простая: получил событие - начислил токены - иногда выдал NFT.
Но за этим "иногда" скрывается целая гора нюансов: от Solana PDA до порядка вызовов в метадате и странных ошибок, которые не объяснены ни в одном официальном гайде.

Привет, Хабр!
Сегодня я хочу поделиться своим опытом и знаниями о pinning в Rust, замечательной конструкции Pin, которая поначалу вызывает вопросы, зачем нужен какой-то пин, если и без него всё работало?
Но вот незадача, без Pin не реализовать безопасно ни одну хитрую программку, самоссылающиеся структуры и связанные с ними асинхронные генераторы. В этой статье я расскажу, почему вообще появился Pin/Unpin, как он спасает от падений программы, и как правильно его применять на практике.

Представьте: вы строите систему верификации дипломов. Требования простые — данные должны быть неизменяемыми (привет, блокчейн) и при этом быстро доступными для запросов (привет, PostgreSQL). Казалось бы, идеальное решение — писать в оба хранилища. Но дьявол, как всегда, кроется в деталях.
Наш проект использует паттерн двойной записи (Dual-Write):
Solana — гарантирует неизменность и прозрачность данных о выданных дипломах
PostgreSQL (Supabase) — обеспечивает быстрые выборки и сложные запросы
Звучит красиво на архитектурных диаграммах, но в production всё не так радужно. Главная проблема — частичные сбои. Транзакция в Solana прошла успешно, диплом записан в блокчейн навечно, а вот запись в PostgreSQL упала. Пользователь получил подтверждение, но половина системы о его дипломе не знает.
Сегодня я покажу, как мы столкнулись с этой проблемой лицом к лицу и какие паттерны применили для её решения.

Привет, Хабр! В предыдущих статьях — «Rust без прикрас: где мы ошибаемся» и «Rust без прикрас: где мы продолжаем ошибаться» мы обсудили всякие неприятные грабли: бездумное использование unwrap(), игнорирование ошибок через let _ =, чрезмерное клонирование, проблемы с хвостовой рекурсией и прочие оплошности. Теперь пришло время взглянуть на другой пласт проблем.
На этот раз поговорим о том, как уничтожить производительность вашего Rust-приложения, особенно если оно щеголяет асинхронностью.

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

Команда AI for Devs подготовила перевод статьи Саймона Уиллиссона о том, как он решил поэкспериментировать с новой моделью OpenAI — GPT-5-Codex-Mini. Немного наглости, немного Rust и щепотка инженерного любопытства — и вот уже Codex CLI превращается в инструмент, который напрямую обращается к закрытому API. Получилось ли заставить модель нарисовать пеликана?

Если вы когда-нибудь задумывались о написании своего языка программирования, в особенности функционального, то должны быть в курсе, что лямбда исчисление — это основа всех функциональных языков. Я решил сделать цикл статей, где мы будем реализовывать интересные алгоритмы, используемые в компиляторах, а также различные исчисления. Лямбда‑исчисление — это фундамент, с которого я и предлагаю начать погружение в эту нору.
В этой статье я покажу как получить работающую под DOS программу, написанную на Rust.
Начинаем с установки Rust. Даже если он есть системный из пакетов, его недостаточно, так как мы будем (вынужденно) использовать nightly версию. Итак, идём на https://rustup.rs/, копируем предлагаемую строку и запускаем её в терминале. Чтобы команда заработала возможно потребуется доустановить curl. Имеет смысл выбрать в качестве ветки по-умолчанию nightly. Если вы выбрали не nightly, то нужно будет доустановить nightly тулчейн:

Почему бы не запустить своё ядро прямо на смартфоне? Без Android, без Linux — только Rust, загрузчик и паяльник. В этой статье расскажу о результатах своего эксперимента, как оживить голое ARM-железо, увидеть первые символы в UART и даже вывести что-нибудь на экран.

Может ли Rust заменить C? Этот вопрос беспокоил меня много лет. Тем временем я успел написать upb — библиотеку C для работы с Protocol Buffers, и сейчас являюсь её техническим руководителем. Вполне понятно стремление обеспечить безопасность памяти в пределах всего программного стека — поэтому и возникла идея портировать upb на Rust.
Притом, что мне приятны базовые принципы Rust, я долгое время относился к этой идее скептически и сомневался, что, портировав upb на Rust, удастся сберечь её производительность и компактность кода, которые мы с коллегами так старались оптимизировать. На самом деле, исходно я собирался написать статью о том, почему именно применительно к upb языку Rust никогда не сравниться с C по производительности.
Но недавно я открыл для себя одну технику, которая заставила меня немного переосмыслить этот вопрос. Я назову её «Rust без паник». Притом, что этот метод определённо не нов, мне нигде не удалось найти подробного разбора, в котором бы рассказывалось, как именно этот метод используется и какие проблемы решает. Правда, интересная дискуссия по этому поводу велась в теме Enforcing no-std and no-panic during build, где есть ссылки на некоторые релевантные треды из почтовой рассылки, посвящённой разработке ядра Linux. Вот другой интересный тред: Negative view on Rust: panicking
Надеюсь, эта статья позволит заполнить данный пробел.
Команда Rust рада сообщить о новой версии языка — 1.91.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.91.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

🦀 Практическое руководство по работе с аудио в Rust: от захвата с микрофона через CPAL до эффективного сжатия в Opus. Реализация системы с задержкой <50 мс и сжатием 42:1. Исходный код, тесты и метрики производительности.
Материал отлично подходит для использования AI-агентами: поставил задачу ИИ-ассистенту и он написал работающий диктофон всего с одной правкой.

Тема безопасного и эргономичного взаимодействия между Rust и C/C++ была популярна на конференции RustConf 2025, состоявшейся в Сиэтле, штат Вашингтон. Чендлер Каррут выступил с презентацией, в которой представил различные способы взаимодействия между Rust и Carbon — экспериментальным языком, который можно условно обозначить как «(C++)++». Он резюмировал, что, пусть возможности стыковки Rust с другими языками со временем расширяются, в обозримом будущем не стоит ожидать, что будет полноценно решена проблема его взаимодействия с C++. Поэтому как раз появляется ниша для Carbon, который может предложить иной подход для постепенного совершенствования существующих проектов на C++. Вот слайды к его презентации — для тех, кто хотел бы изучить код его примеров более подробно.

Присматриваемся к Расту, как возможному кандидату на реализацию задачи Card DOM. Рассматриваем, как он поддерживает полиморфные структуры данных, в частности, приведение типов между трейтами.