Все потоки
Поиск
Написать публикацию
Обновить
46.25

Rust *

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

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

Пример использования WebAssembly-модуля, скомпилированного из Rust, в React-приложении

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


Привет, друзья!


На днях прочитал интересную статью, в которой демонстрируется возможность использования WebAssembly-модулей (далее — Wasm), скомпилированных из Rust, в React-приложении.


Так вот, статья интересная, но автор толком ничего не объясняет, видимо, исходя из предположения, что читатели, как и он, владеют обоими языками программирования (JavaScript и Rust).


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


Исходный код проекта.


Если вам это интересно, прошу под кат.

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

SIM800L + STM32 Bluepill + Rust. Как оно?

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

Несколько лет назад сделал себе на Arduino блок мониторинга питания дачного котла от UPS. Как показала практика, связка Arduino MEGA + шилд на SIM900 со стандартными библиотеками работает очень нестабильно. Периодически всё зависает, само перегружается и т.д. Отладить это невозможно, поэтому стал искать другие варианты. В результате решил всё переделать на современных технологиях: взял за основу STM32 Bluepill, приобрел на али модуль SIM800L, но самое главное – весь код решил написать на Rust, купился на обещания его высокой надёжности. Что из этого получилось читайте дальше.

Нажми меня

Vange-rs: взгляд на реализацию WebAssembly в Rust

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

Вангеры одна из самых почитаемых и технологичных игр своего времени, продолжает жить и развиваться. Благодаря сплоченному сообществу игра получила множество усовершенствований: HD, 60 FPS, новые сетевые режимы и много другое. Vange-rs один из интереснейших проектов по Вангерам. Это rust версия игры, основной изюминкой которой является 3D рендер основанный на wgpu.

Запустить в браузере

Rust 1.57.0: константный panic!, пользовательские профили в Cargo и обработка ошибок выделения памяти

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

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


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


rustup update stable

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


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


Rust 1.57 привносит panic! в константные контексты, добавляет поддержку настраиваемых профилей в Cargo и стабилизирует API, позволяющие обработать ошибки резервирования памяти.

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

Применение Rust в разработке: страдания и высокий порог входа. Григорий Петров разбирается, когда этот язык необходим

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

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

Первая статья в серии - интервью с Григорием Петровым, DevRel из Evrone. Применять новомодный Rust в заказной разработке - решение, на первый взгляд, неочевидное. Готовых разработчиков мало, порог входа - высокий. Давайте узнаем, в каких условиях использовать Rust все-таки полезно? 

Гриша, расскажи, как вы в Evrone пришли к использованию Rust? 

13 лет назад, когда Evrone только начинался, мы специализировались на full stack Ruby решениях. Но с годами мы начали расширять палитру того, что предлагаем клиентам. Вначале у нас выделилось направление фронтенд - это React, Vue.js. Затем к нам приполз Python, как альтернатива Ruby, потому что многие клиенты выбирают стек технологий под уже существующие команды и процессы. 

И уже несколько лет мы используем Rust как комплементарную технологию, которая позволяет точечно ускорять наши решения на Python и Ruby в 10, а иногда и 100 раз. 

Теперь, когда к нам приходит бизнес и говорит: «Ну вы же знаете, что Ruby нетороплив, наша система уже 100 000 запросов в секунду, нам надо потратить еще вагон денег и переписать ее на Java. Да?» Мы такие: «Нет! Мы выделяем вот эти три точки, которые у вас под нагрузкой, и наши ребята переписывают их на Rust. У вас всё начинает работать быстро, надежно и при этом поддерживаемо, а бизнес фичи продолжают фигачиться с той же страшной скоростью». 

Читать далее

Rust — будущее инфраструктуры JavaScript

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

Rust - это быстрый, надежный и экономичный, с точки зрения памяти, язык программирования. Его признавали одним из самых любимых языков программирования шесть лет подряд (на основании опросов).

Созданный Mozilla, он теперь используется в FacebookAppleAmazonMicrosoft и Google для системной инфраструктуры, шифрования, виртуализации и низкоуровневого программирования.

Почему Rust сейчас используется для замены таких частей веб-экосистемы JavaScript, как минификация (Terser), транспиляция (Babel), форматирование (Prettier), комплектация (webpack), линтинг (ESLint) и другие?

Читать далее

Как хранить данные в png, не привлекая внимания санитаров

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

Всё началось с мема, который вы видите выше.

Сначала я посмеялся. А потом задумался: может ли быть так, что скриншот базы равноценен её снэпшоту?

Для этого у нас должно быть такое графическое представление базы, которое 1 к 1 отображает данные и структуру. Если сделать скриншот такого представления, из него можно восстановить базу.

Или... графическое представление и должно быть базой!

Это как?

Golang для Embedded Linux

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

При разработке очередной платформы перед командой АТОЛ встал вопрос выбора языка программирования/стека технологий/железа/фреймворка для создания решений. Железо было выбрано на базе относительно недорогой Linux-платформы STM32MP153/512MB DDR3/8GB eMMC. Эта платформа имеет на несколько порядков больше ресурсов, чем используемые в нашей основной массе решений LPC1768/LPC1778/LPC4078/STM32F207. 100% наработок кода компании для устройств были написаны на C/C++, однако прогресс не стоит на месте, и периодически необходимо актуализировать инструменты и технологии разработки, особенно с учетом новых аппаратных возможностей. Из статьи станет ясно, как мы дошли до жизни такой и почему выбрали Golang для создания очередного набора решений.

