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

Rust *

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

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

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

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

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

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

Читать далее

Новости

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

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

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

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

Читать далее

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

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

Команда 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 мин
Количество просмотров6.6K

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

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

Читать далее

Истории

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

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

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

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

Читать далее

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

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

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

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

Читать далее

Реализация шифра «Магма» на языке RUST

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

Привет! Сегодня мы продолжаем реализовывать шифрование. В этой статье мы рассмотрим алгоритм шифра "Магма", который был разработан и использовался в СССР.

Читать далее

Dioxus 0.6

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

Значительное улучшение инструментария: эмуляторы для мобильных устройств, магический Hot-Reloading, интерактивный CLI, и многое другое!

Читать далее

Баг в реализации SRWLock в Windows вешает многопоточные программы

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

Реализация SRWLock (Slim Reader/Writer Lock) на Windows может привести к серьёзным проблемам: многопоточное приложение может зависнуть (deadlock).

При частой конкуренции многих потоков, удерживающих shared_lock, и хотя бы одного потока, пытающегося получить unique_lock, возможно возникновение ситуации, когда потоки оказываются в состоянии взаимного ожидания. Код выглядит абсолютно корректным, но приложение зависает внутри вызова в WinAPI.

Это касается любых многопоточных программ для Windows, которые явно либо неявно используют SRWLock для синхронизации. В том числе написанных на старых реализациях Rust, пока в Rust не заменили реализацию для Windows, отказавшись от SRWLock (GitHub Issue). В том числе написанных на C# (фикса пока нет) и т.д.

Читать далее

Ускоряем Ruby, переписав C… на Ruby

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

В последнее время я часто видел обсуждения репозитория сравнения языков. В нём CRuby был третьим снизу, обгоняя по скорости только R и Python.

Автор репозитория @BenjDicken создал забавную визуализацию производительности каждого из языков. В одной из визуализаций из визуализаций Ruby по бенчмаркам Ruby оказывается третьим с конца.

Читать далее

Rust без прикрас: где мы продолжаем ошибаться

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

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

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

Сегодня вторая часть. Разберем несколько ошибок, которые выглядят безобидно, но тащат за собой баги, утечки памяти и необъяснимые фризы.

Начнем с первой проблемы при работе с .iter() и .iter_mut.

Читать далее

Сколько памяти нужно в 2024 году для выполнения миллиона конкурентных задач?

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

Помните сравнение потребления памяти для асинхронного программирования на популярных языках 2023 года?

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

Давайте снова проведём бенчмарки и изучим результаты!

Читать далее

RTS — Реактивный язык программирования свободных структур данных

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

Представляю вам свой open-source проект - RTS (Real-Time Script). Это реактивный язык свободных структур данных, опирающийся на новый подход к программированию. Проект я начал и продолжнаю писать на данный момент в одиночку начиная с 6 Декабря 2023 года. Пол года было потрачено на создание концептов и ещё пол года на саму реализацию.

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

Читать далее

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

25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Rust 1.83.0: новые возможности констант

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

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


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


$ rustup update stable

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


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

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

Допустим, вы решили изучить Rust

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

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

Посмотрим...

Система сборки или кино не для всех

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

Дистрибутив Radix cross Linux использует собственную систему сборки , которая, в свою очередь, является вполне самостоятельным продуктом.

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

Система сборки Radix cross Linux достаточно подробно описана на странице Overview.

Здесь мы рассмотим новые аспекты использования системы сборки на простых примерах «Здравствуй, Мир!» для создания независимых пользовательских приложений с применением набора инструментариев Radix cross Linux.

Предыдущие версии системы сборки не подразумевали использования компиляторов Clang и Rust как основных cross-компиляторов. Однако современные реалии привели нас к необходимости использования собственных инструментариев LLVM и RUST, но не в качестве основных (поясним это далее).

Дело в том, что множество современных пакетов прикладных программ, помимо GCC, используют компиляторы языка Rust и набор LLVM. Разработчиков привлекает тот момент, что для поддержки множества архитектур целевых устройств достаточно установить одно средство, вместо использования нескольких инструментариев (Toolchain), собранных из исходного кода GCC.

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

