Годовая инвентаризация экологической карты Rust | Море звезд (Часть 1)

облачный носитель Rust Открытый исходный код
Годовая инвентаризация экологической карты Rust | Море звезд (Часть 1)

Автор | Чжан Ханьдун

Эта статья является одной из серии «Техническая инвентаризация в 2021 г.» В основном она знакомит с важным прогрессом экологической карты Rust в 2021 г. Это первая часть.

«Инвентаризация технологий на конец 2021 года» — это план-блокбастер, запущенный Nuggets, охватывающий бессерверные технологии, сетку сервисов, большой интерфейс, базы данных, искусственный интеллект, low-code, граничные вычисления и многие другие технические области. Посмотрите в прошлое, загляните в будущее, проанализируйте развитие ИТ-технологий в 2021 году, подведите итоги основных событий в области ИТ-технологий и с нетерпением ожидайте будущих тенденций в области ИТ-технологий. В то же время мы начинаем 15-й выпуск конкурса эссе на техническую тему, давайте общаться вместеТехнологические тренды 2022 года в ваших глазахБар!

перед текстом

Полгода назад я написал«Тридцать тысяч слов | Отчет об исследовании отрасли ржавчины за 2021 год», содержание в основном вращается вокруг введения языка Rust и перечня приложений с открытым исходным кодом в отрасли. По прошествии полугода я чувствую необходимость написать еще один отчет об экологических исследованиях Rust в конце года. Поскольку я хочу предоставить вам более полную картину, извлекая разрозненную и скрытую информацию в Интернете, я, наконец, нарисовал «экологическую карту» Rust, чтобы каждый мог понять язык Rust максимально объективно и беспристрастно. .

Закончив этот отчет, я пришел к выводу:Rust пришел к вам не для того, чтобы с его помощью все переписать, а для того, чтобы создать с его помощью новое будущее. Конечно, это всего лишь мое личное мнение, и оно не представляет ни кого-либо, ни какое-либо учреждение или компанию. Если у вас другая точка зрения, добро пожаловать к обсуждению.

We choose to use Rust, not because it is easy, but because it is hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too.

Мы выбираем Rust не потому, что это легко, а потому, что это сложно. Это поможет нам организовать и измерить усилия и навыки для достижения оптимальной цели. Когда мы принимаем этот вызов, это означает, что мы готовы принять этот вызов, готовы принять его немедленно и должны победить. То же самое касается и других задач.

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

контур

Этот отчет содержит следующее:

  • Сам проект Rust
  • Статус применения и тенденции Rust в различных областях
  • Распределение профессиональных должностей по ржавчине
  • Распространенность языка Rust в образовании

Собственное состояние Rust Project

По состоянию на конец 2021 года прошло шесть с половиной лет с момента официального выпуска языка Rust 15 мая 2015 года. В течение этих шести с половиной лет Rust каждые три года выпускал основную версию под названием Edition, что переводится на китайский язык как версия.

Издание Этот перевод исходит из терминологии книгоиздательства. Например, «Путь программирования на Rust», первое издание, второе издание и т. д.

Значение издания

Введение редакций в основном предназначено для того, чтобы Rust легко вводил некоторые обратно несовместимые функции в процессе разработки, не затрагивая предыдущий код. Например, в версии Rust 2018 нет ключевых слов async/await, но в редакции 2021 введены ключевые слова async/await, чтобы не сломать старый код.let async = 1;Такая письменность. Версии и семантические версии являются ортогональными понятиями.