Выбор стека технологий важен для всех компаний, которые занимаются разработкой железа и перерастают крошечные embedded контроллеры на Cortex M0/M3/M4/M7. Обычно команды при переходе на новую платформу выбирают одно из двух решений: стараются сделать новую версию системы на новом железе/технологиях/архитектуре, превращая решение в нестабильный долгострой, или наоборот — вносят минимальное количество изменений, но иногда вместо совокупности положительных черт разных подходов получают совокупность отрицательных.

В статье исследованы особенности различных языков программирования/технологий (Java, Python, C/C++, Rust, Golang), их плюсы и минусы, сформулированы критерии выбора и представлен выбор команды АТОЛ.

Для анализа использован метод SWOT-анализа. В качестве источников данных — информация сайтов фреймворков. Помимо этого, косвенная информация о боли и страданиях разработчиков получена на Stackoverflow, и часть субъективных выводов сделана на основе моего экспертного мнения за более чем 30-летний опыт программирования.

Читать далее

Мультиплеерная игра на Rust + gRPC со спектатор модом. Часть 2

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

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

Читать далее

Мультиплеерная игра на Rust + gRPC со спектатор модом

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

Rust и gRPC. Все это вкупе с простым игровым движком. Небольшой туториал по разработке мультиплеерной игры.

Читать далее

Выпуск Rust 1.56.0 и 2021 редакция

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

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


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


rustup update stable

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

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

Создание и использование динамических библиотек в Rust

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

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

Читать далее

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

Как Rust-разработчики делают Веб безопаснее

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

Язык программирования Rust упрощает разработку более безопасного программного обеспечения. Что ещё предстоит делать?

Читать далее

Как я начал писать макросы для Rust на Gluon

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

Во многих языках есть специальный механихм для кодогенерации - макросы. Иногда из реализуют на отдельном достаточно примитивном языке, основанном на простой подстановке текста (препроцессоры PL/I и C, m4), но даже в таком варианте удается делать интересные и полезные вещи. Другой популярный вариант - макросы реализуются на том же языке, что и программа, в которой они используются. Такой подход ведет свое начало из Lisp (удобный тем, что формат программ и данных там одинаков), активно применяется в Julia, OCaml(camlp4/5), Scala, Haskell, Rust, а наибольшего развития получил в Nemerle, где макрос может может запускаться как до, так и после проверки и вывода типов, и в последнем варианте иметь доступ к типам.

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

Читать далее

RustCon Contest 2021 — соревнование для тех, кто пишет на Rust и тех, кто только к нему подступается

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

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

В-общем, анонсируем RustCon Contest — индивидуальные соревнования по программированию на rust, где опытные разработчики могут внести вклад в открытые rust-проекты, а начинающие - попробовать rust на вкус на простых и чуть более сложных задачках. И те, и другие могут выиграть билет на RustCon, получить фирменный мерч или приличную скидку. Подробности под катом.

Читать далее

RustCon Russia 2021 — собираем сообщество rust-разработчиков

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

Со времени последней конференции по языку программирования Rust прошло уже 3 года. Думаем, русскоязычному сообществу rust-разработчиков пора собраться вместе. 

На rust написаны или частично-написаны проекты Huawei, JetBrains, Rambler, Лаборатории Касперского, Нетологии, МТС, Kupibilet, Funcorp и количество проектов продолжает расти. К тому же в 2021 году Rust шестой раз подряд был признан самым любимым языком программирования по результатам ежегодного опроса Stack Overflow. Из разряда экзотики Rust постепенно перемещается … Впрочем, давайте вместе выясним, какую нишу он займет. Приглашаем спикеров и участников на единственную в России конференцию для тех, кто пишет языке Rust и тех, кто им интересуется. Темы и формат под катом.

Читать далее

Прокачиваем силу — Rust и Windows API

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


Недавно я написал статью Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад. В статье рассказывается о том, как изучать ассемблер на примере игрушки 2048. Возможно для целей самой статьи игрушка была подходящая, но конечный результат меня немного удручил. Бинарник размером в 10 килобайт, который потребляет 2 мегабайта памяти, из-за неправильно слинкованной библиотеки резал глаза.

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

А почему бы не сделать на Rust, и правильно прикрученных библиотеках? При этом, если вы знаете, что делаете, то вы можете запросто уменьшить количество потребляемой оперативной памяти, но при этом написать визуальную игрушку с использованием Windows API.

Причём это не значит, что вы будете использовать какую-то нестандартную библиотеку. Встречайте — windows-rs, проект поддерживаемый Microsoft. Ваш билет в мир Windows, если вы пишете на Rust.
Читать дальше →

Обработка ошибок в Rust

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

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

Читать далее

Безопасная многопоточность в Rust

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

Представьте ситуацию: вы решили добавить функционал в некоторую сущность (класс, структуру, ...). Для этого вам понадобилось хранить внутри сущности дополнительные данные. Вы добавляете приватные поля, меняете и читаете их внутри методов, интерфейс методов не изменяется, и всё выглядит хорошо. И не просто выглядит, а компилируется, запускается и проходит тесты. Красота... А потом, в один прекрасный день, прод падает. И может быть даже, теряет часть важных данных. Вы с коллегами начинаете искать причину поломки. И оказывается, что та сущность, которую вы дополняли год назад, делится между несколькими потоками, а поля добавленные вами не потокобезопасны и поэтому гонка за доступ к ним в какой-то момент вызывает их повреждение. Неприятно, согласитесь? Хотелось бы иметь инструмент, позволяющий избегать подобных ситуаций. И язык программирования Rust такой инструмент предоставляет.

Читать далее