Обновить
94.1

Rust *

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

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

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

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


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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

Реализация SWAP токенов в сети Fuel: первый опыт с Rust, интеграция Mira SDK, боль

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

Очередная история о том, как за идею я ввязался в бесплатную авантюру.

Ко мне обратился товарищ с просьбой реализовать Telegram-бота, который позволял бы покупать криптовалюту по контракту в сети Fuel.
Подобные боты уже существуют, например, на Solana, но мы решили попробовать что-то новое — интеграцию на недавно вышедшей сети Fuel, так как ее экосистема бурно расширяется и подключается множество разработчиков к ее развитию.

Читать далее

Rust 1.84.0: MSRV при выборе зависимости, новый резолвер трейтов и API для отслеживания происхождения указателей

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

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


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


$ rustup update stable

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


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

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

Реализация шифра «Кузнечик» на языке RUST

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

Привет Сегодня мы рассмотрим, заключительный в цикле материалов, Российский шифр «Кузнечик».

«Кузнечик» — это современный стандарт шифрования в России и за рубежом. Опубликован был в 19 июня 2015 года. В наступающем 2025 году будем отмечать его юбилей.

Читать далее

Реализация Peer-to-Peer сетей на Rust: создание протокола обмена файлами с помощью libp2p

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

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

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

Читать далее

Решение Advent of Code на этапе компиляции с использованием макросов Rust

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

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

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

Читать далее