Jump to content

Токио (программное обеспечение)

Такой
Оригинальный автор(ы) Карл Лерш
Первоначальный выпуск 23 декабря 2020 г .; 3 года назад ( 23.12.2020 )
Стабильная версия
1.39.2 [1]  Отредактируйте это в Викиданных
Репозиторий
Написано в Ржавчина
Операционная система macOS , Windows , Linux , FreeBSD , WebAssembly
Тип Асинхронная среда выполнения
Лицензия МОЯ лицензия
Веб-сайт такой .rs

Tokio — это библиотека программного обеспечения для языка программирования Rust . Он предоставляет среду выполнения и функции, которые позволяют использовать асинхронный ввод-вывод , обеспечивая параллелизм при выполнении задач. [2] [3] [4]

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

Tokio началась в августе 2016 года Карлом Лершем как инфраструктура сетевых приложений для Rust, построенная на фьючерсах , позволяющая использовать сетевое промежуточное программное обеспечение и неблокирующую , или асинхронную, реализацию готовности реактора . Tokio был вдохновлен Finagle, (RPC) на базе Scala, системой асинхронного удаленного вызова процедур разработанной в Twitter для виртуальных машин Java (JVM), позволяющей распределенным системам взаимодействовать внутри JVM. Токио использует ящик Rust нижнего уровня. mio, который сам использует системные вызовы, такие как epoll ( Linux ), kqueue ( FreeBSD ) и API порта завершения ввода/вывода (IOCP) ( Windows ). В Linux также можно использовать io_uring через tokio-uring . [5] [6] [7] Название «Токио» происходит от слов «Токио» и «мио». [8] Предварительная версия Tokio вышла в январе 2017 года. [9] за которым последует полный выпуск в декабре 2020 года. [10] [11] В 2017 году Tokio получила грант от фонда поддержки открытого исходного кода Mozilla . [12] В апреле 2021 года Tokio профинансировала своего первого платного участника, Элис Рил, за ее работу по разработке проекта и помощи его пользователям. [13] [14]

Хотя Rust поддерживает асинхронные функции начиная с версии 1.39, выпущенной в ноябре 2019 года, [15] он не предоставляет никаких средств для их выполнения, для этой цели требуется внешняя среда выполнения. [16] Tokio предоставляет среду выполнения, использующую многопоточный планировщик перехвата работы . [10] Фьючерсы в Rust оцениваются лениво , требуя вызова функций. .await прежде чем они сделают какую-либо работу. [17] Когда .await вызывается, среда выполнения Tokio может приостановить исходное будущее до тех пор, пока не завершится ввод-вывод, и возобновить паузу другой задачи, готовой для дальнейшей обработки. [18]

В число пользователей Tokio входят команды разработчиков Discord и AWS Lambda . [10] Среда JavaScript и TypeScript выполнения Deno использует Tokio под капотом, в отличие от среды выполнения JavaScript Node.js , которая использует библиотеку libuv . [19]

Асинхронный код

[ редактировать ]

Tokio позволяет использовать асинхронные функции в Rust посредством создания асинхронной среды выполнения. Этого можно добиться посредством #[tokio::main] макрос . [18]

Например:

#[tokio::main]
async fn main() -> Result<()> {
    let url = "https://en.wikipedia.org/";
    let text = reqwest::get(url).await?.text().await?;
    println!("{}", text);
    Ok(())
}

В этом примере reqwest crate используется для запроса языка гипертекстовой разметки (HTML) для английской Википедии . Чтобы гарантировать, что запрос не будет обработан немедленно, Tokio помещает вызов функции в асинхронную среду выполнения, ожидая завершения запроса перед вызовом. println().

Tokio также включает версию стандартной библиотеки Rust, предназначенную для асинхронного использования. Например, tokio::fs::read_to_end(), который читает содержимое файла, является асинхронной версией std::fs::read_to_end(). [20] Кроме того, Tokio поддерживает io_uring , интерфейс системных вызовов асинхронного ввода-вывода Linux, в отдельном контейнере с именем tokio-uring. [10] [21]

Модель сопрограммы

[ редактировать ]

Tokio также позволяет пользователям создавать задачи, которые представляют собой сопрограммы без стека , используя tokio::spawn() функция. Задачи выполняются на уровне пользователя, обеспечивая параллелизм даже при наличии только одного потока. [22]

Прослушивание сокетов

[ редактировать ]