У каждого выпуска Rust есть свои основные темы:

  • Издание 2015 г.: тема «Стабильность». Редакция 2015 года представляет собой стабилизацию языка Rust 1.0. До версии 1.0 Rust менялся каждый день, а после версии 1.0 команда работала над обратной совместимостью, чтобы разработчики могли стабильно создавать проекты на Rust. Понятие издания было фактически введено в 2017 году, поэтому семантические номера версий до официального выпуска в 2015 году, то есть до 1.0, классифицируются как издание 2015 года.
  • Издание 2018 г.: тема «Производительность». Большая часть того, что было представлено в выпуске 2018 года, обратно совместимо, т. е. некоторые из этих функций доступны в 2015 году, например, улучшенный NLL для проверки заимствования. Но улучшения системы модулей доступны только в редакции 2018 года. Поскольку в версии 2018 речь идет о производительности, приоритет функций будет в первую очередь обслуживать эту тему.
  • Издание 2021 г.: Тема «Для взрослых». В выпуске 2021 года не представлено слишком много новых функций, но вместо этого убраны некоторые технические долги, такие как текущие рефакторинги и улучшения компилятора Rust, включая новую систему трейтов и систему запросов, используемую внутри (версия с открытым исходным кодом:GitHub.com/Нико Марина Саки…Постоянные дженерики, универсальные ассоциированные типы и т. д.

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

Перспективы издания 2024 г.

Издание 2024 г.: Тема может быть «распространенной».

9 февраля 2021 года было объявлено о создании Rust Foundation. Хуавей,AWS,Google,Майкрософт,Mozilla,Facebookи другие лидеры технологической отрасли присоединились к Rust Foundation в качестве платинового члена, приверженного продвижению и развитию языка Rust в глобальном масштабе.

Впоследствии,ARM,AUTOMATA,1PASSword, Тойота, Активижн,Knoldus,TangramКомпании с амбициями на будущее в различных областях присоединились к фонду и внесли свой вклад в продвижение Rust.

Недавно Rust Foundation выбрал 15-летний опыт работы в некоммерческих организациях.RebeccaИзвестен как исполнительный директор (ED) и генеральный директор Фонда. Я считаю, что под руководством Rust Foundation у Rust будут широкие перспективы применения.

Возможности и проблемы проекта Rust

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

до настоящего времени,crates.io Общее количество загрузок вышеуказанных ящиков достигло11,012,362,794раз, или 11 миллиардов раз.

Мы можем использовать эти индикаторы, чтобы судить о зрелости Rust.

  1. Номер пользователя: Rust шесть лет подряд был самым популярным языком среди пользователей, но фактическое количество пользователей может варьироваться отTIOBEКак видно из рейтинга языков программирования, по состоянию на ноябрь 2021 года Rust занимает 29-е место, а популярность0.54%. ни один не вошелTIOBEТоп-20 языков в списке на самом деле все еще нуждаются в маркетинге и рекламе, а это значит, что Rust по-прежнему остается нишевым языком.
  2. количество участников. На данный момент количество участников Rust составляет3539индивидуальный. Давайте сравнимGithubДругие языки с открытым исходным кодом: популярныеGoТекущие участники языка:1758индивидуальный;KotlinТекущие участники516индивидуальный. Взгляните на популярные фреймворкиRailsАвторы4379индивидуальный. Относительно говоря, разработчики языка Rust довольно велики.
  3. Исправление ошибок/частота исправлений. согласно сGithub issuesСвязанные данные: Rust в настоящее время исправляет в среднем одну проблему в час, невооруженным глазом. С момента первого коммита основателя Rust Грейдона 17 июня 2010 года было внесено общее количество исправлений.33942индивидуальныйissuesа также49011индивидуальныйPR, в течение десяти лет3832расчет дня, средний ремонт за один день8проблема,13индивидуальныйPR.
  4. Количество открытых вопросов. В настоящее время есть7515Для открытой проблемы, если рассчитать указанную выше среднюю частоту устранения проблемы, ожидается, что она будет устранена примерно через 3 года. Спустя 3 года выходит новое издание:2024 Edtion.
  5. Статистика репозитория: Текущее количество звезд60500индивидуальный,watchномер имеет15000индивидуальный.
  6. StackOverflowколичество вопросов: Всего есть проблемы, связанные с Rust.24924в неделю в среднем150вопрос или около того, каждый день20о проблеме. По сравнению с другими языками,javascriptвопрос2299100индивидуальный,Javaвопрос1811376индивидуальный,Goвопрос57536индивидуальный,Cвопрос368957индивидуальный,Cppвопрос745313индивидуальный. в сравнении сGo, у Rust почти в два раза меньше проблем.
  7. Частота выпуска новых функций: Стабильная версия Rust выпускает новую версию каждые шесть недель.
  8. Это стабильно: Rust уже давно стабилен.
  9. API Изменить частоту: стабильная версияAPIПринципиально не изменится.
  10. Есть ли "основной" разработчик: Есть много разработчиков ядра Rust, и дистрибутив организован рабочей группой, см.Управление командой Rust
  11. Количество и качество документации:APIДокументация, книги, учебные пособия и блоги. РжавчинаAPIДокументация достаточно зрелая и продвинутая.В настоящее время в стране и за рубежом появляется все больше и больше книг по Rust.Rust Weekly публикует множество связанных с Rust блогов, видео и других статей в сообществе каждую неделю.
  12. Частота ответов сообщества: Как опытные пользователи могут помочь новым пользователям. Сообщества Rust существуют дома и за границей, помогая членам сообщества общаться через групповые организации, форумы, офлайн-мероприятия и т. д.
  13. бизнес поддержка: Основание Rust Foundation: Google, Huawei, Microsoft, Amazon,Facebook, Mozilla, Toyota, Activision и другие компании входят в его совет директоров.
  14. Количество известных проектов и приложений продукта: Открытый исходный кодCNCFНекоторые из известных проектов: База данных (TiKV), облачный (Linkerd,Krustlet), системы потоков событий (Tremor),а такжеGoogle Andriod, Amazon, Microsoft и т. д. поддерживают разработку на Rust, блокчейн (Near, Solana, Parity и т. д.). Отечественные компании, использующие Rust: Ant Financial, PingCAP, ByteDance, Secret Ape, Xita, Haizhixingtu, Feiconvex Technology и др. Есть много замечательных проектов или продуктов, которые здесь не перечислены.
  15. Количество «террористических актов», без этого он не может использоваться в реальной сложной производственной среде. В Rust есть специальная рабочая группа по информационной безопасности и специальный веб-сайт для записи связанных «ужасных инцидентов» в экосистеме Rust:rustsec.org/.
  16. Поддержка цепочки инструментов: поддержка нового компоновщика (mold) / новый инструмент трассировки (tracy)/profiler коммерческие продукты также поддерживают Rust (superluminal)так далее.

Зрелость ржавчины должна относиться к стадии «цветения», если сравнивать ее со стадией роста растения («посев — прорастание — цветение — плодоношение»).

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

Проблемы в основном исходят из двух аспектов:

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

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

Появились предварительные результаты проверки безопасности памяти языка Rust

Согласно статье, опубликованной на arXiv 31 декабря 2021 г.«SOK: об анализе безопасности веб-браузера»сказал в:

Сравниваются четыре архитектуры браузеров, и в последнее десятилетие проблемы с безопасностью памяти в браузерах по-прежнему остаются актуальными. Но обратите внимание, что Firefox заменяет 12% компонентов через проект Oxidation (Rust). С 2015 года наблюдается небольшое, но неуклонное снижение количества ошибок безопасности памяти в Firefox, при этом заметно снижается количество ошибок безопасности памяти рендерера.

Oxidation— это проект, посвященный интеграции кода Rust в Firefox. Поддержка Rust требуется на всех платформах, начиная с Firefox 54, а первые основные компоненты Rust были выпущены в Firefox 56 (encoding_rs) и 57 (Stylo). В дальнейшем Oxidation стремится сделать использование Rust в Firefox проще и эффективнее и, соответственно, увеличить объем кода Rust в Firefox.

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

Возможности языка Rust будут улучшены

Чтобы двигаться вперед гладко, язык Rust должен решить следующие проблемы:

  • Улучшения обработки ошибок. существуетRFC 3058описано вTryУлучшения свойств для достижения единой обработки ошибок.
  • Ввод/вывод безопасности. Недавно Rust официально объединил RFC 3128, путем введения концепции безопасности ввода-вывода и нового набора типов и признаков дляAsRawFdА пользователи родственных трейтов предоставляют гарантии относительно своего исходного дескриптора ресурса, тем самым закрывая дыру в границах инкапсуляции в Rust.
  • Общий ассоциированный типGAT. Общие ассоциированные типы находятся в RFC 1598 определяется в. Эту функцию часто сравнивают с Haskell.HKT(Higher Kinded Type), который является типом более высокого порядка. Несмотря на то, что Rust похож, он не использует Haskell.HKTСкопируйте как есть, но дайте собственные характеристики RustGAT(Generic associated type)Концепция чего-либо.
  • Общая специализация. Концепция универсальной специализации соответствует шаблонной специализации C++. Но Cpp поддерживает специализацию достаточно полно, а специализация в Rust еще не стабильна. существуетRFC #1210Стандарт реализации для родовой специализации ржавчины определен вissue #31844Статус его реализации отслеживается. Есть еще много нерешенных вопросов.
  • Асинхронность: асинхронная черта и асинхронное падение. Хотя Rust в настоящее время является асинхронным, он уже давно стабилен, но еще есть много возможностей для улучшения. С этой целью чиновник создал асинхронную рабочую группу и создалАсинхронный базовый пландля облегчения этого процесса. Кроме того, чиновник также начал обсуждение стандартизации асинхронной среды выполнения, чтобы добиться переносимости и совместимости асинхронной среды выполнения.
  • Сопрограммная стабилизация. В настоящее время асинхронность Rust реализована на основе генератора механизма полусопрограммы (Generator), но функция генератора нестабильна. Тема стабильности функций генератора иногда поднимается на форумах Rust, поскольку функции генератора также являются относительно распространенными и полезными функциями в других языках.
  • Портативный SIMD. Выпущена официальная команда Rustportable-simd, вы можете использовать эту библиотеку вместо Nightlypacked_simd. Эта библиотека упрощает и делает более безопасной разработку кросс-платформенного SIMD на Rust. В ближайшее время он также будет введен в стандартную библиотеку и стабилизирован.
  • новыйasm!служба поддержки.asm!Макросы позволяют встроенную сборку в Rust. существуетRFC #2873предусмотрено в новомasm!Синтаксис макроса будет использоваться для совместимости с архитектурами ARM, x86 и RISC-V и т. д., чтобы облегчить добавление дополнительной поддержки архитектуры в будущем. предыдущийasm!Макрос был переименован вllvm_asm!. текущий новыйasm!близка к стационарному состоянию, доступна наissue #72016в отслеживании. В общем, пустьasm!Макросы более общие, чемllvm_asm!, который имеет лучший синтаксис.
  • Rustdocпродвигать. Rust — элегантный язык. И эта элегантность очень полная. Помимо элегантного оформления многих особенностей языка, еще одной изюминкой является Rustdoc. Официальная рабочая группа Rust doc стремится сделать Rustdoc отличным инструментом. Rustdoc прост в использовании, создает очень красивые страницы и превращает написание документации в удовольствие. Для подробного ознакомления с Rustdoc вы можете перейти по ссылкеRustdoc book.
  • Непрерывный и стабильныйНестабильные функции Rust для LinuxПеречислены в. Это было сделано с командой Rust для Linux.
  • Новый сервер GCC. Чтобы продвигать Rust для Linux, поддержка Rust для нового бэкенда GCC также находится на повестке дня. вrustc_codegen_gcc Самый быстрый прогресс, некоторые изrustcтестовое задание,rustc_codegen_llvm в настоящее время является основным проектом разработки,Rust GCC Ожидается, что он будет завершен в течение 1-2 лет.
  • API стабильного распределителя. Добавляет стандартный интерфейс распределителя и поддерживает определяемые пользователем распределители, позволяет различным коллекциям поддерживать разные распределители и многое другое. В частности, вRFC 1398полностью описан. Текущий статусVec<T>Добавлен общий параметр распределителя.

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

Проблемы, отмеченные в управлении открытым исходным кодом Rust

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

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

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

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

Но в это время я вспомнил, что когда в 2020 году была выпущена версия Rust 1.44, в официальном блоге было сказано следующее: «Технологии есть и всегда будут политическими».

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

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

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

Статус применения и тенденции Rust в различных областях

Далее давайте посмотрим на состояние и возможные тенденции приложений Rust в различных областях в 2021 году.

операционная система

Начнем с операционной системы.

Rust for Linux

С июня 2020 года входит Rust LinuxЭто начало становиться темой.LinuxСоздано Линусом на тогдашнем саммите по открытым исходным кодам и для встраиваемых систем. LinuxНа встрече говорили о поиске будущих сопровождающих для ядра с открытым исходным кодом.

Линус упомянул: «Ядро скучное, по крайней мере, большинство людей считают его скучным. Многие новые технологии должны быть более интересными для многих людей. Оказывается, сопровождающих трудно найти. Найдите Кого-то, кто стоит выше по течению и делает обзоры кода других людей. Это не просто доверие со стороны других сопровождающих, это доверие со стороны всех, кто пишет код... просто требуется время».

Rust как изначально безопасный язык, т.к.CАльтернативные языки для , очень помогают построить взаимное доверие между разработчиками ядра. Две трети уязвимостей безопасности ядра Linux (PDF) происходит из-за проблем с безопасностью памяти, и введение Rust в Linux сделает его более безопасным, что в основном достигло консенсуса.

На Саммите по открытым исходным кодам в этом году (2021) Линус сказал: «Я думаю, что C — отличный язык, и для меня C — это действительно способ управления оборудованием на довольно низком уровне. Поэтому, когда я смотрю на код C, Я довольно точно догадываюсь, что делает компилятор. Он настолько близок к аппаратному обеспечению, что вы можете делать с ним все что угодно. Однако тонкое взаимодействие типов в C не всегда имеет смысл Да, подводные камни есть почти у всех. Их легко не заметить, а в ядре это не всегда хорошо Rust - это первый язык, который я видел, который выглядит как настоящее исправление Язык проблемы Люди уже давно говорят о Rust в ядре, но это еще не сделано, и, возможно, в следующем году мы впервые увидим некоторые бесстрашные модули, написанные на Rust, возможно, интегрированные в основное ядро».

Линус думаетLinuxОдин из важных краеугольных камней того, почему он был таким вечнозеленым, — это веселье, а веселье — это то, к чему он всегда стремился. Когда люди говорят о написании чего-то на RustLinuxСамое интересное начинается, когда возможны модули ядра.

На конференции Linux Plumbers в сентябре 2021 года в очередной раз обсуждался прогресс Rust в ядре Linux.

  1. Главный разработчик Rust для Linux Мигель Охедал сказал, что если Rust войдет в ядро, он должен быть первоклассным гражданином. Линус ответил, что сообщество ядра почти наверняка будет экспериментировать с языком.
  2. Rust входит в ядро, будут некоторые сопровождающие, чтобы изучить этот язык, используемый для ПРОВЕРКИ кода RUST. Линус сказал, что Rust нетруден для понимания, любой способный язык Rust в сообществе ядра должен освоить язык Rust в той степени, в которой он достаточен для просмотра кода языка.
  3. Оджедал сказал, что текущая работа над ядром по-прежнему использует некоторые функции Unstable Rust, что приводит к недостаточной совместимости, чтобы гарантировать, что обновленный компилятор Rust может нормально компилировать соответствующий код. Но если Rust войдет в ядро ​​Linux, это изменится, и для некоторых функций Unstable Rust официальная команда Rust также рассмотрит вопрос о том, чтобы сделать его стабильным. Это толчок, рано или поздно будет построено ядро, использующее только стабильную версию Rust, и тогда проблемы с совместимостью исчезнут.
  4. Другой разработчик ядра, Томас Глейкснер, был обеспокоен тем, что порядок памяти официально не поддерживается в Rust, что может быть проблематично. Но Пол МакКенни, другой специалист по сопровождению ядра Linux, три десятилетия работавший над параллельным программированием cpp, написал:серия статейДавайте обсудим, как сообщество Rust может получить правильную модель упорядочения памяти, когда Rust входит в ядро ​​Linux. Я также написал другую статью об этом[Я читаю] Какую модель памяти должен использовать язык Rust?.
  5. Что касается поддержки Rust для GCC, котораяrustc_codegen_gcc Самый быстрый прогресс, некоторые изrustcтестовое задание,rustc_codegen_llvm в настоящее время является основным проектом разработки,Rust GCC Ожидается, что он будет завершен в течение 1-2 лет.

Итогом конференции стало:

  1. Rust наверняка проведет эпохальный эксперимент в ядре Linux.
  2. Вхождение Rust в ядро ​​Linux имеет стратегическое значение для эволюции Rust.

11 ноября 2021 года на сайте Linux Foundation была опубликована еще одна запись веб-конференции:Rust для Linux: написание абстракций безопасности и драйверов, в этом видео Мигель Охеда объясняет, как Rust работает в ядре, включая общую инфраструктуру, модель компиляции, документацию, рекомендации по тестированию и написанию кода и многое другое.

Я сделал краткий конспект этой части видео:

  1. Представляем Unsafe Rust и Safe Rust.
  2. Использование Rust в ядре Linux основано на концепции: инкапсулировать небезопасные операции и предоставить разработчикам ядра безопасную абстракцию. Эта абстракция безопасности расположена по адресуGitHub.com/rust-foru-l я…изkernelв модуле.
  3. Приведите простой пример того, как написать драйвер ядра
  4. Сравните пример языка C, чтобы показать, как ведет себя Safety в Rust.
  5. Описаны документация, рекомендации по тестированию и написанию кода, которым необходимо следовать.

Утром 2021.12.6 был выпущен обновленный патч, представляющий начальную поддержку и инфраструктуру для обработки Rust в ядре.

Это обновление включает в себя:

  1. Стабильный обновлен до последнего компилятора и версии Rust 2021. Таким образом, мы можем избавиться отconst_fn_transmute,const_panic,const_unreachable_unchecked,core_panicа такжеtry_reserveЭти ранее нестабилизированные функции.Нестабильные функции.
  2. настроитьcoreа такжеalloc. заallocДобавлены дополнительные модульные опции для отключения некоторых функций, которые им не нужны:no_rcа такжеno_sync, в основном добавляются для исходных проектов Rust.
  3. Более строгий код, документация и новыеlint.
  4. Абстракция и обновления драйверов. Добавлены абстракции для блокировок последовательности, обратных вызовов управления питанием, памяти ввода-вывода (readX/writeX), микросхемы прерывания и расширенные обработчики потоков, микросхемы gpio (включая микросхемы прерывания), устройства, устройства и драйверы amba, а также сертификаты. Кроме того, улучшены и упрощеныRef(refcount_tsupport) объект и заменил объект RustArcвсе экземпляры . полностью отallocудалено из ящикаArcа такжеRc.

С этого момента команда Rust для Linux начнет выпускать патчи регулярно, каждые две недели или около того.

В дополнение к поддержке от Arm, Google и Microsoft, на этот раз команда получила письмо от Red Hat: есть интерес к использованию Rust для работы с ядром, что Red Hat также очень заинтересована в использовании Rust для работы с ядром, что Red Hat рассматривает) .

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

Redox + Theseus

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

Хотя инициатор Redox работает в System76, проект Redox на самом деле не спонсируется System76. Раньше я думал, что Redox был коммерческим проектом System76 с открытым исходным кодом, но только недавно узнал, что все расходы Redox покрываются за счет спонсорства сообщества. Основные расходы Redox в основном идут на Redox OS Summer of Code, нанимая некоторых студентов для улучшения его функций.

Одна из наиболее важных разработок Redox в 2021 году — еще одна операционная система, реализованная на Rust.TheseusОбъявлено о присоединении к Redox.

Различные процессы в современных ОС имеют много общих состояний, что может привести кstate spillНапример, при сбое системной службы Android происходит сбой «всей среды пользовательского пространства», что затрагивает все приложения, даже те, которые не используют неисправную службу.

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

Аварийное переключение ОС Тесей включает замену поврежденной ячейки на новую. Исследователи утверждают, что это «позволяет Тесею терпеть сбои на самом низком системном уровне перед лицом нескольких отказавших подсистем». слышали о нем, да?

Встроенная ОС

