Wtftw
Window Tiling For The Win. Менеджер черепичных окон, написанный на Rust
https://github.com/Kintaro/wtftw
👉 @rust_lib
Window Tiling For The Win. Менеджер черепичных окон, написанный на Rust
https://github.com/Kintaro/wtftw
👉 @rust_lib
👍7
Запуск Rocket REST API на AWS
Что понадобится
языка программирования Rust;
команд оболочки в Linux;
AWS Elastic Compute Cloud (EC2) и сетей;
учетная запись AWS.
Что будем разворачивать?
Очень простой Rocket REST API с двумя маршрутами: / и /sort. Первый маршрут — это индекс. После GET-запроса он отправит текст Hello from Rocket REST API!. Второй — POST-маршрут. По нему в приложении в ответ на заданный несортированный целочисленный массив и порядок сортировки вернется корректно отсортированный массив.
https://betterprogramming.pub/launching-a-rocket-rest-api-on-aws-d8c17f0c9850
👉 @rust_lib
Rocket.rs
— самый известный фреймворк на Rust для легкого создания производительных и типобезопасных веб-приложений. Развернем с его помощью собственный Rocket REST API на AWS.Что понадобится
языка программирования Rust;
команд оболочки в Linux;
AWS Elastic Compute Cloud (EC2) и сетей;
учетная запись AWS.
Что будем разворачивать?
Очень простой Rocket REST API с двумя маршрутами: / и /sort. Первый маршрут — это индекс. После GET-запроса он отправит текст Hello from Rocket REST API!. Второй — POST-маршрут. По нему в приложении в ответ на заданный несортированный целочисленный массив и порядок сортировки вернется корректно отсортированный массив.
https://betterprogramming.pub/launching-a-rocket-rest-api-on-aws-d8c17f0c9850
👉 @rust_lib
👍2❤1
Использование scoped threads Rust для повышения эффективности и безопасности
В прошлом крейт crossbeam предоставлял возможность создавать скопированные потоки. Но теперь его функция scoped thread была мягко устаревшей в пользу встроенной в Rust функции scoped thread.
В этой статье вы узнаете, что такое scoped threads, как они функционируют, как их создавать и чем они отличаются от unscoped threads.
https://blog.logrocket.com/using-rust-scoped-threads-improve-efficiency-safety/
👉 @rust_lib
В прошлом крейт crossbeam предоставлял возможность создавать скопированные потоки. Но теперь его функция scoped thread была мягко устаревшей в пользу встроенной в Rust функции scoped thread.
В этой статье вы узнаете, что такое scoped threads, как они функционируют, как их создавать и чем они отличаются от unscoped threads.
https://blog.logrocket.com/using-rust-scoped-threads-improve-efficiency-safety/
👉 @rust_lib
👍3
Rust: выполнение HTTP-запросов и обработка ответов с помощью reqwest
В Rust HTTP-запросы и парсинг результата выполнять легко — нужны лишь подходящие библиотеки. reqwest и serde могут стать идеальным решением.
https://telegra.ph/Rust-vypolnenie-HTTP-zaprosov-i-obrabotka-otvetov-s-pomoshchyu-reqwest-02-05
Original https://levelup.gitconnected.com/rust-making-http-requests-and-handling-responses-by-using-reqwest-c8d557cdce46
👉 @rust_lib
В Rust HTTP-запросы и парсинг результата выполнять легко — нужны лишь подходящие библиотеки. reqwest и serde могут стать идеальным решением.
https://telegra.ph/Rust-vypolnenie-HTTP-zaprosov-i-obrabotka-otvetov-s-pomoshchyu-reqwest-02-05
Original https://levelup.gitconnected.com/rust-making-http-requests-and-handling-responses-by-using-reqwest-c8d557cdce46
👉 @rust_lib
👍6
👍10❤1🔥1
Создание микросервисов на Rust с помощью Spin
Rust предлагает мощный и эффективный подход к разработке приложений. А с помощью Spin создавать мощные микросервисы для распределенных приложений стало намного проще. Преимущества производительности Rust в сочетании с простотой использования и масштабируемостью Spin делают их ценным выбором для разработчиков, стремящихся создавать надежные и масштабируемые системы.
В этой статье мы расскажем вам о фреймворке Spin и проведем вас через создание простого микросервиса.
https://blog.logrocket.com/build-microservices-rust-spin/
👉 @rust_lib
Rust предлагает мощный и эффективный подход к разработке приложений. А с помощью Spin создавать мощные микросервисы для распределенных приложений стало намного проще. Преимущества производительности Rust в сочетании с простотой использования и масштабируемостью Spin делают их ценным выбором для разработчиков, стремящихся создавать надежные и масштабируемые системы.
В этой статье мы расскажем вам о фреймворке Spin и проведем вас через создание простого микросервиса.
https://blog.logrocket.com/build-microservices-rust-spin/
👉 @rust_lib
👍4❤1
Фича-флаги времени компиляции в Rust: зачем, как и когда используются
Возможность указывать фичи (функционал) для компиляции в Rust может повысить быстродействие кода, его обслуживаемость, безопасность и портируемость.
Ниже я аргументирую, почему вам следует активно использовать эти флаги функционала при потреблении зависимостей и предлагать их другим пользователям библиотеки.
https://betterprogramming.pub/compile-time-feature-flags-in-rust-why-how-when-129aada7d1b3
👉 @rust_lib
Возможность указывать фичи (функционал) для компиляции в Rust может повысить быстродействие кода, его обслуживаемость, безопасность и портируемость.
Ниже я аргументирую, почему вам следует активно использовать эти флаги функционала при потреблении зависимостей и предлагать их другим пользователям библиотеки.
https://betterprogramming.pub/compile-time-feature-flags-in-rust-why-how-when-129aada7d1b3
👉 @rust_lib
👍2❤1
Пишем на Python как на Rust
Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.
https://habr.com/ru/articles/736842/
original https://kobzol.github.io/rust/python/2023/05/20/writing-python-like-its-rust.html
👉 @rust_lib
Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.
https://habr.com/ru/articles/736842/
original https://kobzol.github.io/rust/python/2023/05/20/writing-python-like-its-rust.html
👉 @rust_lib
Хабр
Пишем на Python как на Rust
Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать...
👎10👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Wagyu
Библиотека Rust для быстрого и простого создания криптовалютных кошельков, которую можно использовать как утилиту командной строки или создавать на базе нее криптовалютные приложения.
https://github.com/AleoHQ/wagyu
👉 @rust_lib
Библиотека Rust для быстрого и простого создания криптовалютных кошельков, которую можно использовать как утилиту командной строки или создавать на базе нее криптовалютные приложения.
https://github.com/AleoHQ/wagyu
👉 @rust_lib
👍5❤1👎1🍌1🗿1
Rust: параметризуем мутабельность через маркеры и ассоциированные типы
Borrow-checker — отличный секюрити, который очень эффективен, если мы находимся в безопасном Rust. Его поведение отлично описано в RustBook, и, по крайней мере, я почти никогда не сталкиваюсь с придирками, которым я бы не был благодарен.
Но вот когда нужно написать семантически-безопасный API над функциями и данными, которые вообще не безопасны — у меня всё стало валиться из рук. Последние пару дней я потратил на то, чтобы придумать элегантный способ параметризации мутабельности. Над тем, чтобы на уровне API сохранялась семантика — зависимость изменяемости полей друг от друга. Даже если на самом деле они живут сами по себе.
https://habr.com/ru/articles/703018/
👉 @rust_lib
Borrow-checker — отличный секюрити, который очень эффективен, если мы находимся в безопасном Rust. Его поведение отлично описано в RustBook, и, по крайней мере, я почти никогда не сталкиваюсь с придирками, которым я бы не был благодарен.
Но вот когда нужно написать семантически-безопасный API над функциями и данными, которые вообще не безопасны — у меня всё стало валиться из рук. Последние пару дней я потратил на то, чтобы придумать элегантный способ параметризации мутабельности. Над тем, чтобы на уровне API сохранялась семантика — зависимость изменяемости полей друг от друга. Даже если на самом деле они живут сами по себе.
https://habr.com/ru/articles/703018/
👉 @rust_lib
❤4👍4
Я написал одну из самых быстрых библиотек датафреймов
У меня в портфолио есть несколько готовых пет-проектов на Rust, и я заметил, что позиция «а у нас уже получилась DataFrame?» нисколько меня не устраивает. Поэтому я подумал, не сделать ли мне элементарный контейнер, который решал бы мою конкретную задачу. Но этот проект вышел из-под контроля.
Год спустя, написав немало кода, я создал одну из самых быстрых библиотек датафреймов, применимую в Rust и Python. Вот мой первый официальный «Hello World» на polars, размещённый у меня в блоге. Надеюсь, что с помощью этого поста я смогу пояснить читателю некоторые решения, которые мне довелось принять при проектировании, и вам станет понятнее, как Polars работает под капотом.
https://habr.com/ru/companies/timeweb/articles/737808/
👉 @rust_lib
У меня в портфолио есть несколько готовых пет-проектов на Rust, и я заметил, что позиция «а у нас уже получилась DataFrame?» нисколько меня не устраивает. Поэтому я подумал, не сделать ли мне элементарный контейнер, который решал бы мою конкретную задачу. Но этот проект вышел из-под контроля.
Год спустя, написав немало кода, я создал одну из самых быстрых библиотек датафреймов, применимую в Rust и Python. Вот мой первый официальный «Hello World» на polars, размещённый у меня в блоге. Надеюсь, что с помощью этого поста я смогу пояснить читателю некоторые решения, которые мне довелось принять при проектировании, и вам станет понятнее, как Polars работает под капотом.
https://habr.com/ru/companies/timeweb/articles/737808/
👉 @rust_lib
👍6
Это слишком опасно для C++
Некоторые паттерны стало возможно использовать на практике только благодаря безопасности Rust по памяти, а на C++ они слишком опасны. В статье приведён один такой пример.
Работая над внутренней библиотекой, написанной на Rust, я создал тип ошибок для парсера, у которых должна быть возможность сделать Clone без дублирования внутренних данных. В Rust для этого требуется указатель с подсчётом ссылок (reference-counted pointer) наподобие Rc.
Поэтому я написал свой тип ошибок, использовал его как вариант ошибок fallible-функций, и продолжил двигаться дальше.
https://habr.com/ru/articles/793868/
👉 @rust_lib
Некоторые паттерны стало возможно использовать на практике только благодаря безопасности Rust по памяти, а на C++ они слишком опасны. В статье приведён один такой пример.
Работая над внутренней библиотекой, написанной на Rust, я создал тип ошибок для парсера, у которых должна быть возможность сделать Clone без дублирования внутренних данных. В Rust для этого требуется указатель с подсчётом ссылок (reference-counted pointer) наподобие Rc.
Поэтому я написал свой тип ошибок, использовал его как вариант ошибок fallible-функций, и продолжил двигаться дальше.
https://habr.com/ru/articles/793868/
👉 @rust_lib
👍6
Как IndVarSimplification применяет математику в вашем коде
Хочу поделиться своей историей расследования одной довольно необычной компиляторной оптимизации. Необычна она в том плане, что для нее производятся довольно нетривиальные математические вычисления. Приступим!
https://habr.com/ru/articles/738272/
👉 @rust_lib
Хочу поделиться своей историей расследования одной довольно необычной компиляторной оптимизации. Необычна она в том плане, что для нее производятся довольно нетривиальные математические вычисления. Приступим!
https://habr.com/ru/articles/738272/
👉 @rust_lib
👍7
Глубокая нейронная сеть с нуля на Rust 🦀
Часть 1. Основы нейронных сетей
https://www.akshaymakes.com/blogs/rust_dnn_part1
Часть 2. Загрузка данных и инициализация модели NN
https://www.akshaymakes.com/blogs/rust_dnn_part2
Часть 3. Прямое распространение
https://www.akshaymakes.com/blogs/rust_dnn_part3
Часть 4. Функция потерь и обратное распространение
https://www.akshaymakes.com/blogs/rust_dnn_part4
Часть 5. Обучение и выводы
https://www.akshaymakes.com/blogs/rust_dnn_part_5
👉 @rust_lib
Часть 1. Основы нейронных сетей
https://www.akshaymakes.com/blogs/rust_dnn_part1
Часть 2. Загрузка данных и инициализация модели NN
https://www.akshaymakes.com/blogs/rust_dnn_part2
Часть 3. Прямое распространение
https://www.akshaymakes.com/blogs/rust_dnn_part3
Часть 4. Функция потерь и обратное распространение
https://www.akshaymakes.com/blogs/rust_dnn_part4
Часть 5. Обучение и выводы
https://www.akshaymakes.com/blogs/rust_dnn_part_5
👉 @rust_lib
🔥13👍7❤2
Joshuto
ranger-подобный терминальный файловый менеджер, написанный на Rust
https://github.com/kamiyaa/joshuto
👉 @rust_lib
ranger-подобный терминальный файловый менеджер, написанный на Rust
https://github.com/kamiyaa/joshuto
👉 @rust_lib
👍11
Пишем калькулятор на Rust с GUI
Зачем еще один калькулятор? Да не зачем, просто как тестовый проект для рассмотрения GUI-библиотеки.
Изначально я хотел попробовать такие крейты, как GPUI, Floem и Xilem, но первая, кажется, пока работает только под MacOS и Linux, вторая не позволяет установить иконку окну и кушает оперативы побольше Webview в Tauri, а до третьей я так и не добрался, узнав об Slint.
Об Slint есть всего несколько новостных постов на Хабре, поэтому, возможно, вам будет интересно посмотреть, что это такое.
https://habr.com/ru/articles/804655/
👉 @rust_lib
Зачем еще один калькулятор? Да не зачем, просто как тестовый проект для рассмотрения GUI-библиотеки.
Изначально я хотел попробовать такие крейты, как GPUI, Floem и Xilem, но первая, кажется, пока работает только под MacOS и Linux, вторая не позволяет установить иконку окну и кушает оперативы побольше Webview в Tauri, а до третьей я так и не добрался, узнав об Slint.
Об Slint есть всего несколько новостных постов на Хабре, поэтому, возможно, вам будет интересно посмотреть, что это такое.
https://habr.com/ru/articles/804655/
👉 @rust_lib
👍11
This media is not supported in your browser
VIEW IN TELEGRAM
Как я снизил время инкрементных сборок Rust на 40%
Я форкнул и модифицировал компилятор Rust rustc. Одна фича — кэширование расширения процедурных макросов — привела к снижению времени инкрементных сборок на 11-40% в различных реальных крейтах. Благодаря этому ускорились dev-сборки и меньше стал тормозить rust-analyzer (IDE IntelliSense).
Если вы специалист в повышении производительности компилятора Rust, то можете сразу перейти к разделу «Кэширование расширения макросов: ускорение инкрементных сборок Rust на 40%».
https://habr.com/ru/articles/807791/
👉 @rust_lib
Я форкнул и модифицировал компилятор Rust rustc. Одна фича — кэширование расширения процедурных макросов — привела к снижению времени инкрементных сборок на 11-40% в различных реальных крейтах. Благодаря этому ускорились dev-сборки и меньше стал тормозить rust-analyzer (IDE IntelliSense).
Если вы специалист в повышении производительности компилятора Rust, то можете сразу перейти к разделу «Кэширование расширения макросов: ускорение инкрементных сборок Rust на 40%».
https://habr.com/ru/articles/807791/
👉 @rust_lib
👍7😁1
Сколько памяти нужно для запуска 1 миллиона конкурирующих задач?
В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir.
Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие занимали почти 3 ГБ. К сожалению, эти программы были довольно сложными и также отличались своим функционалом, поэтому было бы трудно сравнить их непосредственно и сделать какие-то осмысленные выводы. Тут то у меня и возникла идея создать специальный синтетический бенчмарк.
Rus https://habr.com/ru/companies/ruvds/articles/739054/
Eng https://pkolaczk.github.io/memory-consumption-of-async/
👉 @rust_lib
В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir.
Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие занимали почти 3 ГБ. К сожалению, эти программы были довольно сложными и также отличались своим функционалом, поэтому было бы трудно сравнить их непосредственно и сделать какие-то осмысленные выводы. Тут то у меня и возникла идея создать специальный синтетический бенчмарк.
Rus https://habr.com/ru/companies/ruvds/articles/739054/
Eng https://pkolaczk.github.io/memory-consumption-of-async/
👉 @rust_lib
🔥6👍5👎1
Почему я отказался от разработки игр на Rust, часть 1
Предисловие: этот пост представляет собой очень длинный перечень мыслей и проблем, возникавших у меня за годы работы; также в нём рассматриваются некоторые из аргументов, которые мне часто говорили. В посте выражено моё мнение, сформировавшееся у меня в процессе разработки игр на Rust в течение многих тысяч часов на протяжении многих лет и после множества завершённых игр. Это не хвастовство и не показатель успеха, я просто хочу сказать, что вложил достаточно много усилий в Rust; здесь не получится сказать «когда наберёшься опыта, тебе всё станет понятно».
https://habr.com/ru/articles/811163/
👉 @rust_lib
Предисловие: этот пост представляет собой очень длинный перечень мыслей и проблем, возникавших у меня за годы работы; также в нём рассматриваются некоторые из аргументов, которые мне часто говорили. В посте выражено моё мнение, сформировавшееся у меня в процессе разработки игр на Rust в течение многих тысяч часов на протяжении многих лет и после множества завершённых игр. Это не хвастовство и не показатель успеха, я просто хочу сказать, что вложил достаточно много усилий в Rust; здесь не получится сказать «когда наберёшься опыта, тебе всё станет понятно».
https://habr.com/ru/articles/811163/
👉 @rust_lib
👍8