Rust
2.03K subscribers
123 photos
87 videos
2 files
167 links
Полезный контент по программированию на Rust
Download Telegram
Интероперабельность между С++ и Rust

Этот пост основан на презентации, с которой автор выступил на конференции EuroRust 2022 в Берлине. Доступны слайды и видеозапись.

Автор, работающий в компании Slint, участвует в создании UI-инструментария, написанного на Rust. Этот UI-инструментарий может использоваться и с другими языками и экосистемами, кроме той, для которой был написан, поэтому в Slint предусмотрены API для C++ и даже для Javascript. Естественно, эти API должны восприниматься как совершенно нативные для разработчиков, имеющих дело с этими языками. Именно поэтому ребром стоит вопрос о том, как создать нативно воспринимаемые API к коду Rust для пользователей, привыкших работать с C++.

https://habr.com/ru/companies/timeweb/articles/743540/

original https://slint.dev/blog/rust-and-cpp

👉 @rust_lib
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрое извлечение доминирующих цветов CLI

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

Он построен на Rust и по сути основан на реализации алгоритма Colors Thief, написанного
Евгением Рейзнером.

https://github.com/AbdoulMa/copycolors

👉 @rust_lib
👍2
Ловим спутники без поворотного устройства

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

https://habr.com/ru/articles/820145/

👉 @rust_lib
👍3
Gabriel2 — Open Source асинхронная библиотека для модели Акторов на Rust с использованием Tokio

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

Во время изучения Tokio, я решил написать свой проект для модели Акторов. Как раз низкоуровневая часть Tokio позволила это сделать. Так появилась библиотека Gabriel2.

https://habr.com/ru/articles/821267/

👉 @rust_lib
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Halloy - IRC Client

Halloy - это IRC-клиент с открытым исходным кодом, написанный на Rust с использованием библиотеки Iced GUI. Его цель - предоставить простой и быстрый клиент для платформ Mac, Windows и Linux.

https://github.com/squidowl/halloy

👉 @rust_lib
👍41👏1
Микросервисы Rust в серверном WebAssembly

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

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

https://habr.com/ru/companies/timeweb/articles/747582/

👉 @rust_lib
3👍3🔥1
Криптография на Rust и немного FFI

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

Да, определенно. Я считаю, что приставка "крипто" любому словосочетанию придает привкус гигантской яхты дрейфующей где-то в Майами.

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

https://habr.com/ru/articles/748534/

👉 @rust_lib
👍52👏1
Реализуем Type inference на Rust — Часть #1: Unification

Если вы пишете свой язык программирования, то вы наверное слышали о type inference. В этом цикле статей, без лишней теории, мы наглядно разберем как это работает и реализуем свой на Rust.

https://habr.com/ru/articles/748978/

👉 @rust_lib
👍4
Реализуем Type Inference на Rust — Часть #2: Простой Lambda Calculus

Если вы пишете свой язык программирования, то вы наверное слышали о type inference. В этом цикле статей, без лишней теории, мы наглядно разберем как это работает и реализуем свой на Rust.

https://habr.com/ru/articles/753180/

👉 @rust_lib
👍41
Blaze: ускорение ZK для программируемой пользователем вентильной матрицы

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

С Blaze  —  библиотекой Rust для ускорения ZK на основе ППВМ компании Xilinx  —  ускорение ППВМ становится доступным для разработчиков ZK.

https://medium.com/@ingonyama/introducing-blaze-zk-acceleration-for-fpga-6f5f7cc50e1f

👉 @rust_lib
👍3🔥1🥰1
The Power Of RUST: введение и глубокое погружение в продвинутые концепции: Ownership, References и Borrowing.

Rust используется многими крупными компаниями, такими как Mozilla, Microsoft и Dropbox, он применяется во многих случаях, для создания веб-серверов, интерфейсов командной строки, нативных настольных приложений, веб-приложений с помощью WebAssemblly, а также для операционных систем.

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

https://dev.to/this-is-learning/the-power-of-rust-introduction-and-deep-dive-in-advanced-concepts-ownership-references-and-borrowing-28dh

👉 @rust_lib
👍85🥰1🥱1
Рост производительности машинного обучения с Rust

В этой статье я хочу поделиться своим опытом создания небольшой платформы для машинного обучения (ML) с нуля, используя язык программирования Rust.

Для моего эксперимента у меня были следующие цели:

1 - Я хотел выяснить, приведет ли переход с Python + PyTorch на Rust + LibTorch (библиотеку C++, используемую в PyTorch) к ощутимому увеличению скорости, особенно в процессе обучения модели. Как мы знаем, модели машинного обучения становятся все больше и требуют все больше вычислительных ресурсов для обучения, что иногда недоступно для обычного человека. Один из способов уменьшить требования к аппаратному обеспечению — найти способ сделать алгоритмы более вычислительно эффективными. Зная, что в PyTorch Python является лишь верхним слоем над LibTorch, мой главный вопрос заключался в том, стоит ли заменять этот верхний слой Python на Rust. План заключался в том, чтобы использовать библиотеку Tch-rs Rust для работы с тензорами и функцией автоградента из DLL LibTorch, которая будет выступать в качестве "калькулятора градиентов", а затем разработать остальную часть с нуля на Rust.