Tock OS 2.0

Tock— это встроенная операционная система, предназначенная для одновременного запуска нескольких ненадежных приложений на встроенных платформах на базе Cortex-M и RISC-V. Tock разработан с учетом защиты как от потенциально вредоносных приложений, так и от драйверов устройств. Tock использует два механизма для защиты различных компонентов операционной системы. Во-первых, ядро ​​и драйверы устройств написаны на Rust, языке системного программирования, который обеспечивает безопасность памяти во время компиляции, безопасность типов и строгое сглаживание. Tock использует Rust для защиты ядра (например, уровня планировщика и аппаратной абстракции) от драйверов устройств, зависящих от платформы, и для изоляции драйверов устройств друг от друга. Во-вторых, Tock использует модуль защиты памяти, чтобы изолировать приложения друг от друга и от ядра.

Этот OpenSK, выпущенный Google, работает на Tock!OpenSK — это реализация ключа безопасности с открытым исходным кодом, написанная на Rust и поддерживающая стандарты FIDO U2F и FIDO2.

Одним из шагов Tock OS в этом году является то, что она была обновлена ​​до версии 2.0, и это обновление является крупным обновлением, совершенно новым ядром, и основной API ядра был переработан.

И поддержка чипов и плат разработки в основном охвачена очень всесторонне:RISC-V / ARM CortexM0+ / ARM CortexM7 / Nano RP2040 / Rapsberry Pi Pico/ ESP32-C3-DevKitM-1и т.п.

Hubris

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

OXide поделился на мини-саммите OSFF 2021 в этом годуГрядущая революция прошивкиКак уже упоминалось, Rust станет частью грядущей революции прошивки. Итак, они пересмотрели встроенные операционные системы и разработали Hubris на Rust. В настоящее время Hubris поддерживает только платформу Arm Cortex M.

Высокомерие против TockOS:

  • Tock использует динамическую загрузку, а Hubris — статическую.
  • Tock очень асинхронный, Hubris строго синхронный
  • Драйвер Tock находится в той же защищенной области, что и ядро, а драйвер Hubris находится в другом домене проекции.

разное

Новая версия VxWorks

ветер рекаVxWorks— это детерминированная, основанная на приоритетах, упреждающая операционная система реального времени со сверхнизкой задержкой и минимальным дрожанием. Его официальный сайт сообщил о поддержке только в последней версииC ++ 17,Boost,Rust,Python,pandasОперационные системы реального времени, такие как языки разработки.

Google Fuchsia

В мае 2021 года была официально выпущена ОС Google Fuchsia, и с декабря Fuchsia будет работать на втором устройстве (Nest Hub Max).

Как мы все знаем, почти 30% кода Fuchsia реализовано на Rust. Анализ политики языка программирования Rust по Fuchsia:

преимущество:

  • Дерево исходного кода платформы Fuchsia имеет активный опыт реализации с использованием Rust.
  • Язык обеспечивает гарантии безопасности памяти, тем самым снижая риск уязвимостей безопасности в программном обеспечении, разработанном на этом языке.
  • Асинхронные программы могут быть написаны с использованием прямого кода.
  • У проекта Fuchsia есть возможность влиять на языковое развитие.

недостаток:

  • Rust еще не является широко используемым языком.
  • Никто из наших нынешних конечных разработчиков не использует Rust.

Итак, в итоге было решено:

  • В настоящее время Rust не поддерживается конечными разработчиками.
  • Rust одобрен для использования во всем исходном дереве платформы Fuchsia, за следующими исключениями:
    • ядроЯдро Zircon построено с использованием ограниченного набора технологий, которые имеют признанный опыт использования в производственных операционных системах.

облачный носитель

Linkerd2

2021 год станет знаменательным для Linkerd. этот проектОкончил Фонд облачных вычислений., что представляет собой наивысший уровень зрелости проекта. Принятие Linkerd резко возросло в этом году благодаря таким организациям, какMicrosoft,S&P Global,так же какНорвежское управление труда и социального обеспеченияи многие другие публично приняли Linkerd.

Linkerd 2.11 выйдет в сентябре 2021 года, больше компонентов переносится на Rust. До Linkerd на Rust была реализована только прокси-часть, а в версии 2.11.0 Linkerd принял новый компонент контроллера политик, написанный на Rust! Он использует kube-rs для связи с API Kubernetes и предоставляет API gRPC, реализованный в Tonic.

Хотя Linkerd имеет большой опыт работы с Rust в плоскости данных, они выбрали Go в качестве компонента плоскости управления, потому что экосистема Kubernetes (и ее клиенты API и т. д.) так сильно склоняется к Go. Однако из-заu/cluxОтличная работа над kube-rs, теперь можно реализовать контроллеры в Rust. Это большой шаг вперед для проекта Linkerd, и они планируют больше использовать Rust на протяжении всего проекта. он выпустилМногочисленные тесты производительности и использования ресурсов на порядок опережают Istio.; это продолжаетсяЛидирует в привлечении Rust кОблачное родное поле. Они надеются, что это новое направление для Linkerd поможет привлечь больше участников, желающих расширить свой практический опыт работы с Rust.

Если вас интересует дорожная карта Linkerd2 на 2022 год, нажмите здесь.здесь.

Deislabsпроект

Akri

Akri — это проект-песочница Cloud Native Computing Foundation (CNCF), целью которого является предоставление решений для граничных вычислений для Kubernetes. Akri стремится стать стандартным способом использования IoT-устройств в кластерах Kubernetes на периферии, поэтому Akri не только означает «край» на греческом языке, но также означает интерфейс ресурсов Kubernetes.

Krustlet

KrustletэтоkubeletРеализация, которая позволяет пользователям запускать рабочие нагрузки WebAssembly и традиционных контейнеров в одном кластере Kubernetes.

В 2021 году Крастлет иkratorПроект (Kubernetes Rust State Machine Manipulation Framework) вместе стал проектом песочницы для CNCF и на данный момент выпущен.1.0-alpha.1 версия, официальная версия 1.0 будет выпущена в ближайшее время.

ну это 1.0после всегоЧто это значит? Это означает гарантии стабильности и обратной совместимости. С его помощью люди могут начать создавать настоящие продукты. Дополнительные функции будут добавлены позже по мере развития WebAssembly и WASI.

WebAssembly ServerSide и граничные вычисления

Lucet

существуетБыстро 2021 ОбзорВ статье упоминается:

Ежедневный трафик запросов для Compute@Edge испытал взрывной рост в 2021 г., увеличившись более чем на 31 000 % по сравнению с январским ежедневным трафиком.50 trillion requests by the end of 2022.

В 2021 году ежедневный трафик запросов Compute@Edge резко вырос, увеличившись более чем на 31 000% по сравнению с январским ежедневным трафиком. Ожидается, что к 2021 году общее количество запросов клиентов достигнет 2 триллионов запросов, а к концу 2022 года — 50 триллионов запросов.

и этоCompute@Edge— это платформа граничных вычислений Fastly, способная запускать пользовательские двоичные файлы, которые вы компилируете в своей собственной системе и загружаете в Fastly. Скомпилировав код вWebAssemblyдля обеспечения безопасности и переносимости они используютLucetLucet — это среда выполнения WebAssembly с открытым исходным кодом, созданная Fastly. И Lucet основан на альянсе байт-кодаwasmtimeРеализовано средой выполнения WebAssembly.

разное

В области WebAssembly Serverside есть много очень инновационных продуктов:

  • WasmEdge, — это легкая, быстрая и критически важная среда выполнения кода для граничных вычислений и программно-определяемых транспортных средств. Цель состоит в том, чтобы резко снизить сложность и увеличить скорость разработки. В настоящее время это самая быстрая виртуальная машина Wasm на рынке, разработанная Cpp, но сейчас разрабатывается Rust SDK, который полностью поддерживает Rust.
  • WasmCloud, представляет собой распределенную вычислительную платформу, основанную на WebAssembly, и в настоящее время является проектом песочницы CNCF. Что более инновационно, так это то, что он разработал стандарт waPC для безопасных вызовов процедур гостя и хоста, чтобы решить проблему несовершенных функций, таких как текущий WASI.

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

Среди них основные библиотеки, которые можно использовать для облачных проектов:

  • monoio, — это асинхронная среда выполнения, основанная на модели ввода-вывода «поток на ядро».Проектирование и реализация асинхронной среды выполнения Rust
  • keyhouse, система управления ключами, используемая внутри Byte, имеет открытый исходный код на github и поддерживает шифрование и дешифрование, а также управление конфиденциальной конфигурацией. В настоящее время многие внутренние предприятия Byte развиваются на основе этой системы.

Интернет вещей (IoT)

Прогресс рабочей группы Rust Embedded

  1. Raspberry Pi 2021 выпускает первый микроконтроллер RP2040 с двумя ядрами Cortex M0. Это натолкнуло членов рабочей группы на мысль о том, как обеспечить безопасность многоядерных микроконтроллеров, отсюда и организация rp-rs.
  2. Espressif (Эспрессиф) официально наняла mabez для разработки поддержки Rust для чипов eso: esp-rs
  3. Другие платформы постепенно начинают поддерживать Rust, в том числе: Atmel ARM SAM-D и SAM-E, Atmel AVR, микроконтроллеры NXP ARM iMX.RT, устройства ARM nRF51, 52 и 9160 Bluetooth/LTE, RISC-V, Raspberry Pi, STM32. , так далее.
  4. Встроенная экосистема Rust выросла как на дрожжах:
    • Встроенная среда параллелизмаRTICуже 1.0
    • Встроенная асинхронная структураEmbassyВ стадии разработки и поддержки платформ STM32, nRF и RP2040, а также сильно влияют на улучшения асинхронности Rust.
    • Встроенные средства разработки и отладкиKnurlingВыпущен новый инструмент зонда
    • встроенныйTCP/IPкучаsmoltcpвыпущена новая версия
    • Встроенная графическая библиотекаembedded-graphicsвыпущена новая версия
    • Новая встроенная ОС реального времени Hubirs имеет открытый исходный код.
  5. Проекты, поддерживаемые самой встроенной рабочей группой, также активно развивались и поддерживались в течение года.

Узнать больше:blog.rust-embedded.org/this-year-i….

В общем, Rust взрослеет во встраиваемом пространстве.

Эспрессиф esp-rs прогресс

В 2021 году Espressif объявила о найме mabez для постоянной работы над поддержкой Rust для ESP32.esp-rs. Это означает, что Rust полностью войдет в поле esp32.

По состоянию на конец года выполненные работы Мабеза можно увидеть в его блоге.В целом текущий прогресс таков:

  • esp-rs book
  • Поддержка probe-rs для esp32c3 теперь относительно завершена.
  • espflash достиг 1.0
  • представлятьesp32-hal
  • другое, многое другое

Дополнительные обновления см.Rust on Espressif chips - 10-01-2022. Надо сказать, что Espressif — дальновидная компания.

тренд

ARM, безусловно, ведущий производитель встраиваемых устройств, таких как наборы микросхем и датчики, используемые на границе IoT, присоединилась к Rust Foundation в этом году.

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

Из-за частей его экосистемы, связанных с IoT, он все еще развивается, ему не хватает даже некоторых важных основ, и он далек от стабильности. Но с другой стороны, мы наблюдаем активную разработку фундаментальных основ, жизненно важных для Rust, поскольку Drogue, Ferrous Systems и несколько других независимых компаний усердно работают над продвижением Rust в пространство IoT.

игра

Графический рендеринг графического процессора Заслуживающие внимания проекты

rust-gpu

rust-gpuЭто проект студии embark с открытым исходным кодом, посвященный тому, чтобы сделать Rust первым языком в области рендеринга графики. В настоящее время работает с Traverse research над созданием rust-gpu.

Embark — совместное предприятие с южнокорейской игровой компанией Nexon («MapleStory», «Run Kart»). Генеральный директор Embark — бывший главный дизайнер EA Патрик, который был генеральным директором DICE, разработчика серии Battlefield. Embark также является членом рабочей группы Rust Gaming, и компания спонсирует многих авторов проектов с открытым исходным кодом экосистемы Rust.

