Как стать автором
Обновить
59.63
Рейтинг

Rust *

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

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

Go против Rust — производительность вне конкуренции

Программирование *Go *Rust *

В статье Наблюдение за выполнением конкурирующих задач в Go и Rust коллега cpmonster привёл весьма интересные результаты:


Программа на Rust показала намного большую производительность при вычислении членов возвратной последовательности, чем программа на Go: 367 млн. итераций в секунду против 44 млн.

Ну, в 1.5 раза… Ну, в 2 раза… Но семь гвардейцев за два дня — это слишком, тем более что тут "гвардейцев" больше восьми!


Или нет, не слишком? В общем, потенциал любопытства пересилил другие потенциалы и я провёл своё исследование.

Читать дальше →
Всего голосов 90: ↑88 и ↓2 +86
Просмотры 19K
Комментарии 84

Новости

Используем клиентский процессор по максимуму. Часть 2: SIMD + мультипоточность

Блог компании RUVDS.com Высокая производительность *Программирование *Rust *WebAssembly *
Tutorial

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

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

Вживую увидеть прирост скорости можно на онлайн-демо. На моём компьютере она составляет ~900% по сравнению с обычной реализацией на wasm.
Читать дальше →
Всего голосов 56: ↑56 и ↓0 +56
Просмотры 4.4K
Комментарии 10

Rust 1.61.0: пользовательские коды возврата в main, расширение возможностей const fn и изменение IO-блокировок

Open source *Программирование *Системное программирование *Компиляторы *Rust *
Перевод

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


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


rustup update stable

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


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

Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Просмотры 3.6K
Комментарии 1

Rust с 0 до 80% для JavaScript разработчиков

JavaScript *Rust *TypeScript *
Перевод

Это список тем, которые помогут вам быстро понять Rust, если вы разработчик JavaScript. Есть много учебников, которые начинаются с нуля. Но если вы уже знаете что-то еще, почему бы не сравнить их?

Это различия, на которые я хотел бы сослаться перед тем, как приступить к Rust, вкратце.

Читать далее
Всего голосов 15: ↑6 и ↓9 -3
Просмотры 4.8K
Комментарии 13

Используем клиентский процессор по максимуму. Часть 1: Rust + WebAssembly

Блог компании RUVDS.com Высокая производительность *Программирование *Rust *WebAssembly *
Tutorial

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

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

Прирост производительности при использовании всех техник оптимизации по сравнению с реализацией на чистом JS может составлять ~1000%: от 8–9 до 100–110 фпс. Это можно проверить на интерактивном онлайн-демо, позволяющем также поиграться с числом потоков, способом вычислений и формой фрактала.
Читать дальше →
Всего голосов 64: ↑64 и ↓0 +64
Просмотры 6.6K
Комментарии 9

Интеллектуальный брутфорс: пишем головоломку и солвер для неё

Блог компании билайн бизнес Информационная безопасность *Занимательные задачки Rust *Игры и игровые консоли
Перевод

Небольшое предисловие


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


Также мне посчастливилось изучать структуры данных в Политехническом институте Ренсселера, где в то время студенты профессора Катлера (привет, Барб!) ежегодно участвовали в соревновании по написанию солвера головоломок. Каждый год игра менялась, и в мой год это была Ricochet Robots, которая по сути является головоломкой со скольжением по льду для нескольких игроков. Мне очень понравилось это задание (и я победил в соревновании!), после чего я продолжил участвовать в соревнованиях в качестве ассистента преподавателя.

Цель этой задачи заключалась в том, чтобы познакомить всех с рекурсией и поиском в глубину. Программе передавались исходное состояние игры, а также максимальная глубина рекурсии. Необходимо было вернуть или кратчайшее решение или все возможные решения минимальной длины. В соревнованиях игрокам могли или сообщать, или не сообщать предел глубины; кроме того, возможны были головоломки, не имеющие решения. Я многому научился и получил кучу удовольствия, так что, возможно, вам это тоже понравится.
Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Просмотры 3K
Комментарии 4

Наблюдение за выполнением конкурирующих задач в Go и Rust

Go *Параллельное программирование *Rust *
Из песочницы

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

