Как стать автором
Обновить
82.98

Rust *

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

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

Радиомаяк для LibreSDR и финальные доработки

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

Прошлую свою заметку закончил на желании разобраться как управлять передачей на LibreSDR и организовать вывод PTT. Некоторым хитрым образом это удалось сделать. Кроме того, исследовал возможность писать на Rust для LibreSDR с использованием библиотеки libiio. Получилось сделать автономный CW маяк, работающий прям на LibreSDR без использования других компьютеров.

Как это работает?

Rust 1.85.0 и Rust 2024

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

Команда Rust рада сообщить о новой версии языка — 1.85.0, а также о стабилизации 2024-й редакции. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.85.0 вам достаточно выполнить команду:


$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →

Кофе и крабы. Вызов Rust-кода из Java

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

Java — один из наиболее часто используемых языков программирования, который мы еще не обсуждали в нашем Rust Interop Guide. В этой статье мы рассмотрим три различных метода вызова кода Rust из Java: JNI, JNR-FFI и Project Panama. Мы покажем различия между этими методами и проведем базовый бенчмаркинг для сравнения их производительности. Эти методы работают не только для Java, но и для других языков JVM, таких как Kotlin. Здесь мы в основном сосредоточимся на Java, но примеры Kotlin доступны в ветке Kotlin нашего репозитория GitHub.

Эта статья является частью нашего Rust Interop Guide.

Читать далее

GameRoy: динамическая компиляция на примере высокоточной эмуляции игр для Game Boy

Время на прочтение19 мин
Количество просмотров3K

На протяжении более двух лет я много времени уделял разработке моего собственного эмулятора Game Boy, GameRoy. Я немало успел сделать. В эмуляторе был готов графический пользовательский интерфейс (с отладчиком и дизассемблером), сама программа прошла многочисленные тесты и могла сравниться с некоторыми наиболее точными эмуляторами. Я даже портировал её на Android!

Читать далее

Пишем простой драйвер на Rust

Время на прочтение9 мин
Количество просмотров16K

Популярность Rust неуклонно растёт, а с ней и сопутствующая экосистема. И оно не удивительно, ведь это единственный современный язык, который обеспечивает безопасность памяти и многопоточной обработки на этапе компиляции, предоставляя мощную и богатую систему сборки (cargo), а также всё больше различных пакетов (крейтов).

В своей повседневной работе я по-прежнему придерживаюсь C++, так как основная её часть связана с низкоуровневым программированием систем и ядра, а из этого языка легко задействовать написанный на С Windows API и COM API.

Rust — это язык для системного программирования, то есть он может справляться с теми же задачами, что и C/C++. Основное неудобство при этом создаёт громоздкий синтаксис, необходимый для преобразования типов С в типы Rust. Но это неудобство можно преодолеть, используя подобающие обёртки и макросы.

Короче говоря, я решил попробовать написать простой и полезный драйвер WDM. Это будет Rust-версия драйвера «Booster», о котором я пишу в своей книге (Windows Kernel Programming), позволяющего изменять приоритет любого потока на любое значение.
Читать дальше →

Rust в ядре Linux: лекарство или яд? Споры о будущем

Время на прочтение4 мин
Количество просмотров13K


В мире разработки программного обеспечения, особенно в области системного программирования, языки C и Rust занимают особое место. C, как проверенный временем язык, десятилетиями служил основой для создания операционных систем, включая Linux. Однако с появлением Rust, который позиционируется как более безопасный и современный ЯП, начались жаркие споры о том, стоит ли переписывать части ядра Linux на Rust или оставить всё как есть. Дискуссия вышла на новый уровень, когда разработчики Linux начали активно сопротивляться внедрению Rust. Кристоф Хеллвиг даже сравнил нововведение с «раковой опухолью». Что стоит за этим противостоянием, и почему Rust вызывает такие полярные мнения?
Читать дальше →

Как стать властелином отладчика: помогут ELF, DWARF и много магии

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

Привет, Хабр! Меня зовут Константин, я работаю в команде файлового доступа в YADRO. Помимо основной работы, я пишу в open source, работаю над несколькими проектами — в том числе над дебаггером BugStalker (BS) на Rust. 

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

Если уже решили писать свой отладчик, дочитайте до конца — там будет аналитика, которая поможет не наступить на Rust-грабли.

Читать далее

Параллельный A на Rust и Rayon: ищем путь для воробушка*

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

Привет, Хабр! Сегодня у нас задачка из мира природы: представьте, что маленький воробушек потерялся в городе. Ему нужно срочно найти путь домой, а дороги кишат кошками, людьми и прочими препятствиями. Разумеется, вручную искать маршрут — не вариант. Нам нужен алгоритм, а лучше параллельный, чтобы воробушек не ждал вечность.

Какой алгоритм взять? Конечно же A*. Он и кратчайший путь найдёт, и с умом его построит. Но в одиночку он справляется медленно. Поэтому подключаем Rayon — библиотеку для многопоточных вычислений в Rust.

Читать далее

Про Rust — просто. Что читать в каком порядке?

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

Друзья! Многие из вас, возможно, как и я, интересовались изучением и использованием в работе очень эффективного и востребованного языка программирования Rust но, как и я, оставляли свои попытки из-за сложности, запутанности и многослойности доступного материала и книг по этой теме.

Лично я делал не меньше 5 попыток на протяжении последних 10 лет, прорабатывая, большей частью в свободное и личное время, литературу, некоторые книги по несколько раз, в поисках ответов на простые человеческие вопросы - как свободно писать на Rust и решать, как орешки, ежедневные задачи, не страдая от головной боли и хорошо понимая, что происходит и почему простая программа не компилируется.

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

Читать далее

Я размышляю о языке Rust: почему он может стать языком будущего

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

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