Traverse Research находится в самом сердце города Бреда, Нидерланды, и стремится сделать Бреду центром разработки игр. Основные члены команды хорошо разбираются в области графики.

rust-gpu в основном предназначен для движков рендеринга графики, в надежде представить Rust как язык шейдеров. Это достигается путем компиляции в spir-v (двоичный промежуточный язык для шейдеров) с бэкендом rustc. В настоящее время в этой области обычно используется GLSL/HLASL, но они не предоставляют механизма для работы с большими базами кода с развитием игровой индустрии, поэтому в этой области срочно необходим отличный язык затенения, и люди из embark думают, что Rust — лучший выбор, поэтому они сделали свою работу.

приступайте также к открытому исходному коду экспериментального механизма рендеринга глобального освещения на основе rust-gpu.kajiya.

Rust-CUDA

Rust-CUDAЭто 1 уровень( tier-1) языковые предметы. Команда надеется, что с помощью этого проекта она сможет продвинуть индустрию вычислений Rust GPU вперед и сделать Rust отличным языком для таких задач. Rust предлагает множество преимуществ, таких как эффективное использование преимуществ производительности каждого ядра, отличная система модулей/кретов, использованиеunsafeОтделяйте небезопасные области кода CPU/GPU, создавайте высокоуровневые оболочки для низкоуровневых библиотек CUDA и многое другое.

WGpu

Цель сообщества gfx-rs — сделать программирование графики на Rust простым, быстрым и надежным. Основные проекты:

  • wgpu,Учредилwgpu-halа такжеnagaнад. Он обеспечивает безопасность, доступность и переносимость графических приложений.
  • naga, библиотека перевода языка шейдеров, включая WGSL. Он также обеспечивает проверку и преобразование шейдеров, обеспечивая безопасность и эффективность пользовательского кода, работающего на графическом процессоре.

Среди разработок wgpu в 2021 году:

  • gfx-hal мигрирует во вновь созданныйwgpu-halи реструктурировал репозиторий, чтобы все было вместе.
  • wgpuа такжеDenoблизкоинтегрированный.
  • С точки зрения правильности и переносимости, тяжелая работа проделана для того, чтобы гарантировать, что все ресурсы должным образом инициализированы нулями. Это оказывается сложнее, чем кажется, и теперь пользователи получат одинаковое поведение на разных платформах.

Нага 2021 События:

  • Добавлено больше бэкэндов (HLSL, WGSL) и значительно улучшена поддержка рабочего стола.
  • Заброшенный SPIRV-Cross

Лучшие игровые движки

Bevy

BevyЭто управляемый данными игровой движок, основанный на Rust. По сравнению с другими игровыми движками, реализованными на Rust, такими как Amethyst, Bevy принадлежит к более поздним поколениям. Bevy уникален в дизайне API, в полной мере используя возможности языка Rust, что делает его очень простым и удобным для разработчиков. Благодаря механизму плагинов Bevy постепенно сформировала свою собственную экологию, и постепенно появилось множество плагинов на основе Bevy.

Спонсорство Bevy на GitHub как проекта с открытым исходным кодом почти завершено.$6000 в месяцЦель. Хотя в настоящее время Bevy выпустила только версию 0.6, ее экология постепенно устанавливается, и многие люди ее приветствуют и ожидают.

Беви 0.6 имеетмногоУлучшения, исправления ошибок и улучшения качества, вот некоторые из них:

  • Совершенно новый современный рендерер, который красивее, быстрее и проще в расширении.
  • Встроенная поддержка WebGL2. ты можешь пройтиЗапуск примера Bevy в браузерепроверить это!
  • Более мощные шейдеры: препроцессор, импорт, поддержка WGSL
  • Улучшения эргономики и производительности Bevy ECS. никого не осталось.system()!

узнать большеПредставляем Беви 0.6.

Кстати: Уже есть отечественные компании, которые применяют Беви в коммерческих проектах, а также ведут набор.

Fyrox(Rg3d)

Fyrox(rg3d)это еще один игровой движок, реализованный на Rust, который поддерживает 3D и 2D.Предыдущий проект назывался rg3d, но теперь он был переименованFyrox.

Хоть движок игры и не так популярен, как bevy, но тоже быстро развивается, вышла версия 0.24. Изменения простыми словами:

  1. 2д поддержка. Изначально движок был ориентирован только на 3D-игры, но в rg3d 0.23 все немного изменилось, добавив простую версию 2D-сцены.
  2. Добавлено руководство по развитию
  3. физическая интеграция
  4. Представлен звуковой движок rg3d-sound

Подробнее см.Основные особенности rg3d 0.24

Аметист новое начало

Аметистовый двигательОбъявлено о прекращении разработки, эстафета игрового движка была передана Bevy, и Amethyst Foundation будет создавать ценности в игровой сфере в будущем, но это не ограничивается игровыми движками.

Почему это происходит?

  1. Amethyst не нашел своей опоры с тех пор, как перешел от нисходящей модели BDFL к плоской одноранговой модели. В команде не было единого мнения о целях Amethyst.

  2. Двигатель Bevy хорошо разработан и передаст факел двигателя Amethyst.

Хорошая сторона того, что делает движок Amethyst: при создании продвинутого игрового движка на основе ECS сотни энтузиастов-разработчиков игр на Rust связываются друг с другом через Amethyst и заводят прочные дружеские отношения.

BDFL: BDFL — это аббревиатура от «Benevolent Dictator For Life» на английском языке. Китайский перевод означает «доброжелательный диктатор на всю жизнь». В рамках этой архитектуры один человек (обычно первоначальный автор проекта или человек, избранный сообществом) принимает все окончательные решения по проекту. Меньшие проекты могут по умолчанию использовать структуру BDFL, поскольку такие проекты обычно имеют одного или двух сопровождающих. Если проект, организованный компанией, также, скорее всего, примет структуру BDFL, чтобы понять полномочия проекта по принятию решений.

будущее аметиста

Amethyst создала фонд уже давно.Хотя разработка игрового движка остановлена, Amethyst Foundation продолжит инвестировать в игровое поле. Но будущее больше не будет сосредоточено исключительно на создании какого-либо конкретного игрового движка.

Далее, это может помочь новым разработчикам игр на Rust войти в эту область и приложить некоторые усилия, такие как продвижение, координация, образование, создание сообщества и т. д. И теперь часть команды Amethyst будет независима от движка, например Distill, specs, Legion, Laminar и так далее.

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

разное

Quilkin

quilkinGoogle Cloud иОтправляйтесь в студиюСовместно разработанный прокси-сервер UDP, предназначенный для высокопроизводительных многопользовательских игр в реальном времени и представляющий собой стандартное решение с открытым исходным кодом. Его цель двояка:

  1. Удалите общие функции, такие как безопасность, контроль доступа, телеметрия и метрики, с монолитных выделенных игровых серверов и клиентов.
  2. Предоставьте эти общие функции составным и настраиваемым способом, чтобы их можно было повторно использовать в широком диапазоне многопользовательских игр.

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

Rapier

rapier— это 2D- и 3D-физический движок, написанный на Rust для игр, робототехники и анимации. В 2021 году была выпущена новая версия с множеством новых улучшений. Основное внимание в этом выпуске уделяется поддержке многотельных соединений.

*Resolution Games*Технический директор компании говорит, используйте Rust для создания VR-игр, в которых используется физический движок Rapier.

обработка данных

Облако данных Databend

DatabendСтремится быть открытым исходным кодомэластичностьа такженадежныйCloud Warehouse, обеспечивающий молниеносно быстрые запросы в сочетании с эластичностью, простотой и низкой стоимостью облака, стремится сделать облако данных простым.

Databend вдохновлен ClickHouse, а вычислительная модель основана на apache-arrow. Databend реализует отказоустойчивую, полностью облачную архитектуру, в которой особое внимание уделяется разделению состояния и вычислений. По сравнению с традиционными хранилищами данных при использовании Databend пользователи получат более дешевый, простой в использовании опыт с оплатой по мере использования. Databend будет итерироваться в сторону Serverless. Бессерверное означает, что планирование ресурсов более точное. Вычислительные узлы облачной базы данных могут быть такими же, как функция. При использовании они извлекаются и уничтожаются после использования. Вам нужно только платить за использование, а планирование ресурсов будет быть очень точным.

обработка потока данных

Tremor

Tremorэто система обработки событий. Первоначально он был разработан как замена программному обеспечению, такому как Logstash или Telegraf. Однако tremor выходит за рамки этого единственного варианта использования, поддерживая более сложные рабочие процессы, такие как агрегирование, сводки, языки ETL и языки запросов.

Tremor работает 24x7, 365 дней в году и реализован с использованием языка программирования Rust.

При более глубоком изучении компании, стоящей за проектом tremor-runtime, оказалось, что это Wayfair. Wayfair — крупнейшая компания по электронной торговле мебелью в США, рыночная стоимость которой в 2017 году составила 5,8 млрд долларов. Ее предшественником была компания CNSStores, основанная еще в 2002 году. Амазонка даже есть не может.

Tremor должен быть проектом с открытым исходным кодом, принадлежащим Wayfair и вошедшим в CNCF. В сентябре 2021 года небольшой онлайнTremor Conf

Статья за март 2020 года: Как Rust избавил Wayfair от стоимости тысяч ядер и терабайт памяти:2020-03-31-RustAndTellBerlin-functions

С 2018 года tremor работает в производственной среде Wayfair, обрабатывая 10 мегабайт данных в день, или 10 миллиардов сообщений в минуту, и 10 миллионов метрик в секунду. tremor снижает стоимость, снижает сложность, консолидирует и упрощает операционную среду, чтобы стимулировать SRE, снизить рабочую нагрузку NOC и снизить эксплуатационные расходы.

Materialize, потоковая база данных для аналитики в реальном времени

Materialize— это реактивная база данных, которая обеспечивает добавочные обновления представлений и помогает разработчикам легко создавать потоковые данные с помощью стандартного SQL. Дополнительных вычислений можно добиться, просто описав вычисления в стандартных представлениях SQL, а затем подключив Materialize к потоку данных без необходимости использования сложных конвейеров данных. основаниеДифференциальный поток данныхДвигатель (связанные документыOnline Analysis of Distributed Dataflows with Timely Dataflow) способен выполнять инкрементные вычисления, обеспечивая согласованный и правильный вывод с минимальной задержкой. В отличие от традиционных баз данных, нет ограничений на представления, определяющие Materialize, а вычисления выполняются в режиме реального времени.

Компания вошла в серию B с финансированием в размере 40 миллионов долларов.

разное
  • fluvio: это платформа потоков данных с открытым исходным кодом, которая объединяет, сопоставляет и применяет программируемый интеллект к динамическим данным. Fluvio на базе Rust обеспечивает высокопроизводительные программируемые потоки с малой задержкой в ​​облачной архитектуре.
  • vector: Легкий и сверхбыстрый инструмент для построения пайплайнов наблюдаемости.

граф базы данных

Haizhixingtu: распределенная высокопроизводительная графовая база данных финансового уровня

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

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

Машинное обучение и научные вычисления

Трансформеры, звездный проект в области НЛП в 2021 году

Hugging Face — это стартап-сервис чат-ботов со штаб-квартирой в Нью-Йорке, США. Компания хорошо известна в мире НЛП и только что в марте 2021 года завершила финансирование серии B на сумму 40 миллионов долларов. Библиотека НЛП с открытым исходным кодом выпущена на GitHubTransformers, а библиотека Transformers интегрирует токенизаторы.

tokenizersЭто реализованная на Rust библиотека сегментации слов с открытым исходным кодом Hugging Face, которая может обрабатывать 1 ГБ текста с серверным процессором менее чем за 20 секунд. Одним из узких мест в современных конвейерах НЛП, основанных на глубоком обучении, является токенизация, особенно универсальная и независимая от фреймворка реализация. Итак, ядро ​​этого токенизатора написано на Rust, а есть привязки для Node и Python. Предоставляет реализации наиболее часто используемых сегодня токенизаторов с акцентом на производительность и универсальность.

