Как стать автором
Поиск
Написать публикацию
Обновить
55.35

Rust *

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

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

Система поддержки принятия решений на складе с GigaСhat

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

Допустим существует площадка, где некими специалистами выполняются конкретные операции и вам как руководителю данного процесса хочется оптимизировать расходы. Для помощи в подобных вопросах создана информационная система $metr (Сметр), которая основывается на трех вещах:

Читать далее

Новости

Непостижимая эффективность современных алгоритмов сортировки

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

Предупреждение о возможном конфликте интересов: автор этого документа также является соавтором реализаций ipnsort и driftsort, используемых в стандартной библиотеке Rust.

Сценарий

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

Читать далее

espanso — малоизвестный шедерв для повышения личной продуктивности

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

Герой обзора - утилита espanso, позволяющая на лету заменять текстовые фрагменты.
Опять прога на Rust. И опять впечатление "ух ты!", как от ruff и uv.

Читать далее

Polars — «убийца Pandas» на максималках

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

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

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

Читать далее

Первые Rust-библиотеки для работы с Yandex GPT и Yandex ART

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

В мире машинного обучения и генеративного контента одними из самых востребованных инструментов стали foundation models — большие модели, способные создавать текст, изображения и другой контент по запросу пользователя. Yandex активно развивает собственные foundation models, предоставляя их через сервисы Yandex GPT и Yandex ART. Когда мне потребовалось использовать модели в рамках своих проектов, я обнаружил, что не существует готовых библиотек на Rust по работе с Yandex ART и Yandex GPT.

Отсюда и родилась идея создать собственные библиотеки, способные взаимодействовать с API этого сервиса и реализующие их сложные структуры ответов и запросов. Должен сказать, что программирование — не моя профессия, работаю я в другой отрасли, хотя и хочу перейти в IT. Поэтому библиотеки могут показаться сырыми, недоработанными или содержащими «слабый» код. Здесь бы мне хотелось получить профессиональные комментарии по тому, что я сделал хорошо, что плохо. Заранее благодарю за здравую критику и полезные комментарии и предложения.

Читать далее

История Rust: от стартапа до продакшена

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


Вокруг Rust в Linux-сообществе до сих пор не утихают жаркие споры. Кто-то считает его спасением, а кто-то — проклятием. В дебатах сталкиваются две позиции: сторонники видят в нем ключ к безопасности и модернизации ядра, противники опасаются усложнения и нарушения традиционных подходов. 

Давайте разберем, как он появился, какие точки роста сделали его рабочим, где он уже побеждает и почему вы его недооцениваете. А также подскажем, как Rust-разработчикам сделать вклад в развитие реального open source-проекта. Детали под катом.

Читать далее

Неожиданный скачок продуктивности благодаря Rust

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

Бэкенд платформы Lubeno полностью написан на Rust. Он вырос до таких размеров, что я уже не могу удерживать все части его кодовой базы в голове.

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

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

Читать далее

Разворачиваем онлайн-игру на виртуальном сервере

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

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

Вступление

Будучи большим любителем Guild Wars 2, однажды я написал прототип с минимальной реализацией похожей системы боя. Мне хотелось, чтобы можно было самим создавать и настраивать бои. Недавно я добавил к прототипу редактор данных игры, веб-клиент и сервер для мультиплеера. После этого я арендовал сервер и загрузил туда игру, чтобы можно было поиграть с друзьями.

Читать далее

TitanRt 0.3 — Пишем свой CoinMarketCup: часть 1

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

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

Осторожно: много кода (с комментариями)...

Читать далее

Променял Rust на лайки

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

Пару дней назад я наткнулся на пост на HN про игру Tron Light Cycle. Если вы не знаете, что такое Light Cycle — позор вам. Кто только не писал Light Cycle. На самом деле, игра достаточно простая. И её писали раньше чисто для тренировок. Написать её просто, и в ней достаточно сложно что‑то запороть.

Но, кто‑то всё‑таки умудрился.

Читать далее

Vulkan с использованием Rust. Часть 1

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

Используем Vulakn API на Rust! На В этом руководстве мы шаг за шагом разберём, как создать Logical Device - основу для общения с вашей видеокартой. Без лишней магии, только чёткие объяснения и работающий код. Убедимся, что сложность Vulkan - это не страшно, а очень даже логично!

Читать далее

Создание интро в 2кб на Rust за вечер

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

В данной статье будет рассказано, как можно довольно просто сделать маленькое интро используя язык Rust. Будет очень много Unsafe и WinAPI кода, а так же предполагается, что читатель уже хоть немного знаком с OpenGL 3.3.

Читать далее