Читать далее

Разумный подход к «Considered Harmful»

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

Недавно мне попалась статья Against Best Practices, и в целом я согласен с посылом этого поста. Но у меня были и собственные мысли на эту тему, поэтому изложу их здесь.

Даже не особенно углубляясь в историю разработки ПО, вы легко найдёте манифест в жанре Considered Harmful («Считается вредным»), самый знаменитый из которых составил легендарный учёный-информатик Эдсгер Дейкстра. Другая распространённая аналогия таких документов в духе времени — это «наилучшие практики». Это не менее субъективный кодекс подобных законов, которым зачастую критически не хватает такой обоснованности, как у манифестов из первой категории. Притом, что, на мой взгляд, и первые, и вторые имеют право на существование, их важно понимать в контексте, так как без контекста их значение легко размывается.
Читать дальше →

Самодельный WiFi модуль к автоматике раздвижных ворот

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

Можно было купить готовый модуль, несмотря на его совершенно конскую стоимость в 6-7 тыс. рублей. Однако он не предоставлял наиболее востребованную для меня функциональность: не позволял открывать ворота автоматически "из коробки" при приближении к своему участку на автомобиле. Ну и, естественно, экономия на порядок тоже сыграла не последнюю роль.

Был выбран следующий способ реализации основной задачи: WiFi модуль в автомобиле пытается зарегистрироваться на домашней точке доступа. Если ему это удается - проверяется уровень сигнала. Если уровень сигнала слабый - значит приближаемся к участку и надо подать команду WiFi модулю на автоматике ворот на открытие. Если сигнал сильный - мы уже на участке и ничего делать не надо. Дополнительная функциональность - управление воротами по WiFi через веб-интерфейс, в том числе и с мобильного телефона.

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

Читать далее

Создание баз данных за выходные

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

В этой статье я расскажу вам, как использовать DataFusion для создания собственного опыта разработки баз данных.

Базы данных являются одними из самых сложных частей программного обеспечения, задуманных с момента появления вычислительной эры более полувека назад. [1] Почти каждая часть технологии в конечном итоге касается базы данных в той или иной форме. Несмотря на повсеместность баз данных в программном стеке, подавляющее большинство разработчиков были приучены относиться к базам данных как к более или менее черному ящику — сложным плотным чарам программного обеспечения, созданным волшебниками и знатоками, укрывшимися в элитных рядах компаний, занимающихся базами данных, или в таких местах, как Google. Поговорка для остальных из нас, как она есть, — никогда не пытайтесь написать свою собственную базу данных .

Тем не менее, несмотря на их долговечность, мы наблюдаем постоянные инновации в этой области, которая впервые началась с появлением Hadoop около 2 десятилетий назад. На сайте ClickBench теперь перечислено более 50 баз данных в его наборе тестов [2]. И это только аналитические движки. С учетом последних тенденций переписывания всех больших данных на Rust [3] не проходит и месяца, чтобы интересный новый проект не оказался в тренде Hacker News. В этой статье мы рассмотрим, насколько легко (или сложно) создавать базы данных с помощью Apache Datafusion и можете ли вы, будучи простым смертным, на самом деле реально создать собственную базу данных и внедрить инновации вокруг опыта разработчика.

Читать далее

Небезопасный Rust сложнее C

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

Для некоторых из вас содержание этой статьи окажется знакомым, особенно, если вы писали встраиваемый или unsafe код на Rust. Но я этого не делал, поэтому решил, что будет полезным задокументировать свой опыт максимально подробно. Так что предлагаю сразу перейти к делу.

В прошлом году я написал программу Photohash для индексации своего NAS и поиска дубликатов фото без использования хэширования, независимого от поворота изображения, и перцептивного хэширования. Чтобы полноценно задействовать все ядра процессора и диски, эта программа распределяет работу между воркерами, отвечающими за вычисления и ввод-вывод. Происходит это распределение по каналам, представляющим синхронизированные очереди задач.
Читать дальше →
1
23 ...