В настоящее время предсказания модели Transformer распространились по всем Tesla, Google, Microsoft, Facebook и другим технологическим гигантам. Трансформеры управляют автомобилями в системе автономного вождения Tesla AutoPilot, составляют предложения в Gmail, переводят сообщения пользователей в режиме реального времени на Facebook, отвечают на запросы пользователей на естественном языке в Bing и многое другое.

Можно сказать, что стартап Hugging Face использует Rust для создания токенизатора, что должно положительно сказаться на значительном повышении точности и производительности модели машинного обучения.

linfa

Linfa— это библиотека, похожая на python scikit-learn, реализованная на Rust, цель которой — предоставить комплексный набор инструментов для создания приложений машинного обучения с помощью Rust. Команда также создала организацию Rust-ML.

scikit-learn, также известный как sklearn, представляет собой набор инструментов машинного обучения с открытым исходным кодом, основанный на языке python. Он реализует эффективные приложения алгоритмов с помощью библиотек численных вычислений python, таких как NumPy, SciPy и Matplotlib, и охватывает практически все основные алгоритмы машинного обучения.

больше информации:Книга по машинному обучению Rust

В 2021 году библиотека выпустила версию 0.5, ееRoadmapВсего в игре 24 задания, 20 из которых выполнены на данный момент. Цель этой дорожной карты — сделать ее функционально сопоставимой с Python.scikit-learn(На основе разветвленной версии SciPy, разработанной для области машинного обучения) Предоставленные алгоритмы точно такие же. Незаконченными остались только гауссовские процессы, случайные леса, ансамблевое обучение и регрессия с минимальным углом. Эта дорожная карта разрабатывалась около двух лет и, как ожидается, будет завершена в 2022 году.

То есть в 2022 году в экосистеме Rust появится библиотека с точно такой же функциональностью, как у python sklearn, но с большей производительностью, чем у sklearn.

Polars

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

PolarsНовая библиотека Dataframe, реализованная на Rust с удобными привязками к Python. он пытается сделатьпотокобезопасный способВыполняйте чтение, запись, фильтрацию, применение функций, группировку и слияние. оно используетApache Arrow, платформа данных, специально созданная для эффективной обработки данных и обмена данными между языками.

Полар имеет два преимущества:

  1. Это убийца производительности, исх.db-benchmark.
  2. Его API очень прост. Даже если вы не понимаете синтаксиса Rust, вы можете понять, что делает интерфейс.

Минусов тоже три:

  1. Создать Dataframe API сложно, Pandas потребовалось 12 лет, чтобы достичь версии 1.0.0, а Polars еще молод, поэтому еще недостаточно зрел.
  2. При его использовании вам нужно быть знакомым не только с API Polars, но и с API Arrow, потому что большая часть тяжелой работы выполняется стрелкой.
  3. Время компиляции слишком медленное, может быть, 6 минут или около того.

Теперь Polars представленаXomniaСпонсорство компании. Xomnia — голландская компания по искусственному интеллекту, работающая над беспилотными лодками, известными как Tesla на воде.

oxide-enzyme

oxide-enzyme Еще один проект, созданный командой linfa в конце 2021 года. oxide-enzyme — это интерфейсная библиотека Rust для Enzyme, которая в настоящее время является экспериментальной, но находится в активной разработке.

Enzymeпредставляет собой структуру автоматического дифференцирования, предложенную Массачусетским технологическим институтом, которая способна синтезировать градиенты статически анализируемых программ, представленных в промежуточных представлениях LLVM (IR). Enzyme может синтезировать градиенты для любой программы, написанной на языках, предназначенных для компилятора LLVM IR, включая C, C++, Fortran, Julia, Rust, Swift, MLIR и других, предоставляя собственные возможности AD для этих языков.

Предыстория фермента

В настоящее время фреймворки машинного обучения, такие как PyTorch и TensorFlow, стали важными инструментами для разработки людьми. При вычислении градиентов для таких алгоритмов, как обратное распространение ошибки, байесовский вывод, квантование неопределенности и вероятностное программирование, нам нужно записать весь код в структуру как дифференциалы. Это создает проблему для внедрения машинного обучения в новые области: в физических симуляциях, игровых движках, климатических моделях исходные компоненты предметной области не написаны на предметно-ориентированном языке (DSL) среды машинного обучения. Таким образом, переписывание требований становится проблемой при внедрении машинного обучения в научные вычисления.

Чтобы решить эту проблему, современные тенденции включают создание новых DSL, упрощающих процесс перезаписи, или построение непосредственно во время программирования. Эти методы позволяют нам получать эффективные градиенты, но все еще требуют перезаписи на DSL или дифференцируемом языке программирования. Для удобства разработчиков исследователи из Массачусетского технологического института открыли исходный код Enzyme.

MegFlow

MegFlowЭто платформа потоковых вычислений с открытым исходным кодом для приложений компьютерного зрения, открытая Мегви Тяньюань в сентябре 2021 года. Она предоставляет набор сервисных решений для визуального анализа, которые могут быстро завершить развертывание приложений ИИ. Основываясь на услугах анализа изображений и видео, предоставляемых MegFlow, разработчики приложений ИИ могут всего за 15 минут выполнять настраиваемые функции, такие как сканирование счетов, обнаружение открытого пламени и т. д.

Обычный процесс доставки алгоритма ИИ обычно делится на четыре этапа: обучение модели, упаковка SDK, бизнес-интеграция и приемка доставки, которые являются длительными и сложными. MegFlow обобщает многолетний опыт Megvii в разработке приложений ИИ, четко и последовательно абстрагирует такие понятия, как ресурсы, сообщения и задачи, и упрощает длительный процесс доставки алгоритма в три этапа: обучение модели, бизнес-интеграция и приемка доставки. С помощью MegFlow исследователи алгоритмов ИИ могут быстро развернуть ансамбль обученных моделей в простой в использовании сервис ИИ и завершить доставку.

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

В течение четырех месяцев, когда исходный код MegFlow был открытым, было добавлено несколько функций и добавлен вариант использования:кошка кот забор, похожие видео:Ленивый на новый уровень! Программист на самом деле построил машину для кормления кошек с искусственным интеллектом!, результаты эксперимента неплохие. И разработчики также могут подать заявку на бесплатную вычислительную мощность от Megvii Tianyuan.

qdrant: поисковая система нейронной сети

qdrant— поисковая система по сходству векторов. Он предоставляет готовый к работе сервис с удобным API для хранения, поиска и управления точками (векторами с дополнительными полезными нагрузками). Qdrant предназначен для расширенной поддержки фильтрации. Это делает его полезным для различных нейронных сетей или семантического сопоставления, многогранного поиска и других приложений. На основе реализации Rust также гарантируется производительность. Встроенные кодировщики нейронных сетей могут превратиться в полноценные приложения для сопоставления, поиска, рекомендаций и многого другого.

разное

Есть также некоторые фреймворки машинного обучения, которые все еще активно поддерживаются в июне 2021 года:

  • tch-rs— это привязка Rust для Pytorch Cpp API, которая в настоящее время находится на активном обслуживании.
  • ndarrayЭто проект с открытым исходным кодом, разработанный Блуссом, старшим экспертом по научным вычислениям в официальной команде Rust, который реализует матричные и линейные операции на основе ржавчины. Цель состоит в том, чтобы создать научное компьютерное сообщество на Rust, подобное numpy и openblas. Это основа многих типов научных вычислительных библиотек, таких как машинное зрение, интеллектуальный анализ данных и биологическая информация.Основными пользователями в сообществе являются университеты или исследовательские институты с соответствующими технологиями. Huawei также активно участвует в разработке библиотеки.
  • nalgebra, универсальная библиотека линейной алгебры для Rust, наряду с Rapier,Организация с открытым исходным кодом Dimforgeразвивающийся.
  • tvm-rsЭто Rust-связывание TVM — метода автоматической генерации кода с глубоким обучением, предложенного Ченом Тяньци, аспирантом Вашингтонского университета, в августе прошлого года.У Heart of the Machine было краткое введение в него.
  • NeuronikaЭто фреймворк машинного обучения, написанный на Rust, похожий на PyTorch, в котором реализованы наиболее распространенные компоненты слоя (плотный слой, слой отсева и т. д.), а скорость сравнима с PyTorch.
  • Whatlang, проект распознавания естественного языка на основе Rust.

GUI

Проекты с графическим интерфейсом, которые стоит посмотреть в 2021 году: SixtyFPS

SixtyFPS — это набор инструментов для эффективной разработки гладких графических интерфейсов для любого дисплея: встроенных устройств, настольных приложений, мобильных устройств и Интернета (в настоящее время компилируется в wasm, но только в качестве демонстрации, SixtyFPS не собирается делать Интернет основной платформой для конкурентов). Он поддерживает несколько языков программирования, в настоящее время Rust, C++ или JavaScript. Основная библиотека реализована на Rust, а поддержка других языков осуществляется через C-ABI.

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

Оба основателя SixtyFPS имеют большой опыт разработки Qt. Один из них был главным разработчиком и сопровождающим движка QtQml в компании Qt.

Глядя на их сводный отчет за 2021 год, я обнаружил, что они зарегистрировали компанию в 2021 году, установили отношения сотрудничества с консалтинговой компанией, такой как tQCS, нашли своего первого клиента и наняли новых членов. (Я чувствую, что иностранное предпринимательство с потоком технологий все еще немного отличается от отечественного). tQCS предоставляет консалтинговые услуги №1 в мире Qt и услуги по дизайну UI / UX, выберите сотрудничество с SixtyFPS, что это значит? Это вопрос мнения.

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

Tauri

TauriРассматриваемые как замена Electron, они оба представляют собой фреймворки для создания настольных приложений с использованием веб-технологий для разработки пользовательских интерфейсов приложений. Хотя на первый взгляд они кажутся одинаковыми, на самом деле они совершенно разные.

Вот сравнение:

Размер пакета: tauri примерно в 19 раз меньше электрона.

Framework OS Bundle size (installer) Main executable size
Electron 15.3.0 Windows 11 x64 83 MB 137 MB
Tauri 1.0.0-beta.10 Windows 11 x64 7MB 4MB
Electron 15.3.0 Linux x64 114 MB (deb) 134 MB
Tauri 1.0.0-beta.10 Linux x64 6.5 MB (deb) 16 MB

потребление памяти: электрон в 9 раз выше, чем тельца.

Framework OS Number of processes Total RAM used
Electron 15.3.0 Windows 11 4 138 MB
Tauri 1.0.0-beta.10 Windows 11 8 110 MB
Electron 15.3.0 Linux x64 18 224 MB
Tauri 1.0.0-beta.10 Linux x64 1 23 MB

представление: таури лучше

Framework OS First launch after build Second launch
Electron 15.3.0 Windows 11 9940 ms 1420 ms
Tauri 1.0.0-beta.10 Windows 11 1230 ms 1120 ms
Electron 15.3.0 Linux x64 2570 ms 1910 ms
Tauri 1.0.0-beta.10 Linux x64 1560 ms 1130 ms

Но использование tauri требует больше усилий, а API tauri гораздо менее полный и детализированный, чем Node.JS, поэтому при использовании tauri некоторые API могут потребовать от вас использования Rust для их самостоятельной реализации.

Приведенное выше сравнение взято из:GitHub help.com/four-slavery/τ….

Кроме того, в 2021 году Tauri вылупила еще два ящика:

  • wry, кроссплатформенная библиотека WebView.
  • tao, кроссплатформенная библиотека для Windows.

Tauri выпустила бета-версию 1.0, которая не сильно отличается от официальной стабильной версии. Таури выбрал Rust из-за безопасности и производительности. Tauri обещает, что независимо от того, есть ли у вас встроенный локальный сервер в вашем приложении или что-то еще, Tauri обеспечит вам безопасную прибыль. В будущем также будут поддерживаться другие языки бэкенда, такие как Go, Nim, Python, Csharp и т. д., которые будут реализованы через C-API, предоставляемый текущим ядром Rust.