Все обсуждаемые здесь измерения проведены на единственной системе с более или менее случайными характеристиками. Хотя она довольно типична, то есть, не слишком хороша и не слишком плоха, выполненное в таком объеме исследование заведомо не претендует на полноту. Заинтересованный читатель может повторить его в любой подходящей среде, загрузив исходный код с GitHub (ссылка на репозиторий приведена в конце). 

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

Читать далее
Всего голосов 19: ↑16 и ↓3 +13
Просмотры 8.6K
Комментарии 10

Rust и ООП

Блог компании OTUS ООП *Rust *

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

В данной статье я постараюсь продемонстрировать, какие идеи и принципы из ООП позволяет реализовать Rust, и как это работает на простых примерах.

Читать далее
Всего голосов 17: ↑10 и ↓7 +3
Просмотры 6.3K
Комментарии 27

Мини-игра на Rust + macroquad

Блог компании OTUS Разработка игр *Rust *

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

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 3.9K
Комментарии 8

Rust 1.60.0: покрытие на основе исходного кода, новый синтаксис условной компиляции в Cargo, инкрементальная компиляция

Программирование *Rust *
Перевод

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


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


rustup update stable

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

Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 5K
Комментарии 3

Почему мьютексы в Rust реализованы именно так

Программирование *Параллельное программирование *Rust *
Перевод

Я часто слышу от пробующих работать с Rust системных программистов жалобы на мьютексы и особенно на Rust Mutex API. Жалобы обычно выглядят так:

  • Они не хотят, чтобы мьютекс содержал данные, только блокировку.
  • Они не хотят управлять «защитным» значением, разблокирующим мьютекс при сбросе, в частности, они просто хотят вызывать операцию unlock, потому что им кажется, что это более явное действие.

Такие изменения превратили бы Rust mutex API в эквивалент C/Posix mutex API. Однажды я даже видел, как один разработчик пытался использовать Mutex<()> и разные хитрости, чтобы его имитировать.

Однако у такого стремления есть проблема: эти два аспекта Mutex неразрывно связаны друг с другом, а также с гарантиями безопасности Rust в целом — изменение одного из них или обоих откроет возможности для возникновения незаметных багов и повреждений из-за гонок данных.

Использование API мьютексов в стиле C, состоящего из набора косвенно защищаемых данных и из функций lock и unlock было бы опрометчивым в Rust, потому что это позволяет безопасному коду легко вносить ошибки, нарушающие безопасность памяти и вызывающие гонки данных.

Прозвучит спорно, но я утверждаю, что это справедливо и для C. Просто в Rust это более очевидно, поскольку Rust тщательно разделяет понятия «безопасного» кода, в который невозможно внести подобные ошибки, и «небезопасного» кода, в который можно вносить такие ошибки. В C такого разделения нет, и в результате этого использующий мьютексы код на C может тривиальным образом создавать серьёзные баги, которые потенциально можно подвергать эксплойтам.

В этом посте я разберу типичный C mutex API, сравню его с типичным Rust mutex API, и расскажу о том, что произойдёт, если мы изменим Rust API так, чтобы он напоминал C.
Читать дальше →
Всего голосов 60: ↑60 и ↓0 +60
Просмотры 9.7K
Комментарии 26

Основы рендеринга с wgpu на Rust

Блог компании OTUS Разработка игр *Rust *

В данной статье мы рассмотрим базовую теорию и практику рендеринга с помощью кроссплатформенного графического API wgpu. Данный API основан на стандарте WebGPU и предоставляет удобные, унифицированные и безопасные абстракции для взаимодействия с GPU. Используя wgpu мы инициализируем графическое устройство, создадим графический конвейер и нарисуем треугольник.

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 4.2K
Комментарии 2

Генерируем Rust обёртку для FMOD

Программирование *Разработка игр *Rust *
Из песочницы

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

Это руководство содержит общий обзор и конкретные приемы написания сложной Rust обёртки для звукового движка FMOD с помощью парсера pest и квази-цитирования.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 2.5K
Комментарии 12

Оптическое распознавание символов с помощью Rust и WebAssembly

Блог компании RUVDS.com Python *Обработка изображений *Rust *WebAssembly *
Перевод

