The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Книга о прикладных аспектах языка программирования Rust, описывающая внутреннее устройство языка и сферы его использования. Rust рассматривается как современное дополнение для С при программировании ядра ОС и при системном программировании, а также как низкоуровневый скоростной язык, обеспечивающий максимальную производительность. Объяснены тонкости работы с процессором, многопоточное программирование, работа с памятью, а также взаимодействие с Linux. Изложенный материал позволяет как писать современные приложения на Rust с нуля, так и внедрять Rust в сложившуюся базу кода.nyflip

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by BHV.RU Publishing House, 2022-11-05 10:40:16

Rust в действии

Книга о прикладных аспектах языка программирования Rust, описывающая внутреннее устройство языка и сферы его использования. Rust рассматривается как современное дополнение для С при программировании ядра ОС и при системном программировании, а также как низкоуровневый скоростной язык, обеспечивающий максимальную производительность. Объяснены тонкости работы с процессором, многопоточное программирование, работа с памятью, а также взаимодействие с Linux. Изложенный материал позволяет как писать современные приложения на Rust с нуля, так и внедрять Rust в сложившуюся базу кода.nyflip

Keywords: Rust

Введение в Rust 51

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

1.10.2. В обработке данных

Rust отлично справляется с текстом и с другими формами обработки данных. Про-
граммисты извлекают пользу из контроля над использованием памяти и из быстро-
го запуска. В середине 2017 года Rust предлагался как самый быстрый в мире обра-
ботчик регулярных выражений. В 2019 году проект по обработке данных Apache
Arrow, положенный в основу экосистем обработки и анализа данных Python и R,
принял проект DataFusion на основе Rust.

Rust также положен в основу реализации нескольких поисковых систем, машин
обработки данных и систем анализа регистрационных журналов. Его система типов
и управление памятью позволяют создавать конвейеры данных с высокой пропуск-
ной способностью при низком и стабильном объеме используемой памяти. С по-
мощью потоковой передачи данных Apache Storm, Apache Kafka или Apache
Hadoop небольшие по объему программы фильтрации могут легко встраиваться в
более крупные платформы.

1.10.3. В расширяемых приложениях

Rust хорошо приспособлен для расширения программ, написанных на динамиче-
ских языках. Он позволяет создавать расширения для JNI (Java Native Interface), для
C или для Erlang/Elixir NIF-функций (native implemented functions — нативных реа-
лизованных функций). А C-расширения, как правило, отпугивают программистов.

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

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

 Dropbox переписали на Rust механизм синхронизации файлов своего при-
ложения на стороне клиентов: «Укротить сложность синхронизации нам
помогла не столько производительность [Rust], сколько эргономика и сфо-
кусированность на корректности»21.

1.10.4. В средах с ограниченными ресурсами

Область работы с микроконтроллерами десятилетиями была оккупирована языком C.
Но пришли времена интернета вещей (Internet of Things, IoT). И это может озна-

20 См. «Fixing Python Performance with Rust», http://mng.bz/ryxX.
21 См. «Rewriting the heart of our sync engine», http://mng.bz/Vdv5.

52 Глава 1

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

1.10.5. В серверных приложениях

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

 На Rust написан реестр пакетов для сообществ JavaScript и node.js22.

 Встраиваемая база данных sled (https://github.com/spacejam/sled) может на
16-ядерной машине справляться с рабочей нагрузкой в 1 миллиард опера-
ций, среди которых 5% ― это операции записи.

 Система полнотекстового поиска Tantivy может на 4-ядерном ПК проин-
дексировать 8 Гб английской Википедии примерно за 100 секунд23.

1.10.6. В приложениях для ПК

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

1.10.7. В автономном режиме

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

22 См. «Community makes Rust an easy choice for npm: The npm Registry uses Rust for its CPU-bound bot-
tlenecks», http://mng.bz/xm9B.
23 См. «Of tantivy’s indexing», https://fulmicoton.com/posts/behold-tantivy-part2/.

Введение в Rust 53

1.10.8. В мобильных приложениях

Android, iOS и другие операционные системы для смартфонов, как правило, пре-
доставляют разработчикам весьма широкие возможности. В Android это возможно-
сти Java. В macOS разработчики обычно программируют на Swift. Но есть ведь и
другой путь.

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

1.10.9. В веб-режиме

Для вас, наверное, не секрет, что JavaScript ― главный язык для веба. Но грядут
изменения. Производители браузеров разрабатывают стандарт под названием
WebAssembly (Wasm), который обещает обеспечить поддержку компиляции под
множество языков. И Rust здесь в числе первых. Для переноса Rust-проекта в брау-
зер требуются всего лишь две дополнительные команды командной строки. Иссле-
дования по использованию Rust в браузере посредством Wasm уже ведутся не-
сколькими компаниями, в частности CloudFlare и Fastly.

1.10.10. В системном программировании

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

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

 Спонсируемая компанией Google разработка операционной системы для
устройств Fuchsia OS24.

 Активно изучаемая компанией Microsoft возможность написания на языке
Rust низкоуровневых компонентов для Windows25.

 Создаваемый в рамках Amazon Web Services (AWS) проект Bottlerocket,
специализированной операционной системы для размещения контейнеров в
облаке26.

24 См. «Welcome to Fuchsia!», https://fuchsia.dev/.
25 См. «Using Rust in Windows», http://mng.bz/A0vW.
26 См. «Bottlerocket: Linux-based operating system purpose-built to run containers»,
https://aws.amazon.com/bottlerocket/.


Click to View FlipBook Version