Egui

eguiЭто чистая реализация GUI-фреймворка на Rust, использующая немедленный режим (требуется отрисовка пользовательского интерфейса на экране в режиме реального времени). в эгуиREADMEПреимущества и недостатки этого немедленного режима описаны в статье, если вы хотите сделать выбор, вы должны это понимать. Короче говоря, немедленный режим противопоставляется сохраненному режиму. Основное преимущество немедленного режима заключается в том, что код приложения становится очень простым, недостаток в том, что он усложняет макет, а графический интерфейс не может быть слишком сложным, иначе он будет нагружать ЦП.

Пользователь RedditСказали, что используют Bevy и Egui для создания коммерческого программного обеспечения САПР.

На данный момент egui выпустила версию 0.16.

разное
  • gtk4-rs, еще одна активная библиотека с графическим интерфейсом — это привязки Rust для GTK, а привязки Rust для GTK4 будут выпущены в 2021 году.gtk4-rsВерсия 0.3.1, в настоящее время находится на активном обслуживании.
  • iced, фреймворк с графическим интерфейсом, созданный под влиянием архитектуры Elm и основанный на wgpu. Также кроссплатформенный, включая веб-интерфейс. В 2021 году велась активная разработка, но за восемь месяцев, прошедших с момента выпуска в апреле 2021 года, не было выпущено ни одной новой версии. Но это также структура, которую предпочитают другие.
  • druid, — это экспериментальный набор инструментов пользовательского интерфейса для Rust, заслуживающий внимания. Нынешнее развитие Druid во многом обусловлено егоRunebenderЭто новый редактор шрифтов (находящийся на очень ранней стадии), основанный на использовании .
  • azul, представляет собой кроссплатформенный графический интерфейс рабочего стола. Он сочетает в себе функциональные, реактивные и ориентированные на данные парадигмы программирования с API-интерфейсами, подходящими для разработки кроссплатформенных настольных приложений. Два основных принципа Azul — не отображать невидимые объекты и использовать композицию дерева DOM вместо наследования. На данный момент выпущена альфа-версия 1.0, а официальный релиз 1.0 не за горами.
  • lvgl-rs, привязка Rust для LittlevGL. Littlevgl — это графический интерфейс, написанный на чистом языке C. Он имеет множество красивых элементов управления и легко трансплантируется, его нужно только подключить к интерфейсу дисплея, а к интерфейсу сенсорного управления нужно прикоснуться.

Сеть и веб-разработка

Интернет услуги

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

Tokio

TokioЭто основа создания сетевых сервисов в текущей экосистеме Rust, а также асинхронная среда выполнения Rust и среда сетевых приложений. Хотя в экосистеме Rust есть и другие асинхронные среды выполнения, такие какasync-std, но Токио, несомненно, самый экологически зрелый.

Tokio проделал большую работу по безопасности, производительности и планированию асинхронных задач, поддерживая epoll и io_uring (tokio_uringтолько что вышла версия 0.2). Помимо этого, он также обеспечиваеттрассировка (отслеживание ссылок),консоль (асинхронная отладка, только что выпущенная версия 0.1)а такжеткацкий станок (тест параллелизма)инструмент.

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

Lunatic

lunatic, среда выполнения WebAssembly, на которую повлиял Erlang. ты можешь использовать этобыстро,крепкийа такжеМасштабируемость, но вы можете использовать его на любом языке, который компилируется в WebAssembly.

Параллелизм Lunatic основан на сверхлегких процессах, подобных зеленым потокам илиgo-routines. Скорость создания процесса Lunatic высока, использование памяти невелико, а накладные расходы на планирование невелики. Они предназначены длямассивныйПредназначен для параллелизма. Нередко в типичном приложении одновременно выполняются сотни тысяч таких процессов. Lunatic процессы полностью изолированы друг от друга, у них есть свой стек, куча и даже системные вызовы. Если процесс завершается сбоем, это не влияет на остальную часть системы. Это позволяет разработчикам создавать мощные и отказоустойчивые абстракции.

Все процессы, запущенные на Lunatic, являются вытесняющими.Асинхронное выполнение (на основе реализации smol)планирование и выполнение сервера. Это позволяет разработчикам писать простыеблокироватькода, но среда выполнения гарантирует, что поток не будет фактически заблокирован во время ожидания ввода-вывода.

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

Все это основано на Rust и WebAssembly (wasmtime и wasmtime-wasi), и на данный момент выпущена только версия 0.7.0, и она до сих пор итерируется на высокой скорости.

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

Во встраиваемых системах обычно используются прерывания, DMA и преимущества нескольких ядер для обработки параллельных событий без блокировки основного цикла. Традиционно они обрабатываются преднамеренной записью в регистр. Например, отправив команду на периферийное устройство, чтобы запустить задачу, продолжить выполнение программы, а когда задача будет завершена, вызвать прерывание и немедленно запустить код, обрабатывающий завершение. Эти процессы можно абстрагировать в Rust, используя функциональность Async/Await, основанную на будущем.

embassy— это проект, целью которого является сделать async/await первым выбором для разработки встраиваемых систем. Асинхронность приводит к повышению производительности и снижению энергопотребления, поскольку исполнителю не нужно угадывать, когда будущее будет готово к выполнению. Однако размер программы может быть больше, чем у других альтернатив, что может быть проблемой на некоторых устройствах с ограниченным пространством и очень небольшим объемом памяти. На поддерживаемых посольством устройствах, таких как stm32 и nrf, памяти обычно достаточно для небольшого увеличения размера программы.

Embassy — это исполнитель и аппаратный уровень доступа (HAL). Исполнитель — это планировщик, который обычно выполняет фиксированное количество задач, выделенных при запуске, но позже можно добавить больше. HAL — это API, который можно использовать для доступа к периферийным устройствам, таким как USART, UART, I2C, SPI, CAN и USB. Embassy предоставляет реализации асинхронных и блокирующих API там, где это целесообразно. DMA (прямой доступ к памяти) — хороший пример асинхронности, а состояния GPIO лучше подходят для блокировки API.

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

В настоящее время Embassy предоставляет HAL для нескольких семейств микроконтроллеров:

  • embassy-nrfМикроконтроллеры nRF для Nordic Semiconductor
  • embassy-stm32Микроконтроллеры STM32 для ST Microelectronics
  • embassy-rpДля микроконтроллера Raspberry Pi RP2040

Поддержка асинхронных трейтов в Embassy будет официально поддерживаться в будущем.MVP для асинхронной черты RustСлучай реализации:

pub trait I2c<A: AddressMode = SevenBitAddress> {
    /// Error type
    type Error;
		// 基于 GAT (nightly Rust)
    type ReadFuture<'a>: Future<Output = Result<(), Self::Error>> + 'a
    where
        Self: 'a;
		
    fn read<'a>(&'a mut self, addr: A, bs: &'a mut [u8]) -> Self::ReadFuture<'a>;
}

impl<A: AddressMode = SevenBitAddress> I2c<A> for u8{
      fn read<'a>(&'a mut self, addr: u8, bs: &'a mut [u8]) -> Self::ReadFuture<'a> {
          // 使用 async move
        	async move {
              // implementation
          }
      }
}

Когда GAT станет стабильным (ожидается в первом квартале 2022 года), асинхронная экосистема Rust Embedded будет немедленно обогащена.

стабильная поддержка eBPF

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

eBPF также постепенно играет важную роль в области наблюдения (отслеживание, настройка производительности и т. д.), безопасности и работы в сети. Facebook, NetFlix, CloudFlare и другие известные интернет-компании широко используют различные программы, основанные на технологии eBPF, для анализа производительности, устранения неполадок, балансировки нагрузки и предотвращения DDoS-атак.По имеющейся информации, ряд инструментов, связанных с eBPF, встроен в машины Facebook. .

Производительность технологии eBPF в сетевых технологиях еще более впечатляющая: сочетание технологии BPF с XDP (eXpress Data Path) и TC (управление трафиком) может реализовать более мощные сетевые функции.

redbpfЭто набор библиотек инструментов, реализованных Rust для создания и запуска модулей BPF/eBPF.Он содержит множество компонентов, упрощающих использование функций eBPF. Текущее обновление версии тоже идет очень активно, а версия 2.3.0 вышла всего неделю назад. Infinyon использовать егомаршрутный трафик.

Другие активно поддерживаемые библиотеки и фреймворки
  • Представлено в предыдущей статьеmonoio, — это асинхронная среда выполнения, основанная на модели ввода-вывода «поток на ядро» с открытым исходным кодом ByteDance.Проектирование и реализация асинхронной среды выполнения Rust.
  • Glommio, это еще одна асинхронная среда выполнения, основанная на модели io-uring Thread-per-core с открытым исходным кодом DataDog.В настоящее время автор начал свой собственный бизнес.
  • h3, реализация протокола http3 на Rust.
  • quinn, асинхронная реализация QUIC.
  • tonic, представляет собой асинхронную реализацию клиента и сервера gRPC.
  • quilkin, описанный ранее, представляет собой Google Cloud иОтправляйтесь в студиюСовместно разработанный прокси-сервер UDP, предназначенный для высокопроизводительных многопользовательских игр в реальном времени.
  • RedisJSON, RedisJSON — это высокопроизводительное хранилище документов JSON, позволяющее разработчикам создавать современные приложения. Он хранит и обрабатывает JSON в памяти, поддерживая время отклика в миллионы операций в секунду за миллисекунды. Встроенное индексирование, запросы и полнотекстовый поиск документов JSON позволяют разработчикам создавать вторичные индексы для быстрого запроса данных.
  • rust-rdkafka, полностью асинхронная реализация клиента Kafka.
  • smoltcp, автономный, управляемый событиями стек TCP/IP, разработанный для систем реального времени без операционной системы.
  • rust-libp2p, сетевой стек libp2p.
Eclipse zenoh

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

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

zenoh, который обеспечивает публикацию/подписку, хранение/запрос и вычисления с нулевыми издержками. Интегрируйте данные в движении, используемые данные и данные в состоянии покоя с вычислениями. Он умело сочетает традиционную публикацию/подписку с географически рассредоточенными хранилищами, запросами и вычислениями, сохраняя при этом эффективное использование времени и пространства, намного превосходящее любой основной стек.

zenohОн разработан для удовлетворения потребностей приложений, которые должны обрабатывать данные в движении, данные в состоянии покоя и вычисления масштабируемым, эффективным и прозрачным для данных способом.

В настоящее время Zenon выпустила версию под кодовым названием Aithusa, которая обеспечивает DDS Pluginа такжеROS2интеграция для IoT, робототехники и автономного вождения.

Веб-сервер

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

Стихотворение: Приведение Rust в Интернет

Poem — это асинхронный веб-фреймворк на Rust, разработанный китайцами, наиболее интересными функциями которого являются:

  • Многофункциональный и всеобъемлющий.
  • Он очень прост в использовании, и документация великолепна. Проверьте некоторые здесьПример
  • Готовая генерация спецификаций OpenAPIслужба поддержки. Это очень важный вопрос, потому что ни один из популярных веб-фреймворков в Rust изначально не поддерживает генерацию спецификаций OpenAPI.Поддержка OpenAPI делает Rust частью веб-экосистемы.
  • Поддержка функциональности промежуточного программного обеспечения (аналогично Express.js).пример здесь
  • из коробкиЗемлепользование с AWS Lambda.
  • совместимыйTower Serviceа такжеLayer, Это позволяет вам делать вот такие интересные вещипример.

Известно, что проекты с открытым исходным кодом используют Poem:

  • delicate, платформа распределенного планирования задач.
  • databend, облачный сервис данных, реализованный на Rust.

Проект с закрытым исходным кодом, использующий стихотворение

  • muse, внутреннюю платформу обмена художественными ресурсами NetEase Leihuo, на фоне Rust.

  • Проект Hikvision Hik-ProConnect, интерфейсная платформа автоматизированного развертывания, основанная на непрерывной интеграции aws.

SeaORM