После переписывания Cyberscore я захотел отправить на сайт какие-нибудь результаты. Последнее, во что я играл, это Pokémon Legends: Arceus, по которой на Cyberscore есть около 3000 таблиц результатов. Я не собирался отправлять столько рекордов вручную, поэтому начал придумывать инструмент для автоматизации этого процесса.

Эта статья посвящена двум вещам: процессу извлечения результатов из JPG с помощью Rust и встраиванию этого функционала во фронтенд Cyberscore.
Читать дальше →
Всего голосов 47: ↑45 и ↓2 +43
Просмотры 4.5K
Комментарии 0

Как устроен современный веб-синтезатор

Блог компании SkillFactory JavaScript *Программирование *Rust *WebAssembly *
Перевод

За годы развития браузеры обзавелись множеством API и функциональных возможностей, благодаря которым превратились в невероятно мощные платформы приложений. Яркий пример — это современный веб-синтезатор, подробностями об устройстве которого делимся к старту курса по Fullstack-разработке на Python.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 4.2K
Комментарии 1

Ошибки, которые не ловит Rust

Компиляторы *Go *Rust *
Перевод

Мне по-прежнему интересны языки программирования. Но сегодня уже не так сильно, и не из-за того, что они позволяют мне делать, а, скорее, из-за того, что они мне делать не позволяют.

В конечном итоге, возможности того, что можно сделать при помощи языка программирования, редко ограничены самим языком: нет ничего, что можно сделать на C++, но нельзя повторить на C, при наличии бесконечного количества времени.

Если язык полон по Тьюрингу и компилируется в ассемблерный код, каким бы ни был интерфейс, вы общаетесь с одной и той же машиной. Вы ограничены возможностями оборудования, количеством его памяти (и её скоростью), подключенной к нему периферией, и так далее.

На самом деле, достаточно лишь команды mov.

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

Кроме того, есть такие аспекты, как производительность, отладкопригодность (если такого слова нет, то его стоит придумать) и дюжина других факторов, которые стоит рассмотреть при «выборе языка».
Читать дальше →
Всего голосов 74: ↑70 и ↓4 +66
Просмотры 16K
Комментарии 12

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

Open source *Программирование *Системное программирование *Компиляторы *Rust *
Перевод

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

Читать далее
Всего голосов 41: ↑34 и ↓7 +27
Просмотры 8.7K
Комментарии 9

Простой показометр

Rust *Программирование микроконтроллеров *DIY или Сделай сам

С детства мне нравятся всякие мигающие лампочки на панелях управления, движущиеся стрелки и шкалы приборов – непременный атрибут фантастических фильмов о будущем и полетах в космос. Когда мне в руки попал светодиодный матричный индикатор с алиэкспресс, не смог себе отказать в удовольствии как-то применить его в хозяйстве. В результате проекта выходного дня родился очередной показометр, при создании которого пригодились знания stm32 и rust.

Подробности
Всего голосов 25: ↑23 и ↓2 +21
Просмотры 8.1K
Комментарии 10

Минимальная реализация Lua на Rust

Блог компании RUVDS.com Программирование *Lua *Rust *
Перевод
После того, как вы освоите это руководство, в вашем распоряжении окажется минимальная реализация Lua (парсер, компилятор, виртуальная машина), написанная на Rust с чистого листа. Этот проект получил название Lust, его код можно найти на GitHub.

Читать дальше →
Всего голосов 37: ↑35 и ↓2 +33
Просмотры 6K
Комментарии 11

Введение в язык программирования Leo

Rust *
Из песочницы
Перевод

Основная Leo — это основанный на Rust язык программирования со статической типизацией, созданный для написания частных приложений. Он предназначен для разработчиков, которые могут интуитивно строить блокчейн Aleo, обеспечивая основу для частной децентрализованной экосистемы. Это первый известный язык программирования, который представляет среду тестирования, реестр пакетов, преобразователь импорта, удаленный компилятор и генератор теорем для приложений с ZKP.

Читать далее
Всего голосов 17: ↑10 и ↓7 +3
Просмотры 5.5K
Комментарии 5

Вклад авторов

Работа

Rust разработчик
13 вакансий