2 - Я хотел, чтобы код был достаточно простым для четкого понимания всех выполняемых операций с линейной алгеброй и позволял легко расширять его при необходимости.

3 - Насколько это возможно, моя платформа должна позволять мне определять модели машинного обучения по структуре, аналогичной стандартной Python/PyTorch.


https://betterprogramming.pub/boosting-machine-learning-performance-with-rust-aab1f3ae1424

👉 @rust_lib
👍7🥰1👏1💩1
Понимание и реализация смарт-указателя Arc и мьютекса на Rust

Rust  —  язык системного программирования с акцентом на безопасности, многопоточности, производительности. В этом руководстве рассмотрим два примитива многопоточности Rust: Arc и Mutex.

При написании многопоточного Rust рано или поздно встречаются типы Arc и Mutex. Mutex применяется во многих языках, а вот Arc вряд ли найдется где-то еще, кроме Rust. Нельзя полностью понять эти концепции, не связав их с моделью владения Rust. Эта статья  —  мой подход к пониманию Arc и Mutex в Rust.

https://towardsdev.com/understanding-and-implementing-rusts-arc-and-mutex-b54e8e3c1821

👉 @rust_lib
👍74🔥1
Полезные фичи в Rust

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

https://habr.com/ru/companies/otus/articles/833498/

👉 @rust_lib
👍103🔥2
ytdlp-gui

Это графический интерфейс для yt-dlp, написанный на Rust

Его можно легко установить в GNU/Linux и Windows системах

https://github.com/BKSalman/ytdlp-gui

👉 @rust_lib
👍7👏32
Просто спарсь что угодно с помощью языка Rust (ну… или просто скачай файл)

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

В пример привожу функцию, которая парсит названия валют с сайта floatrates и выводит их (пожалуйста, напишите в комментариях, за сколько минут вы поняли эту строку):


// main.rs
use anyhow::anyhow;
use reqwest::blocking::get;
use scraper::{Html, Selector};

fn main() -> anyhow::Result<()> {
let body = get("http://www.floatrates.com/json-feeds.html")?.text()?;
let document = Html::parse_document(&body);
let selector = Selector::parse("div.bk-json-feeds>div.body>ul>li>a")
.map_err(|err| anyhow!("{err}"))?;

for element in document.select(&selector) {
println!("{}", element.inner_html());
}
Ok(())
}


В этой статье я хочу рассказать о своей новой библиотеке, значительно упрощающей парсинг на Rust. Приятного чтения!

https://habr.com/ru/articles/755728/

👉 @rust_lib
👍13😱3🔥2🤯2
Regex engine internals as a library [full]

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

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

Для понимания потребуются:

🟢Знания основ теории автоматов (знать и понимать отличия ДКА от НКА)
🟢Иметь базовое представление о том, что такое регулярные выражения
🟢Начальные знания по языку Rust
🟢Общие представления отличия различных структур данных друг от друга

https://habr.com/ru/articles/755940/

original https://blog.burntsushi.net/regex-internals/

👉 @rust_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Huey

Генерирует гифку, которая циклически перебирает все оттенки!

https://github.com/ahhhh6980/huey

👉 @rust_lib
👍41🔥1
Rust.for.Network.Programming.and.Automation.pdf
1.3 MB
Rust for Network Programming and Automation, 2nd Edition: Work around designing networks, TCP/IP protocol, packet analysis and performance monitoring using Rust 1.68
Автор: Gilbert Stew (2024)

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

👉 @rust_lib
👍93🥰2👾1
Как я написал JVM на Rust

В последнее время я серьезно взялся за изучение языка Rust, и, как поступил бы на моем месте любой адекватный программист, после написания нескольких небольших программ я решил попробовать сделать что-то немного более амбициозное: я написал на Rust виртуальную машину Java. Не став сильно оригинальничать, я назвал ее просто rjvm. Вы можете найти ее код на GitHub.

Хочу подчеркнуть, что это лишь простенькая модель JVM, созданная в учебных целях, а не серьезная реализация. В частности, она не поддерживает:

⚫️дженерики
⚫️потоки
⚫️рефлексию
⚫️аннотации
⚫️I/O
⚫️just in time компилятор
⚫️интернирование строк

https://habr.com/ru/companies/otus/articles/755946/

original https://andreabergia.com/blog/2023/07/i-have-written-a-jvm-in-rust/

👉 @rust_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103👏3