SeaORMЭто асинхронный динамический ORM, который будет версией Active Record для Rust, основанной наsqlxа такжеSeaQueryПостроить.

SeaQuery— это построитель запросов, основа SeaORM, используемый для создания динамических SQL-запросов в Rust с использованием эргономичного API для построения выражений, запросов и шаблонов в абстрактных синтаксических деревьях (AST). За одним и тем же интерфейсом стоит унифицированная поддержка MySQL, Postgres и SQLite. Он похож на фреймворк ActiveRecord ORM Rails.Arelкомпоненты.

SeaORM в настоящее время находится в стадии быстрой разработки и выпустила версию 0.5. Опыт разработки SeaORM выглядит хорошо, и вы можете обратиться к введению SeaORM за подробностями.Rust Ecological Observation| SeaORM: сделать Rust-версию ActiveRecordЭта статья.

Другие интересные фреймворки
  • axum, новая официальная веб-инфраструктура tokio. Она не содержит макросов и основана на абстракции промежуточного программного обеспечения Tower, полностью используя экосистему Tower. Недостатком является то, что дженерики используются слишком часто.
  • perseus, Например, добавлена ​​система плагинов для поддержки i18n, которая основана на fluent. Раньше для перевода официального сайта ржавчины использовался Fluent, это очень удобно.

большая передняя часть

Интерфейсная инфраструктура
Deno

Deno— это современная и безопасная среда выполнения TypeScript и JavaScript, основанная на реализациях V8 и Rust.Promises,async/await,ES模块а также异步迭代器Все они первоклассные граждане Дено.

Чтобы гарантировать, что будущие разработки в JavaScript будут продолжать работать с Deno и средой выполнения JavaScript на стороне сервера, компания Deno взяла на себя ответственность за стандарты JavaScript (ECMA-262) Международной организации по стандартизации ECMA и участвует вTC39В работе рабочей группы,Luca Casonato(Лука Касонато) будет главным представителем Deno на TC39.

Дено также работает сgfx-rs сотрудничество, который поддерживает wgpu для предоставления готовых возможностей машинного обучения с ускорением на GPU. Благодаря модульной архитектуре Deno реализация WebGPU является одним из подключаемых компонентов.

В настоящее время Deno находится в стадии быстрой разработки, и на данный момент выпущена версия 1.17.3. Тринадцать компаний в настоящее время используют Deno в своем технологическом стеке, включая Cloudless, Appwrite и The Lonero Foundation.

parcel && swc

parcel, — это инструмент для упаковки веб-приложений, реализованный на Rust, подходящий для разработчиков с разным опытом. Он использует многоядерную обработку для обеспечения невероятной скорости и не требует настройки. Он основан на реализации swc. Недавно посылка также открыла новый инструмент для синтаксического анализа, преобразования и сжатия CSS.parcel-css.

swc, сокращение от Speedy Web Compiler, представляет собой сверхбыстрый компилятор TypeScript/JavaScript, написанный на Rust. Обновления версий очень активны, версия 1.2.179 выпущена всего три дня назад.

статус проекта:parcel / swc(Ржавчина) противesbuild (Go)

  1. Next.js наняла автора swc и участника ядра пакета, esbuild — это собственный побочный проект автора;
  2. В настоящее время в swc работает как минимум четыре штатных разработчика.
  3. Активность swc с открытым исходным кодом выше, чем у esbuild: общее количество PR swc достигло более 1600, а у esbuild — только более 200.
  4. Количество проблем swc такое же, как и у esbuild, но проблемы swc четко классифицированы и управляются более четко и подробно, и все они связаны с этапами выпуска версии.
  5. Частота проблем с swc и esbuild очень высока, а ответы относительно своевременны.
  6. Общее количество PR проекта посылки превышает 2000, а выпусков превышает 4000. Он очень активен.
Доуин

В настоящее время бизнес-сторона апплета Douyin также набирает разработчиков Rust, чтобы рассмотреть возможность использования Rust/C++ для практики в некоторой внешней инфраструктуре (например, компиляторах).

Внешний фреймворк WebAssembly
Yew

Yewэто продвинутый дизайнRustрамки, цель состоит в том, чтобы использоватьWebAssemblyдля создания многопоточных интерфейсных веб-приложений. Он основан на компонентах, вдохновленных React и Elm, отличается высокой производительностью и поддерживает взаимодействие с JavaScript. В настоящее время все еще находится в активной разработке.

Sycamore

sycamoreЭто реактивная интерфейсная библиотека без виртуального дома, также основанная на Rust и WebAssembly. Его особенность в том, что JavaScript не поддерживается, потому что он не требуется.

другие рамки
  • percy, экспериментальный интерфейсный фреймворк Rust + wasm.
  • seed, интерфейсная среда Rust, основанная на архитектуре Elm.
  • sauron, универсальная веб-инфраструктура и библиотека для создания клиентских и/или серверных веб-приложений с упором на простоту. Он подходит для разработки веб-приложений, использующих прогрессивный рендеринг.
  • MoonZoon, разрабатываемый фреймворк Rust с полным стеком. Утверждается, что в нем нет JS/CSS/HTML и т. д., и процесс разработки идет медленно.

Другие области

Аудио и видео
обработка звука
  • creek, дисковый потоковый ввод-вывод в реальном времени для аудио.
  • Symphonia, чистая библиотека демультиплексирования мультимедийного формата Rust, чтения тегов и декодирования звука.
  • cpal, кроссплатформенная библиотека аудио ввода-вывода на чистом Rust.
  • dasp, для цифровой обработки аудиосигнала.
  • Meadowlark, которая стремится стать бесплатной DAW (цифровой звуковой рабочей станцией) с открытым исходным кодом для Linux, Mac и Windows.
обработка видео
  • rsmpeg, безопасная библиотека привязки FFmpeg Rust с открытым исходным кодом ByteDance.
  • gstreamer, библиотека привязок Rust для GStreamer. GStreamer — это конвейерная мультимедийная среда, основанная на GObject, написанная на языке C. На основе конструкции конвейера можно создать множество мультимедийных приложений, таких как видеоредакторы, программы потокового вещания и медиаплееры.
  • rav1e, самый быстрый и безопасный кодировщик AV1.
Аудио и видео услуги мультимедиа
  • xiu, простой и безопасный медиа-сервер на чистом ржавчине (rtmp/httpflv/hls/relay).
  • Signal-Calling-Service, SFU (Selective Forwarding Units) на основе WebRTC, который реализует управление перегрузкой googcc и transport-cc в виде потоковой обработки. Это открытый исходный код Signal (кросс-платформенная служба обмена зашифрованными сообщениями).
  • webrtc-rs, чистая реализация стека WebRTC на Rust, переписанная на RustPionстек технологий. Развитие библиотеки в 2021 году также идет очень активно.Карта маршрутаБольшинство функций в .
Ржавчина и блокчейн
Rust и смарт-контракты

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

  1. Основанный на смарт-контрактах WebAssembly, Rust может быть скомпилирован в WASM, напримерElrond,Holochain,NEAR,Secret Network,Substrate. У них в основном есть Rust SDK.
  2. Инструменты для поддержки компиляции Rust в другие виртуальные машины, такие какNervos(RISC-V) иSolana(eBPF).
    1. Контракты Nervos создаются с использованием Rust и ихCapsuleнаписано библиотекой. Помимо того, что Nervos является единственным блокчейном, на котором работает RISC-V, это редкий блокчейн со смарт-контрактами, который использует модель UTXO вместо модели учетной записи.
    2. Солана запускает особенно причудливую виртуальную машину: основанную наeBPFПользовательское пространство виртуальной машиныrbpf. Солана собрал рабочий набор инструментов Rust->eBPF, который включает в себяКомпилятор Fork of Rust, поддерживающий eBPF. Конечно, поскольку eBPF не поддерживает циклы, Rust здесь должен быть интересен.
  3. Кто-то, кто реализует язык смарт-контрактов в Rust, например.Solang(компилятор Solidity для WASM),Leo(язык с нулевым знанием) иMove(язык Дьема). Хотя многие сети переходят на виртуальные машины общего назначения, особенно WASM, есть две основные причины не делать этого: желание быть совместимым с Ethereum EVM и основанные на доказательствах с нулевым разглашением. Move — относительно редкий случай, так как это и собственный язык, и собственная виртуальная машина, но нет очевидной причины иметь собственную виртуальную машину, такую ​​как язык с нулевым знанием.
Некоторые примечательные проекты
  • solang, — это компилятор Solidity, реализованный на Rust, но он не предназначен для Ethereum EVM. Вместо этого он использует LLVM в качестве серверной части, что означает, что он потенциально может быть нацелен на большинствоНе делайтеБлокчейн, на котором работает EVM. В настоящее время включает Substrate, Solana,ewasmа такжеSawtooth.
  • rust-umbral, этоперешифрование проксисхема, по которой Алиса, владелец зашифрованного текста, может назначить третью сторону (посредника) для повторного шифрования зашифрованного текста, который должен быть декодирован Бобом, не раскрывая открытый текст доверенному лицу. это изNuCypherразработан проект.
  • noir, — это язык и компилятор для построения доказательств с нулевым разглашением. Он предназначен для использования с несколькими бэкендами, генерирующими доказательства, первый из которых предназначен дляbarretenberg, так какAztec NetworkИспользуемый.
  • MASQ, представляет собой ячеистую оверлейную сеть, чем-то похожую на TOR, но с криптоэкономическими стимулами для участия.
  • TDN, доверенная распределенная сеть — это структура для создания распределенных приложений, поддерживающая одноранговую связь, несколько взаимодействующих между собой блокчейнов, многоуровневые блокчейны и модели с несколькими учетными записями. Он построен на основе новой p2p-библиотеки Chamomile.
  • bip32,это БИП32Pure Rust, универсальные, иерархические детерминированные кошельки и мнемоника BIP39no_stdДружелюбная реализация.
  • jsonrpsee, из ПаритетаJSON-RPCасинхронная реализация , которая также создаетjsonrpcящик.
  • stateright, это средство проверки моделей для реализации распределенных систем на Rust. В отличие от традиционных средств проверки моделей, таких как TLA+, Stateright представляет собой Rust DSL, способный проверять производственную реализацию системы на Rust. Он включает в себя примеры Paxos и других простых алгоритмов.
  • arti, используя Rust дляTorОфициальная переработка ,Впервые анонсировано в июле. Tor — ключевая часть распределенной инфраструктуры, с помощью которой мы можем встраивать Tor в наши приложения.
  • openmls,ДаПротокол безопасности уровня обмена сообщениямиРеализация Rust — текущего стандарта, разрабатываемого рабочей группой IETF MLS. Протокол направлен на решение проблемы, которая до сих пор распространена в безопасном обмене сообщениями: несмотря на то, что надежное сквозное шифрование двусторонних разговоров теперь возможно, существует несколько хороших решений для сквозного зашифрованного группового общения. MLS определяет «протокол установления ключа, который обеспечивает эффективное асинхронное создание группового ключа для групп размером от 2 до тысяч с прямой секретностью и безопасностью после взлома».
  • mina-rsChainSafeРазработана реализация Mina на Rust. Он был разработан не только с учетом мобильной среды, но и с WASM, предполагая, что мы сможем встроить полный узел прямо в браузер.Mina— это новая сеть блокчейнов, которая использует доказательства с нулевым разглашением для проверки состояния цепочки, не имея доступа к полному блокчейну, а только небольшое (~ 22k) доказательство.
  • arloader, это файл, используемый для загрузки файлов вArweaveклиент командной строки. Файлы, опубликованные в Arweave, хранятся постоянно. Эта платформа часто используется для хранения информации NFT. Сборы могут быть оплачены нативными токенами Arweave или SOL.
Экологическая информация о блокчейне

В 2021 году основные публичные сети блокчейна будут появляться чаще, чем Near/Solana/Dfinity/NeverOS, и в течение года будут проводиться программы поощрения разработчиков и хакатоны.

Более активными концепциями в 2021 году являются кроссчейн, DeFI, NFT и Web3.

