Монтажер: Чжан Ханьдун
Вышло первое издание книги Rust In Action
Что Тим Макнамара — опытный программист, проявляющий большой интерес к обработке естественного языка, интеллектуальному анализу текста и более широким формам машинного обучения и искусственного интеллекта. Он очень активен в сообществе открытого исходного кода, включая Новозеландскую ассоциацию открытого исходного кода. Rust в действии — это практическое руководство по системному программированию на Rust, написанное для любознательных программистов, с практическими вариантами использования, выходящим далеко за рамки синтаксиса и структуры.
В дополнение к «Rust в действии» есть две другие недавние книги по Rust за границей: «Рефакторинг в Rust» и «Серверы, службы и приложения Rust».
Также готовится отечественный перевод.
Сквозное шифрование с Rust
End-to-End Encryption with Rust — книгаockam-network/ockam
Практическое руководство, в этом руководстве мы создадим две небольшие программы на Rust с именами Алиса и Боб. Алиса и Боб будут отправлять друг другу сообщения по сети через облачные сервисы. В нашем примере кода Алиса и Боб будут аутентифицировать друг друга и получат криптографические гарантии того, что целостность, подлинность и конфиденциальность их сообщений защищены от начала до конца.
Промежуточные облачные службы и злоумышленники в сети не смогут увидеть или изменить содержимое сообщений в пути. В более поздних примерах мы также увидим, как мы можем добиться этой сквозной защиты, даже когда путь связи между Алисой и Бобом более сложен — с несколькими транспортными соединениями, различными транспортными протоколами и множеством посредников.
Два изображения, демонстрирующие текущую экосистему Rust Web.
WeChat:Tickets.WeChat.QQ.com/Yes/E IO MI0JVP…Знаю почти:zhuanlan.zhihu.com/p/398232138
Будь креативным! Используйте ящик Rust в качестве резюме
Если вы хотите изучить Rust и не знаете, что делать? Лучше начать с собственного резюме.
йо это О or.GitHub.IO/yo han_bo о Карма…
Серия руководств Mini Lust:
Хотите узнать, как создать инфраструктуру RPC с нуля? Это руководство поможет вам шаг за шагом написать Rust-версию фреймворка Thrift RPC.
1. Предисловие, введение в понятия, связанные с RPC 2. Введение в Thrift IDL 3. Абстракция сериализации/десериализации 4. Кодек и транспортная абстракция 5. Реализация клиента и сервера 6. Парсинг IDL и генерация кода Thrift 7. Обнаружение сервисов на базе Tower и балансировка нагрузки 8. Поддержка промежуточного программного обеспечения
Открытый курс Rust | "Асинхронное программирование в Rust II: введение в Tokio Runtime" | Том 6
Ожидается, что это занятие состоится 9-го числа в 20:00.Если вам интересно, вы можете его послушать.
Программа к сериалу
1. Изучите модель асинхронного программирования Rust. 2. Расскажите о своем понимании асинхронного фреймворка Rust (futures-rs, async-std, tokio). 3. Знакомство с Токио 4. Как использовать Executor, Reactor и Future в Токио. 5. Реализовать простую серверную и клиентскую программу с помощью Tokio.
Tickets.WeChat.QQ.com/Yes/23YD ZD для JN…
Добавлен клиппи 1.54disallowed-methods
настроить
позволить вамclippy.toml
Методы, запрещенные в конфигурации:
# clippy.toml
disallowed-methods = ["std::vec::Vec::leak", "std::time::Instant::now"]
Плохой код:
// 该代码将要被警告
let xs = vec![1, 2, 3, 4];
xs.leak(); // Vec::leak is disallowed in the config.
let _now = Instant::now(); // Instant::now is disallowed in the config.
Вместо этого следует использовать:
// Example code which does not raise clippy warning
let mut xs = Vec::new(); // Vec::new is _not_ disallowed in the config.
xs.push(123); // Vec::push is _not_ disallowed in the config.
CRDT в 5000 раз быстрее
Полное название CRDT — Бесконфликтно-реплицированные типы данных, в основном используется для совместного онлайн-редактирования документов и т. д.
Автор подробно рассказывает, как улучшить некоторые процессы связанных реализаций и алгоритмов, и, наконец, повышает скорость в 5000 раз.
Джозеф G.com/blog/ куй железо, пока горячо говорит-…
Как писать медленный код на Rust
Написание кода на Rust не означает, что ваш код будет работать молниеносно. Вы можете легко ошибиться и получить довольно медленную производительность. Как показывает этот пост в блоге, вам, возможно, даже придется изрядно попотеть, чтобы победить Common Lisp и Java.
Авторы делятся своими историями о том, как они использовали Rust, чтобы переписать свой код на Lisp, как успешно писать более медленный код и исправлять их.
Renato.at ha использует .com/posts/how-he…
RustCast: серия обучающих видеороликов по Rust
Серия обучающих видеороликов по Rust, надеюсь, придерживайтесь этого.
Ву Ву YouTube.com/channel/UC Z…
Переписываю свою мобильную игру на Rust и компилирую в wasm
Игра автора ранее была написана на C++. В этой статье подробно рассказывается о его решении переписать на rust и развитии некоторых идей.
Рекомендуемое чтение:
IT next.IO/переписывание - нет...
Реализация Base64 с нуля на Rust
В статье более подробно рассматривается алгоритм Base64 и реализуются кодировщик и декодер с нуля с использованием языка программирования Rust.
Async Rust с нуля: простой веб-сервер
Я бюстгалтер и эм.тр./письма/ах-…
Веб-приложение, которое учится создавать автомобили с использованием ИИ (генетический алгоритм), написанное на Rust.
Он запускается в вашем браузере и использует искусственный интеллект (в частности, генетические алгоритмы), чтобы создавать все более и более совершенные автомобили. Транспортные средства должны преодолевать полосы препятствий, начиная с небольших холмов, затем крутых холмов и, наконец, прыжков. Транспортные средства состоят из панелей и колес, соединенных вместе, как в игре Besiege.
Когда абстракция с нулевой стоимостью больше не является нулевой стоимостью
Rust построен на концепции «абстракции с нулевой стоимостью». Идея состоит в том, что вы можете написать удобный для человека высокоуровневый код, а компилятор даст вам по крайней мере такую же хорошую производительность, как и любой оптимизированный низкоуровневый код, который вы пишете сами. Благодаря абстракциям с нулевой стоимостью вам больше не придется искать компромисс между ремонтопригодностью и производительностью.
К сожалению, трудно гарантировать, что абстракции с нулевой стоимостью действительно являются нулевыми, и на практике Rust часто не соответствует этому возвышенному идеалу. В этом посте я покажу два примера, где даже кажущиеся простыми абстракции с нулевой стоимостью на самом деле не являются нулевыми.
blog.poly B's num.com/2021/08/09/…
[Серия] Недельный модуль Rust
Это серия блогов, пока опубликовано всего две статьи, по одному модулю в неделю:
Как неделя 2: в стандартной библиотеке Ruststd::fs
модуль
std::fs
Это модуль в стандартной библиотеке Rust для управления файловой системой, включая общие операции, такие как создание, чтение, обновление и удаление. Поскольку API-интерфейсы, поддерживаемые разными операционными системами, различаются, в этой статье показаны только некоторые примеры, не зависящие от платформы:
- Агрегируйте файлы одного года, месяца и даже даты, изменив время (mtime);
- жесткая связь одного пути с другим;
- Рекурсивно создавать каталоги;
- Рекурсивно удалять папки;
- копировать файлы;
[Книга] Ранний доступ к Black Hat Rust
Black Hat Rust — это глубокое погружение в наступательную безопасность с использованием языка программирования Rust, поддерживающего PDF, Kindle и Epub.
Эта книга находится в стадии разработки. Он доступен в контексте программы раннего доступа, что означает, что главы будут отправлены вам, как только они будут написаны, и мы будем очень признательны за ваши отзывы. Текущий статус:
Доступные страницы: 250+ Прогресс кода: ~90%GitHub.com/Программное обеспечение для индивидуального входа/Первоначально…Ожидаемая окончательная публикация: 3 кв. 2021 г. Расчетное количество страниц: ~320
Примечание. В качестве благодарности автора всем, кто помог ему завершить эту книгу, все покупатели раннего доступа также получат следующий бонус: тщательно подобранный контрольный список для расширенного анализа вредоносного ПО. Вы найдете в нем большое вдохновение при разработке собственных наступательных инструментов.
academy.accessiblesoft.com/black-hart-day…
Как написать эффективный код на Rust
Автор этой статьи дает несколько советов о том, как писать эффективный код на Rust.Содержание относительно длинное, так что вы можете посмотреть, если вам интересно.
Renato.at ha использует .com/posts/how-he…
понимать#[derive(Clone)]
макрос
Вы можете не знать, что скрывается за этим макросом, эта статья расскажет вам об этом.
стегозавр dormant.com/поймите я…
Сегментация слов на лету с помощью Rust
Идея статьи заключается в реализации библиотеки Python wordsegment на основе Rust, чтобы добиться более быстрого поиска по домену в реальном времени. В статье проблема реализации сегментации слов разделена на две части: реализация метода оценки вероятности появления предложения в реальном мире и реализация эффективного метода оценки всех возможных сегментов входной строки. Давайте обсудим, как эти два работают:
мгновенный домен search.com/engineering…
Игра 2048 с использованием WebAssembly
2048 Эта игра знакома всем.Это игра с целью синтеза чисел 2048.Геймплей только влево и вправо,вверх и вниз.Слияние двух двоек в 4, слияние двух 4 в 8 и так далее.2048 .
Закрепить, открепить Зачем они нужны Rust
Еще один блог о Пине, который представляет собой некоторое резюме и понимание, сделанное самим автором в процессе изучения асинхронного Rust, чтобы вы могли обратиться к соответствующим сомнениям при изучении асинхронного.
blog.adamchalmers.com/pin-unpin/
Набираем техническое интервью Переводим с Haskell на Rust
Печатание технического интервью — это роман, который имитирует компьютерные знания как магию? Соответствующий код, упомянутый в исходном тексте, был написан на Haskell, и теперь кто-то из сообщества переписал его на Rust:
Github: GitHub.com/insearch22/бутылка с маслом tog…
В то же время, если вам интересен этот оригинальный текст, ссылка тоже здесь:
Read More: бабушка в черном.com/posts/342-he…
Ментальные модели того, как работают фьючерсы и среды выполнения
Основная цель этой части — разработать высокоуровневую ментальную модель того, как различные части, о которых мы читали в предыдущей главе, работают вместе. Я надеюсь, что это облегчит понимание концепций высокого уровня, прежде чем мы углубимся в такие темы, как трейт-объекты и генераторы в следующих нескольких главах.
Это не единственный способ создать модель асинхронной системы, потому что мы делаем предположения об особенностях среды выполнения, которые могут сильно различаться. На мой взгляд, это самый простой способ настройки, и он также имеет смысл для понимания многих реальных реализаций, которые вы найдете в асинхронной экосистеме.
Наконец, обратите внимание, что сам код является «псевдо» из-за необходимости краткости и ясности.
Ест Samson.GitHub.IO/books — муж вдруг…
【Серия】Embedded Rust Шаг 1: Выберите плату
Контент организован изrobyoung (Rob Young) Статья: Первые шаги с Embedded Rust: выбор платы
С таким количеством головокружительных микроконтроллеров и проектов, с чего начать человеку с небольшим опытом встраивания?
Что мы хотим от макетной платы?
- хорошая поддержка архитектуры
- хорошая поддержка чипа
- активное сообщество
- Встроенный отладчик
Какая архитектура нам нужна?
Архитектура с самой полной библиотекой, самыми подробными руководствами и самым большим сообществом — это ARM Cortex-M. ARM Cortex-M — это недорогой процессор с низким энергопотреблением для приложений микроконтроллеров. Просмотр загрузок на crates.io — не идеальный показатель, но он дает нам представление о разнице в масштабе. Cortex-m имеет более 250 тысяч загрузок за последние 90 дней. RISC-V, AVR или Xtensa имеют до 3 тысяч загрузок, cortex-a — около 18 тысяч загрузок. ARM Cortex-M уникален.
- AVR: AVR — это семейство 8-битных микроконтроллеров для встраиваемых систем. Они плохо поддерживаются в экосистеме Rust. До недавнего времени для сборки AVR приходилось использовать форк rustc. Теперь есть несколько разных вариантов, awesome-avr-rust — хорошее место для начала.
- ARM Cortex-A: более мощный многоядерный процессор ARM, предназначенный для выполнения более крупных задач. На них обычно работает полноценная операционная система. Например, эта архитектура используется в большинстве смартфонов и портативных игровых консолей. Проверьте cortex-a - crates.io: Реестр пакетов Rust, чтобы узнать больше.
- RISC-V: Кажется, это новое слово в машинной архитектуре, свободная и открытая архитектура набора команд (ISA). Кроме того, он с самого начала проектировался как модульный, а это означает, что разработчики микросхем могут создавать широкий спектр специализированных микросхем, хотя текущий ассортимент макетных плат невелик. Существует активное сообщество Rust RISC-V, SiFive илиwww.riscv.orgОба являются хорошими отправными точками.Для Rust проверьте ящик riscv.
- Xtensa: самая популярная группа материнских плат — серия чипов ESP32 от Espressif. Это небольшие, недорогие платы с поддержкой WiFi. Важно отметить, что не все платы ESP32 используют чипы Xtensa, новая ESP32-C3 основана на RISC-V. Вероятно, самым большим препятствием для использования Rust на чипах Xtensa является то, что llvm не поддерживает его, поэтому необходимо создать форк Rust: esp-rs/rust.
Какие чипы нам нужны?
Поэтому будем использовать ARM Cortex-M. Это сужает поиск, но вариантов по-прежнему много. Если мы посмотрим на зависимости ящика cortex-m, то увидим, что есть две группы микросхем, которые используются чаще, чем любая другая группа: серия микросхем STM32 и серия nRF5, на которой мы сосредоточим наши поиски.
STM32: Чипы серии STM32, вероятно, являются наиболее широко используемыми встроенными чипами Rust ARM Cortex-M. Две самые популярные платы STM32 — Blue Pill и Black Pill. Главный недостаток — отсутствие встроенного отладчика. Если вам нужна плата на базе STM32 с отладчиком, хорошим вариантом будет приобретение официального комплекта STMicroelectronics (хорошие варианты — STM32F3 или STM32F4). Первоначальная версия книги Rust Embedded Discovery была написана для платы STM32F3, поэтому для начала имеется очень качественная документация для начинающих.
nRF5: вторым наиболее широко используемым семейством чипов ARM Cortex-M для встраиваемых систем Rust является семейство nRF5 от Nordic Semiconductor. Официальные комплекты разработки (DK) — отличные стартовые платы. На конференции Knurling-rs от Ferrous Systems используется комплект для разработки nRF52840. Курс Knurling — это очень качественное практическое обучение, в котором рассказывается о встроенном Rust с помощью веселых и забавных проектов, и это лучшая отправная точка для разработки встроенных приложений на Rust. Еще одна отличная плата для разработки на основе nRF — BBC micro:bit. Он поставляется со встроенным отладчиком и множеством интересных встроенных периферийных устройств, таких как встроенный светодиодный дисплей, кнопки и датчики. BBC micro:bit разработан как образовательная платформа, поэтому аппаратное обеспечение задокументировано в их сообществе разработчиков очень удобным для новичков способом, а в Интернете есть множество идей для проектов.
RP2040: выпущенный в конце 2020 года, RP2040 — это первая попытка Raspberry Pi Foundation разработать собственный чип. Поскольку он такой новый, его поддержка в Rust все еще находится в стадии разработки. Как и BBC micro:bit, RP2040 разработан как образовательная платформа, поэтому аппаратная документация является первоклассной, и есть множество удобных для начинающих примеров кода и библиотек для других языков программирования (не очень удобных для начинающих). встроенную документацию по Rust). Это очень захватывающая платформа, и в сообществе Embedded Rust было много активности, поэтому обязательно следите за ней, но, вероятно, это не та первая доска, с которой стоит начинать. Встроенный отладчик?
При запуске программы на хосте вы можете запустить ее в оболочке и увидеть распечатку. Это сложнее для встроенных целей, и отладчик заполняет пустоту. В дополнение к одноэтапной отладке, отладке по точкам останова, он также позволяет загружать программу на устройство и легко просматривать вывод. Однако есть одна загвоздка: обычно это отдельное устройство, которое подключается к хосту, а затем к целевому устройству. Это существенные расходы при первом запуске, и еще одна вещь, которую необходимо правильно настроить. К счастью, некоторые устройства поставляются со встроенными отладчиками, подключаются непосредственно к хосту и проверяют работающий код за доли секунды (часто для работы отладчика требуется некоторая настройка на хосте, у Ferrous есть хорошее руководство по настройке).
В заключение
На следующих досках есть отличные ящики HAL и BSP, активные и дружелюбные сообщества и встроенные отладчики.
- BBC micro:bit (~13 фунтов стерлингов): эта плата используется в новой книге Rust Embedded Discovery.
- Комплект для разработки nRF52840 (~35 фунтов стерлингов); это плата, которую Ferrous Systems использовала на конференции и обучении в Кунрлинге.
- STM32F3 Discovery Kit (~14 фунтов стерлингов); эта плата использовалась в первом издании книги Rust Embedded Discovery.
Внимательно:
- Raspberry Pi Pico (~ 6 фунтов стерлингов с предварительно припаянными контактами); ARM Cortex-M, но без встроенного отладчика, HAL все еще находится в разработке. Но сейчас много активности, и прогресс идет быстро.
- HiFive1 Rev B (~ 50 фунтов стерлингов); RISC-V — новая горячая точка. Кажется, что в Rust вокруг него много активности, но в настоящее время у него нет поддержки ARM Cortex-M. Другими платами для разработки, на которые стоит обратить внимание, являются Logan Nano и ESP32-C3.
Некоторый контент был немного скорректирован, больше можно прочитать в исходном тексте:Rob Young | digital
Как посмотреть развёртку
Метод распаковки может сбить с толку новичков. несколько советов:
- Expect (&str) можно использовать вместо unwrap(), чтобы обеспечить контекст для паники.
- Использование unwrap и expect похоже на утверждения. Если они паникуют, это произойдет только в необратимой ситуации.
- Избегайте использования в коде библиотеки.
Learning Rust: Interfacing with C
Из этой статьи вы узнаете, как вызывать методы C в Rust и как вызывать методы Rust в C.
Небезопасные сверхспособности Rust
Эта статья является одной из серии статей команды knoldus, в которой также есть много статей, связанных с Rust, из которых можно извлечь уроки.
blog.KN OL all.com/superpowers…
Обзор криптографической экосистемы Rust
Согласно эмпирическому исследованию уязвимостей криптографических библиотек (Дженни Блессинг, Майкл А. Спектер, Дэниел Дж. Вайцнер — Массачусетский технологический институт), 37,2 % уязвимостей в криптографических библиотеках связаны с проблемами безопасности памяти, и только 27,2 % — с криптографическими проблемами.
Пришло время выйти из реальности C как криптографического примитива реализации!
Эта статья взята из книги Black Hat Rust:
Благодаря своей высокоуровневой природе низкоуровневого управления, отсутствию сборщика мусора, переносимости и простоте встраивания, Rust является нашим лучшим выбором для замены самых известных на сегодняшний день криптографических библиотек: OpenSSL, BoringSSL и libsodium, написанных на C.
Это определенно займет время, но в 2019 году rustls (библиотека, которую мы увидим позже) работает на 5-70% быстрее, чем OpenSSL, в зависимости от задачи. Одна из самых важных вещей для широкого распространения (отсутствующая сегодня)? Сертификация (например, FIPS).
Без лишних слов, вот обзор криптографической экосистемы Rust за 2021 год.