Tokio способна прослушивать сокеты с помощью неблокирующего подхода. [5] В частности, TcpListener Структура привязывает прослушиватель сокета TCP к адресу и асинхронно выполняет функцию. [23]

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

  1. ^ «Выпуск 1.39.2» . 27 июля 2024 г. Проверено 28 июля 2024 г.
  2. ^ Чанда, Абхишек (2018). Сетевое программирование с помощью Rust. Создавайте быстрые и отказоустойчивые сетевые серверы и клиенты, используя функции безопасности памяти и параллельного выполнения Rust . Бирмингем: Packt Publishing. ISBN  978-1-78862-171-7 . OCLC   1028194311 .
  3. ^ Шарма, Рахул (2019). Освоение Rust: узнайте о безопасности памяти, системе типов, параллелизме и новых функциях версии Rust 2018 . Веса Кайхлавирта (Второе изд.). Бирмингем, Великобритания. ISBN  978-1-78934-118-8 . OCLC   1090681119 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  4. ^ Де Симоне, Серджио (6 января 2021 г.). «Rust Asynchronous Runtime Tokio достигает версии 1.0» . ИнфоQ . Проверено 21 ноября 2021 г.
  5. ^ Jump up to: а б Лерш, Карл (3 августа 2016 г.). «Анонсируем Токио » Получено 11 . декабря
  6. ^ «Finagle: система RPC, не зависящая от протокола» . 19 августа 2011 года . Проверено 11 декабря 2022 г.
  7. ^ Гомес, Гийом; Буше, Антони (2018). Программирование на Rust на примере: войдите в мир Rust, создавая привлекательные, параллельные, реактивные и надежные приложения . Бирмингем: Packt Publishing. ISBN  9781788470308 .
  8. ^ Лерш, Карл (3 августа 2016 г.). «Мне понравилось посещать город Токио (Токио), и мне понравился суффикс «io» и то, как он сочетается с Мио. Я не знаю... придумать название сложно, поэтому я не стал тратить слишком много времени на размышления это" . Реддит . Проверено 11 декабря 2022 г.
  9. ^ Лерш, Карл; Крайтон, Алекс; Турон, Аарон. Анонсируя Токио « Получено 11 . декабря
  10. ^ Jump up to: а б с д Криль, Пол (08 января 2021 г.). «Среда выполнения Tokio Rust достигла статуса 1.0» . Инфомир . Проверено 3 сентября 2021 г.
  11. ^ Лерш, Карл. Анонсируя Токио « Получено 11 . декабря
  12. ^ «Mozilla выделяет 365 000 долларов США проектам с открытым исходным кодом в рамках MOSS» . LWN.net . Проверено 21 ноября 2021 г.
  13. ^ «Приветствуем Элис Рил как первого платного автора из Токио» . Токио . Проверено 28 ноября 2021 г.
  14. ^ Аллен Вайма (12 ноября 2021 г.). «Экосистема Токио с Элис Рил» . Rustacean Station (Подкаст) . Проверено 26 ноября 2021 г.
  15. ^ «Rust получает бесплатную поддержку Async/Await в Rust 1.39» . ИнфоQ . Проверено 28 ноября 2021 г.
  16. ^ «Асинхронная экосистема» . Асинхронное программирование на Rust . Проверено 28 ноября 2021 г.
  17. ^ Мацакис, Нико (07.11.2019). «Асинхронное ожидание в стабильной версии Rust!» . Ржавый блог . Проверено 28 ноября 2021 г.
  18. ^ Jump up to: а б «Привет, Токио» . Токио . Проверено 28 ноября 2021 г.
  19. ^ Раппл Мораса, Флориан (2022). Современная фронтенд-разработка с помощью Node.js: справочник по современной веб-разработке на JavaScript в экосистеме Node.js. Бирмингем, Великобритания. ISBN  9781804617380 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  20. ^ «Ввод/вывод» . Токио . Проверено 11 декабря 2022 г.
  21. ^ «Анонсируем tokio-uring: io-uring поддержку Токио» . Токио . Проверено 28 ноября 2021 г.
  22. ^ Синтес, Тони (13 апреля 2001 г.). «Четверо на века» . Инфомир . Проверено 5 января 2023 г.
  23. ^ Эгия Мораса, Ибан (2018). Высокая производительность Rust: научитесь резко увеличивать производительность ваших приложений Rust . Бирмингем, Великобритания. ISBN  978-1-78847-823-6 . OCLC   1033544275 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  24. ^ Блэнди, Джим; Орендофф, Джейсон; Тиндалл, Леонара (2019). Программирование на Русте . Севастополь. ISBN  9781492052548 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cc9dcf82d979ab0cb4d2b0dac5ac9fec__1717661940
URL1:https://arc.ask3.ru/arc/aa/cc/ec/cc9dcf82d979ab0cb4d2b0dac5ac9fec.html
Заголовок, (Title) документа по адресу, URL1:
Tokio (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)