토키오 (소프트웨어)
Tokio (software)![]() | |
원본 작성자 | 칼 레르슈 |
---|---|
초기출시 | 2020년 12월 23일; | 전 (
안정적 해제 | 1.29.1[1] ![]() |
저장소 | |
기재. | 녹 |
운영체제 | macOS, Windows, Linux, FreeBSD, WebAssembly |
유형 | 비동기 런타임 |
면허증. | MIT 라이선스 |
웹사이트 | tokio |
토키오는 러스트 프로그래밍 언어를 위한 소프트웨어 라이브러리입니다.런타임과 비동기 I/O를 사용할 수 있는 기능을 제공하여 작업 [2][3][4]완료와 관련하여 동시성을 허용합니다.
토키오는 2016년 8월에 범용 프로그래밍 언어인 러스트용으로 출시되었습니다.칼 레르체(Carl Lerche)가 개발한 토키오는 네트워크 응용 프레임워크로 시작되었으며 소켓 청취 및 브로드캐스트와 같은 기능을 지원하여 컴퓨터 간에 메시지를 전송할 수 있습니다.
역사
Tokio는 2016년 8월 Carl Lerche에 의해 네트워크 기반 미들웨어와 원자로에 대한 준비 상태 관심의 비차단 또는 비동기 구현을 가능하게 하는 미래 기반 러스트의 네트워크 응용 프레임워크로 시작되었습니다.Tokio는 Java 가상 머신(JVM)용 Twitter에서 개발된 Scala 기반 RPC(비동기 원격 프로시저 호출) 시스템인 Finagle에서 영감을 받아 분산 시스템이 JVM 내에서 통신할 수 있도록 했습니다.토키오는 낮은 레벨의 러스트크레이트를 사용합니다.mio
, epoll(Linux), kqueue(FreeBSD), 입출력 완료 포트(IOCP) API(Windows)[5][6][7] 등의 시스템 호출을 사용하는 자체."토키오"라는 이름은 도쿄와 [8]미오에서 유래되었습니다.2017년 [9]1월에 토키오의 예비 버전이 출시되었고,[10][11] 2020년 12월에 정식 출시되었습니다.2017년, 토키오는 모질라 오픈 소스 지원 [12]기금으로부터 보조금을 받았습니다.2021년 4월, 토키오는 프로젝트 개발 및 사용자 [13][14]지원을 위해 첫 번째 유료 기부자인 앨리스 라이를에게 자금을 지원했습니다.
러스트는 2019년 [15]11월에 출시된 버전 1.39부터 비동기 기능을 지원하고 있지만, 이를 실행할 수 있는 기능을 제공하지 않아 외부 [16]런타임이 필요합니다.Tokio는 다중 스레드 작업 도용 [10]스케줄러를 사용하는 런타임을 제공합니다.러스트의 미래는 게으르게 평가되므로 호출 기능이 필요합니다..await
그들이 어떤 일을 하기 전에.[17]언제.await
를 호출하고, Tokio의 런타임은 I/O가 완료될 때까지 원래의 미래를 일시 중지할 수 있으며, 추가 [18]처리를 위해 준비된 다른 작업을 일시 중지할 수 있습니다.
토키오의 사용자들은 디스코드와 AWS [10]람다의 개발팀을 포함하고 있습니다.자바스크립트와 [19]TypeScript 런타임 Deno는 libuv 라이브러리를 사용하는 자바스크립트 런타임 Node.js와 달리 후드 아래에 Tokio를 사용합니다.
특징들
비동기 코드
Tokio는 비동기 런타임 생성을 통해 Rust에서 비동기 함수를 사용할 수 있습니다.이것은 다음을 통해 달성할 수 있습니다.#[tokio::main]
거시적인[18]
예를 들어,
#[tokio::main] syncfn main() -> 결과<()> {let url = "https://en.wikipedia.org/ ";let text = reqwest::get(slot).slot?문자?; println!("{}", 텍스트); Ok(() }
이 예에서,reqwest
crate는 영어 위키백과를 위한 HTML(HyperText Markup Language)을 요청하는 데 사용됩니다.요청이 즉시 처리되지 않도록 하기 위해, Tokio는 호출 전에 요청이 완료되기를 기다리며 함수 호출을 비동기 런타임으로 래핑합니다.println()
.
또한 Tokio는 비동기적으로 사용할 수 있도록 설계된 Rust 표준 라이브러리 버전도 포함하고 있습니다.예를들면,tokio::fs::read_to_end()
, 파일의 내용을 읽는 것은 비동기 버전입니다.std::fs::read_to_end()
.[20]또한 Tokio는 Linux 비동기 I/O syscall 인터페이스인 io_uring을 다음과 같은 이름의 별도의 상자에서 지원합니다[20].tokio-uring
.[10][21]
컴파일 타임 그린 스레딩
또한 Tokio는 사용자가 다음을 이용하여 녹색 스레드인 작업을 생성할 수 있도록 합니다.tokio::spawn()
기능.녹색 스레드는 사용자 수준에서 실행되며 네이티브 스레드를 항상 사용할 [22]수 없는 경우 병렬 처리 기능을 제공합니다.이전 버전의 Rust는 녹색 스레드를 구현했습니다. 이 기능은 Rust 1.[23]0에서 제거되었습니다.미래와 달리 태스크는 사용할 필요가 없습니다..await
, 스레드를 사용할 [18]수 있을 때 작업이 자동으로 실행되기 때문입니다.
소켓 리스닝
토키오는 비차단 [5]방식을 통해 소켓에서 들을 수 있습니다.특히.TcpListener
structure는 TCP(Transmission Control Protocol) 소켓 리스너를 주소에 바인딩하고 비동기적으로 [24]기능을 실행합니다.
방송
Tokio는 여러 수신기에 메시지를 브로드캐스트할 수 있는 브로드캐스트 채널 유형을 제공합니다.메시지를 전송하면 해당 수신자가 메시지를 수신합니다.이를 통해 다른 [25]애플리케이션 중에서도 실시간 통신 및 분산 시스템이 가능합니다.
참고문헌
- ^ "Release 1.29.1". 29 June 2023. Retrieved 7 July 2023.
- ^ Chanda, Abhishek (2018). Network Programming with Rust: Build fast and resilient network servers and clients by leveraging Rust's memory-safety and concurrency features. Birmingham: Packt Publishing. ISBN 978-1-78862-171-7. OCLC 1028194311.
- ^ Sharma, Rahul (2019). Mastering Rust : learn about memory safety, type system, concurrency, and the new features of Rust 2018 edition. Vesa Kaihlavirta (Second ed.). Birmingham, UK. ISBN 978-1-78934-118-8. OCLC 1090681119.
{{cite book}}
: CS1 유지 관리: 위치 누락 게시자(링크) - ^ De Simone, Sergio (2021-01-06). "Rust Asynchronous Runtime Tokio Reaches 1.0". InfoQ. Retrieved 2021-11-21.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ a b Lerche, Carl (August 3, 2016). "Announcing Tokio". Retrieved December 11, 2022.
- ^ "Finagle: A Protocol-Agnostic RPC System". August 19, 2011. Retrieved December 11, 2022.
- ^ Gomez, Guillaume; Boucher, Antoni (2018). Rust Programming By Example: Enter the World of Rust by Building Engaging, Concurrent, Reactive, and Robust Applications. Birmingham: Packt Publishing. ISBN 9781788470308.
- ^ Lerche, Carl (August 3, 2016). "I enjoyed visiting Tokio (Tokyo) the city and I liked the "io" suffix and how it plays w/ Mio as well. I don't know... naming is hard so I didn't spend too much time thinking about it". Reddit. Retrieved December 11, 2022.
- ^ Lerche, Carl; Crichton, Alex; Turon, Aaron. "Announcing Tokio 0.1". Retrieved December 11, 2022.
- ^ a b c d Krill, Paul (2021-01-08). "Tokio Rust runtime reaches 1.0 status". InfoWorld. Retrieved 2021-09-03.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ Lerche, Carl. "Announcing Tokio 1.0". Retrieved December 11, 2022.
- ^ "Mozilla Awards $365,000 to Open Source Projects as part of MOSS". LWN.net. Retrieved 2021-11-21.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ "Welcoming Alice Ryhl as the first paid Tokio contributor". Tokio. Retrieved 2021-11-28.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ Allen Wyma (12 November 2021). "Tokio Ecosystem with Alice Ryhl". Rustacean Station (Podcast). Retrieved 2021-11-26.
- ^ "Rust Gets Zero-Cost Async/Await Support in Rust 1.39". InfoQ. Retrieved 2021-11-28.
- ^ "The Async Ecosystem". Asynchronous Programming in Rust. Retrieved 2021-11-28.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ Matsakis, Niko (2019-11-07). "Async-await on stable Rust!". Rust Blog. Retrieved 2021-11-28.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ a b c "Hello Tokio". Tokio. Retrieved 2021-11-28.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ Rappl Moraza, Florian (2022). Modern Frontend Development with Node.js: A Compendium for Modern JavaScript Web Development Within the Node.js Ecosystem. Birmingham, UK. ISBN 9781804617380.
{{cite book}}
: CS1 유지 관리: 위치 누락 게시자(링크) - ^ "I/O". Tokio. Retrieved December 11, 2022.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ "Announcing tokio-uring: io-uring support for Tokio". Tokio. Retrieved 2021-11-28.
{{cite web}}
: CS1 유지 : url-status (링크) - ^ Sintes, Tony (April 13, 2001). "Four for the ages". InfoWorld. Retrieved January 5, 2023.
- ^ Lyu, Shing (2020). Practical Rust Projects. New York. ISBN 9781484255995.
{{cite book}}
: CS1 유지 관리: 위치 누락 게시자(링크) - ^ Eguia Moraza, Iban (2018). Rust high performance : learn to skyrocket the performance of your Rust applications. Birmingham, UK. ISBN 978-1-78847-823-6. OCLC 1033544275.
{{cite book}}
: CS1 유지 관리: 위치 누락 게시자(링크) - ^ Blandy, Jim; Orendoff, Jason; Tindall, Leonara (2019). Programming Rust. Sebastopol. ISBN 9781492052548.
{{cite book}}
: CS1 유지 관리: 위치 누락 게시자(링크)