Но блокчейн — это большая экосистема, если вы хотите провести инвентаризацию, вы можете написать длинную статью отдельно. Но к счастьюРжавчина в блокчейне ❤ rib.rsТакие сайты фиксируют для нас ежемесячную динамику экосистемы блокчейна. Если вам интересно, можете поискать.

метавселенная

Можно сказать, что Metaverse — самая безумная концепция в 2021 году, но ее технологический стек очень связан с графикой, искусственным интеллектом, блокчейном, VR/AR, IoT и другими областями. Готов ли Rust к этому? Среди них области графики, искусственного интеллекта, блокчейна, аудио и видео и IoT были проверены ранее, и конкретный статус ясен.

В сфере VR/AR также есть люди, занимающиеся экологией Rust, но они не очень богаты:

openxrs, какой правильныйOpenXRКрепления ржавчины для . OpenXR — это API (интерфейс прикладного программирования) для приложений XR.Это стандарт с открытым исходным кодом, который позволяет разработчикам создавать и развертывать приложения на устройствах с помощью OpenXR.

XR относится к континууму реальных и виртуальных комбинированных сред, создаваемых компьютерами посредством взаимодействия человека с компьютером, включая технологии, связанные с виртуальной реальностью (VR), дополненной реальностью (AR) и смешанной реальностью (MR). OpenXR — это интерфейс между приложением и внутрипроцессной или внепроцессной «системой выполнения XR», или для краткости «средой выполнения». Среда выполнения обрабатывает такие функции, как компоновка кадров, управление периферийными устройствами и необработанная информация об отслеживании.

Поддержка Rust для VR/AR может начаться с OpenXR.

makepad, представляет собой среду пользовательского интерфейса для виртуальной реальности, веб-сайтов и нативного рендеринга, а также интегрированную среду разработки, основанную на технологиях Rust и WebAssembly (WebGL). Автор является основателем Cloud9 IDE. Также проект содержитбелая бумага, формулируя свое видение. Текущий прогресс в разработке не очень частый.

Сфера информационной безопасности
  • rustscan, представляет собой современный высокопроизводительный сканер портов и предоставляет механизм сценариев для поддержки запуска Python, Lua, Shell. Поддерживается адаптивное обучение. Чем больше вы его используете, тем умнее становится RustScan, основанный не на раздутом машинном обучении, а в основном на базовой математике.
  • feroxbuster, высокопроизводительный инструмент обнаружения контента для тестирования на проникновение. feroxbuster использует грубую силу в сочетании со списками слов для поиска в целевом каталоге несвязанного содержимого, что является атакой. Эти ресурсы могут хранить конфиденциальную информацию о веб-приложениях и операционных системах, такую ​​как исходный код, учетные данные, внутреннюю сетевую адресацию и т. д. Эта атака также известна как предсказуемое расположение ресурсов, перечисление файлов, перечисление каталогов и перечисление ресурсов.
  • Enarx, которая является организацией, возглавляемой Red Hat и другими известными предприятиями, для создания системы развертывания приложений в доверенной среде выполнения.
  • sn0int, полуавтоматическая платформа Advanced Open Source Intelligence (OSINT) и менеджер пакетов для сканирования целевых IP-адресов, электронных писем, веб-сайтов и организационной информации и сбора различной разведывательной информации из разных источников.
  • sniffglue, многопоточный сетевой анализатор. Kpcyrd часто использует tcpdump, но он считает, что было бы лучше, если бы вывод был более дружелюбным, а wireshark часто глючит, а tcpdump иногда глючит, поэтому он реализовал этот инструмент на Rust.
  • ripasso, инструмент управления паролями.
  • rustpad, многопоточный преемник классического падбастера, написанный на Rust. Он использует уязвимость Padding Oracle для расшифровки любого зашифрованного текста или шифрования любого открытого текста, не зная ключа шифрования!
  • vaultwarden, неофициальный сервер, совместимый с Bitwarden (управление паролями), ранее известный как bitwarden_rs.
  • innernet, частная сетевая система, в которой за кулисами используется WireGuard (технология VPN следующего поколения).
  • moonwalk, который скрывает следы во время эксплуатации Linux, оставляя нулевые следы в системных журналах и временных метках файловой системы. только для помощикрасная командаоперация.
  • CaptfEncoder, CaptfEncoder — это кроссплатформенный набор инструментов сетевой безопасности, который обеспечивает преобразование кода, связанное с сетевой безопасностью, классический шифр, криптографию, шифрование с открытым ключом, совокупный запрос, прочие и другие практические инструменты. CaptfEncoder V3 разработан на Rust, исполняемая программа меньше по размеру, быстрее, лучше по производительности и мощнее. Его автор визуально находится в Alibaba Cloud.
научно-исследовательское искусство
  • nannou, предназначенный для того, чтобы художники могли создавать свои собственные произведения искусства. в ГерманииmindbufferКомпания основана на Нанноу и Кото для создания проектов физического искусства: с использованием 486 шаговых двигателей, 86 000 светодиодов и 5-канального механизма гранулярного композитинга.Создавайте красочные цифровые произведения искусства, которые могут трансформироваться в фигуры.
  • Glicol, ориентированный на графы язык программирования в реальном времени для музыки. Glicol может помочь вам создавать музыку с помощью кода. Вы можете просто соединять различные узлы для формирования циклов, написанных на Rust, и благодаря WebAssembly он работает в браузере без каких-либо проблем.
  • 3photons-rust, ученый-физик настаивал на использовании Rust для имитации трех фотонов, создающих экзотическую форму «молекулярного» света.
  • varlociraptor, который реализует новый и унифицированный подход с полным учетом неопределенности для вызова геномной изменчивости в произвольных сценариях. Библиотека«Почему ученые обращаются к ржавчине»Библиотека обработки биологической информации, упомянутая в статье. В настоящее время находится на активном обслуживании.
  • eigenvalues, библиотека решений для собственных значений, реализованная исследователями из Центра электронных технологий Нидерландов. Подробнее см. в этой статье.Использование Rust для научных численных приложений: изучение прошлого опыта.

Карьера в ржавчине

Классификация профессиональных должностей

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

В основном, в соответствии с текущим глобальным набором вакансий Rust, его можно разделить на следующие категории:

  1. Блокчейн / Количественные финансы / Банковское дело
  2. Инфраструктура (разработка облачной платформы): база данных/хранилище/служба данных/операционная система/контейнер/распределенная система
  3. Инструменты платформы: удаленный рабочий стол / продукты для удаленного обслуживания / SaaS / продукты для удаленной работы (например, Nextink)
  4. ИИ / Машинное обучение / Робототехника
  5. Разработка кроссплатформенных компонентов на стороне клиента
  6. Инженер по безопасности: Блокчейн-безопасность / Информационная безопасность
  7. Встроенный инженер
  8. Поставщики рекламных услуг, такие какAdinmo
  9. Инженер по аудио- и видеосвязи в реальном времени
  10. Электронная бизнес-платформа
  11. Консультации по программному обеспечению

Конкретные объявления о вакансиях в Rust можно найти на Rust Weekly/Reddit.r/rustChannels/Rust Magazine Community Monthly/Rustcc Forums, а также на крупных карьерных сайтах.

Часть информации о домашней работе Rust [все доступно]

  1. Байт бить. Внутренняя инфраструктура ByteDance, Feishu и Douyin используют Rust. Здесь много требований к работе на Rust.
  2. Невыпуклая технология. Отечественное количественное предприятие, работающее на рынке фьючерсов/фондов.
  3. Карта морских звезд. Использование Rust для отображения данных является дочерней компанией Haizhi Group. Удаленный.
  4. Датан Технология. Использование Rust для распределенного хранилища, стартап, возглавляемый серийным предпринимателем доктором Ван Пу. Удаленный.
  5. изгиб данных. Стартап, использующий Rust в качестве облака данных. Удаленный.

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

Инвентаризация полностью удаленных рабочих мест Rust по всему миру

Обратите внимание, что некоторые должности, которые утверждают, что они полностью удалены, на самом деле рассматривают только жителей США/Канады, а иногда и жителей ЕС. Сможете ли вы найти эти должности в Китае, может зависеть от вашей удачи и уровня общения!

  • RedHat, есть вакансии на Rust, доступные удаленно. Вы можете приватные сообщения пользователям на Reddit@sheepdog69Узнать больше .
  • tangram, компания, разрабатывающая инструменты, похожие на машинное обучение, может отправлять запросы на удаленную работу по электронной почте, но эта вакансия касается только людей в США, Канаде и Европе.
  • Materialize, в базе данных потоковой передачи в реальном времени (описанной ранее) есть удаленные позиции, которые необходимо отправить по электронной почте для консультации.
  • toyotaconnected, которая в настоящее время разрешает удаленную телепортацию только в пределах 12 штатов США, и они также являются членами Rust Foundation. Они используют Rust для машинного обучения и устройств. Много взаимодействий в коде поставщиков C и CPP, а также множество крутых и интересных проблем, которые мы решаем в автомобилях Toyota и Lexus по мере того, как 5G становится все более распространенным.
  • Era Software, удаленный (США/Канада/Европа), конкурирует с Elasticsearch. Все работы по разработке баз данных предназначены для Rust.
  • Qovery, Remote (EU), Qovery — это платформа, которая дает любому разработчику сверхвозможности развернуть свое приложение в облаке за считанные секунды.
  • estuary, удаленные разработчики Rust для разработки нашей платформы данных в реальном времениFlow, вам необходимо отправить электронное письмо для консультации.
  • infinyon, Remote (США), для создания надежной и масштабируемой инфраструктуры для потоковой передачи данных в реальном времени, ориентированной на Fluvio и InfiniyOn Cloud.
  • Ockam, Ockam создает открытый исходный код, сквозное шифрование и взаимную аутентификацию протоколов связи и библиотек, которые работают на ограниченных ресурсах, периодически подключаемых IoT-устройствах и подключенных машинах.
  • 1password,Удаленно(Канада, США и Великобритания), программное обеспечение для управления паролями.
  • IOHK, удаленный, блокчейн, для получения подробной информации, пожалуйста, нажмите на ссылку, чтобы подать заявку на работу.

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

Статус популярности Rust Language Education

Изданные книги в стране и за рубежом

Расстановка книг, изданных в стране и за рубежом с 2018 по 2022 год.

одомашненный

  • «Углубленная ржавчина»
  • Путь программирования на Rust
  • Полное руководство по Rust
  • «Программирование на Rust: начальное, боевое и продвинутое»

иностранный:

Эти книги далеко не все, и есть много иностранных книг, которых нет в списке.

Видно, что количество книг по Rust за рубежом растет, и в Китае тоже есть такая тенденция.

Популяризация высшего образования

одомашненный

иностранный:

Обсуждение Reddit: Как выглядит университетский курс Rust вашей мечты?

Эту дискуссию на Reddit начал ассистент преподавателя Варшавского университета в Польше., преподает управление памятью и программирование на C (первый год) и параллельное и параллельное программирование на Java и C (второй год). Теперь школа решила предложить курс Rust для второкурсников, и ему поручили подготовить курс и провести его. Он хочет спросить совета у разработчиков Rust, как выглядит университетский курс Rust вашей мечты?

Его нынешний план преподавания примерно выглядит следующим образом:

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

Для получения дополнительной информации, пожалуйста, обратитесь к сообщению Reddit. Кто-то в комментариях дал несколько советов:

  • Студент бакалавриата завершает библиотеку обучения с подкреплением, используя Rust:GitHub.com/Z используйте Z4/rust…Rust используется в обучении машинному обучению, потому что машинное обучение легче изучать с помощью Python. (Также имеет смысл сказать, что при обучении обращайте внимание на цели обучения, а цели обучения студентов состоят в том, чтобы изучить область машинного обучения, а не Rust).
  • Друг сказал, что в колледже студентов надо учить решать задачи. Например, научиться решать проблему многопоточного параллелизма, изучив реализацию многопоточной игры в жизнь.

Что вы думаете об этом?

Эпилог

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