Читать далее

RabbitMQ на Rust: библиотека Lapin

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

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

Сегодня рассмотрим библиотеку Lapin в Rust. Lapin — это библиотека, реализующая протокол AMQP 0.9.1, она помогает взаимодействовать с RabbitMQ.

Читать далее

Стандартная библиотека С не потокобезопасна: проблему не решает даже Rust

Время на прочтение14 мин
Количество просмотров6.2K

Мы работаем над базой данных EdgeDB и в настоящее время портируем с Python на Rust существенную часть кода, отвечающего за сетевой ввод/вывод. В процессе работы мы узнали много всего интересного.

Читать далее

Применение Rust в UEFI/BIOS

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

На каком языке пишут программы для BIOS? Ответ на этот вопрос кажется очевидным: Си и ассемблер. Да, вот так коротко и просто. Существуют и другие инструменты и языки, но так исторически сложилось, что на такой “низкой” глубине выживают только они. В настоящее время здесь доминируют два основных языка, причем с явным перекосом в одну из сторон. В последние годы наблюдается значительный рост популярности языка Rust, который стал серьезным конкурентом одного из фаворитов. Проникнув в ядро Linux, где ранее никому не удавалось потеснить Си, Rust продолжает расширять свое влияние и на другие сферы разработки. Именно с идеи попробовать и сравнить началось мое путешествие по написанию EFI-утилиты на Rust для BIOS.

Читать далее

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

Гайд по подготовке к собеседованию для Backend-разработчиков

Время на прочтение7 мин
Количество просмотров16K

Недавно я провёл своё 40-е собеседование в Booking.com, где оцениваю кандидатов по кодингу, системному дизайну и код‑ревью. Я хорошо понимаю ожидания от кандидатов на разные уровни: core developer, senior developer и engineering manager. Эти знания могут быть полезны для тех, кто готовится к собеседованию в Booking.com или других крупных компаниях с аналогичной структурой.

Читать далее

Кастомный контроллер Kubernetes на Rust

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.8K

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

Сегодня я расскажу, как создать кастомный контроллер для Kubernetes на Rust. Кастомные контроллеры нужны, чтобы автоматизировать действия, которые Kubernetes сам по себе не умеет.

Читать далее

Создание бэкап-утилиты ReBack на Rust: от проблем до решения

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

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

Меня зовут Иван, я автор Telegram‑канала и сайта «Код на салфетке». Уже три года я изучаю Python, а последний год занимаюсь фрилансом.

В разработке мне очень нравится Python, но в какой‑то момент я понял, что пора двигаться «вширь» и изучать второй язык (при том, что я немного знаком с Java и JavaScript, но эти языки меня не устроили по ряду причин). По итогу я выбрал Rust, т.к. в сравнении с Python он показался мне одновременно сложным и увлекательным — именно это разожгло мой азарт. Но обо всём по порядку.

Читать далее

korah: CLI-команда для запросов на естественном языке

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров696

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

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

В итоге я решил начать с более реалистичного подхода — разработать небольшую CLI-утилиту, которая преобразует запросы на естественном языке в вызовы встроенных инструментов. Напрашивается идея генерации и выполнения shell-команд, но на практике этот подход неэффективен. LLM часто путаются в аргументах командной строки и не всегда корректно интерпретируют вывод. К тому же, возникают проблемы с безопасностью предоставления LLM доступа к командной строке. Поэтому я сосредоточился на обработке запросов с помощью ограниченного набора заранее определённых инструментов.

Читать далее

Неочевидные плюсы языка программирования

Время на прочтение12 мин
Количество просмотров4.9K

Раст хорош, все это знают. Инвестируешь время в язык программирования, кайфуешь, работаешь c рисками, задаешься вопросом - а может, раст еще круче? Почему бы, например, не изучить солидный проект на плюсах (5k звезд на гитхабе) - и мигрировать его. Вроде, все так делают, но может, суть в миграции идей, а не кода. Быть может, мы найдем ответы о выразительности языка, читаемости и скорости программы. Возможно, нам станет ясно - а друг ли наш компилятор, но скорее всего, мы насладимся эстетикой процесса проектирования приложения на растe.

Страна богата идеями, как читать код: блок-схемы, концептуальные модели, файл через файл и т.д. К сожалению, рабочий для меня метод - это чтение всего подряд. Я выбрал тему, о которой большинство разработчиков слышали точно (хотя бы краем уха): веб-сервера. Далее в тексте будем анализировать, как устроен веб сервер crowCpp (ссылка будет ниже) и мигрировать (скорее воплощать его идеи) на язык программирования раст.

Читать далее

Rust 1.84: новый релиз отличного языка программирования. Еще лучше, еще эффективнее, как всегда

Время на прочтение6 мин
Количество просмотров13K

Источник изображения.

Вышел новый релиз языка программирования Rust версии 1.84. Этот язык общего назначения изначально разрабатывался проектом Mozilla, но теперь его поддерживает независимая некоммерческая организация Rust Foundation. Rust ориентирован на безопасную работу с памятью и обеспечивает высокий уровень параллелизма выполнения задач, не прибегая к сборщику мусора или полноценному runtime (runtime ограничен базовой инициализацией и поддержкой стандартной библиотеки). Что нового? Давайте разбираться.
Читать дальше →

Как просто добавить ИИ в приложения на Rust: универсальный опенсорсный инструмент

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

Системный разработчик ИТ-компании «Криптонит» написал статью про новый инструмент на Rust, который облегчает запуск моделей машинного обучения и их внедрение в приложения. Дальше публикуем текст от первого лица.

Статья написана по материалам выступления Михаила на RustCon 2024. Посмотреть видеозапись доклада можно в VK Видео.

Читать далее