Как я сделал MoonTap — космическую кликер-игру в Telegram

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

Как я сделал MoonTap - космическую кликер-игру прямо в Telegram на Rust и Vue

Когда в Telegram появились первые кликер-игры вроде Notcoin, стало ясно: мессенджер идеально подходит для лёгких и социальных игровых проектов. Никаких установок, просто открыл ссылку и играешь.

Я решил попробовать свои силы и собрать свою игру - так родился MoonTap, космический кликер с монетками, бустерами и заданиями. На фронтенде - Vue и Canvas-анимации, а для бэкенда я впервые использовал Rust, хотя до этого писал только на Node.js.

Читать далее

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

TitanRt — реактивный рантайм для реального времени (и не только HFT)

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

Сегодня решил собрать воедино то, что я знаю о разработ��е высокочастотных систем в связке с Rust. Из кусков кода, по сусекам, что называется, по репозиториям наскреб и склеил с помощью готопоты достойную к вашему вниманию либу. Библа позволит сохранить время всем, кто стремиться одновременно и к скорости, и гибкости. Планирую сам активно юзать, чтобы перейти со старой асинхронной торговой инфры в истинные треды с закосом под ультра. И развивать либу под брендом TitanRt. А если сообществу зайдет, так вообще мотивации прибавиться.

Итак, TitanRt - typed reactive runtime для построения реактивных, низколатентных систем на Rust.

Если упростить: это минималистичная основа для приложений, которые живут в цикле событий, где важны:

Читать далее

MZ-Executable | Исполняемые файлы и MS-DOS (переработка)

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

Практически сразу, в PC-DOS, вместе с .COM файлами,
появились .EXE файлы (полн. "EXEcutable" или "исполняемые"). Сегодня речь пойдет именно об этом.
Поскольку история происходит снова в Microsoft, запутаться можно очень легко, в любом месте.

Читать далее

Междоменные (процессные) инварианты

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

Ястолкнулся с такой проблемой: логика между доменами сложнее самих доменов

Если строить систему по DDD: домены, агрегаты, use cases, события - всё красиво.

Потом пришёл сценарий: «Отменить заказ»

Я думал: `Order::cancel()`, вызову `inventory.release()`, `pricing.refund()`, и готово». Но...

Если доставка уже в пути - нужно создать возвратную накладную

Если платёж падал дважды - отменить всё, а при первой попытке только заморозить баллы

Если товара нет - перенести резерв на другой склад, пересчитать доставку, спросить клиента, если дороже

Если клиент повторил платёж - восстановить резерв и доставку

И я решил:

Самая сложная логика тут не в доменах, а между ними.

А в книжках по DDD, Clean Architecture, Hexagonal об этом не пишут.

Это напомнило проблему в ООП, когда каждый объект отвечает только за свою корректность (инвариант), а логическую зависимость при взаимодействии должен обеспечить ещё один класс "чистая выдумка". Также, у ФП есть более простые и явные способы.

Я напишу на Rust, потому что этот язык удобнее управляет бизнес правилами.

Читать далее

The Shit — Скажи опечаткам НЕТ

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

Всем привет! Часто ли вы опечатываетесь во время работы в терминале? Уверен, что каждый хоть раз забывал sudo или вместо cd писал cs. Как-то раз увидел алиас fuck для добавления sudo к предыдущей команде. Я заинтересовался и начал копать.

Читать далее

Думай как компилятор: позиции и значения в Rust

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

Некоторое время назад мне попался в Интернете вопрос о таком синтаксисе в Rust:

*pointer_of_some_kind = blah;

Автору вопроса было интересно, как компилятор понимает такой код, особенно, если в данном случае используется не ссылка, а умный указатель. Я написал ему пространный ответ, но потом подумал, что стоило бы ещё развернуть этот текст и переработать в статью для блога, на случай, если такой вопрос интересует и более широкую аудиторию.

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

Читать далее

Rust 1.89.0: явный вывод аргументов для константных обобщений, проверка синтаксиса времён жизни, i128 и u128 в extern C

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

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

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

$ rustup update stable

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

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

Что стабилизировано в 1.89.0

Как я устал от тормозов и закрытости Pinokio и написал свою портативную альтернативу за пару вечеров

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

Надоел Pinokio? Мне тоже. Популярный установщик для нейросетей оказался медленным, тяжеловесным и, что самое страшное, — закрытым "котом в мешке". Я заглянул под капот, ужаснулся и за пару вечеров написал свою альтернативу — PortableSource. Внутри статьи — полное разоблачение Pinokio с доказательствами и рассказ о создании по-настоящему портативного и честного инструмента.

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