Tokio është një libari softueri për gjuhën e programimit Rust. Ajo siguron një kohë ekzekutimi dhe funksione që mundësojnë përdorimin e I/O asinkrone, duke lejuar njëkohshmëri në lidhje me përfundimin e detyrës. [2] [3] [4]

Tokio
AutorCarl Lerche
Versioni i parëdhjetor 23, 2020; 3 vite më parë (2020-12-23)
Versioni i fundit1.41.0[1] Edit this on Wikidata
Gjuhet e programimitRust
Sistemi operativmacOS, Windows, Linux, FreeBSD, WebAssembly
Përdoret përLibrari asinkrone
LicencaLicenca MIT
Faqja zyrtaretokio.rs

Tokio u lëshua në gusht 2016 për Rust, një gjuhë programimi për qëllime të përgjithshme . Zhvilluar nga Carl Lerche, Tokio filloi si një kornizë aplikimi rrjeti dhe mbështet veçori të tilla si dëgjimi dhe transmetimi i socket-eve, duke lejuar që mesazhet të transferohen midis kompjuterëve.

Veçoritë

Redakto

Kodi asinkron

Redakto

Tokio lejon përdorimin e funksioneve asinkrone në Rust përmes krijimit të një kohe ekzekutimi asinkrone. Kjo mund të realizohet përmes makros #[tokio::main] . [5]

Për shembull:

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

Në këtë shembull, arka (ang. crate) reqwest përdoret për të kërkuar gjuhën e shënjimit të hipertekstit (HTML) për Wikipedian në anglisht . Për të siguruar që kërkesa të mos trajtohet menjëherë, Tokio e mbështjell thirrjen e funksionit në një kohë ekzekutimi asinkrone, duke pritur që kërkesa të përfundojë përpara se të thërrasë println() .

Tokio përfshin gjithashtu një version të librarisë standarde Rust që është krijuar për t'u përdorur në mënyrë asinkrone. Për shembull, tokio::fs::read_to_end(), i cili lexon përmbajtjen e një skedari, është versioni asinkron i std::fs::read_to_end() . [6] Për më tepër, Tokio mbështet io_uring, një ndërfaqe asinkrone syscall I/O Linux, në një arkë të veçantë të quajtur tokio-uring . [7] [8]

Modeli i korutinës

Redakto

Tokio më tej i lejon përdoruesit të krijojnë detyra (ang. tasks), të cilat janë korutina pa stivë, duke përdorur një funksion tokio::spawn() . Detyrat ekzekutohen në nivelin e përdoruesit, duke siguruar njëkohshmëri edhe kur ka një thread të vetëm. [9]

Dëgjimi i socket-it

Redakto

Tokio është në gjendje të dëgjojë në një socket përmes një qasjeje jo-bllokuese . [10] Në veçanti, struktura TcpListener lidh një dëgjues socket-i të Protokollit të Kontrollit të Transmisionit (TCP) me një adresë dhe ekzekuton funksionin në mënyrë asinkrone. [11]

Transmetimi

Redakto

Tokio ofron një lloj kanali transmetimi, duke lejuar transmetimin e mesazheve në marrës të shumtë. Me dërgimin e një mesazhi, ai merret nga marrës të tillë. Kjo mundëson komunikimin në kohë reale dhe sistemet e shpërndara, ndër aplikacionet e tjera. [12]

  1. ^ "Release 1.41.0". 22 tetor 2024. Marrë më 27 tetor 2024. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  2. ^ 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. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  3. ^ Sharma, Rahul (2019). Mastering Rust : learn about memory safety, type system, concurrency, and the new features of Rust 2018 edition. Vesa Kaihlavirta (bot. Second). Birmingham, UK. ISBN 978-1-78934-118-8. OCLC 1090681119. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Mungon shtëpia botuese te vendodhja (lidhja)
  4. ^ De Simone, Sergio (2021-01-06). "Rust Asynchronous Runtime Tokio Reaches 1.0". InfoQ (në anglisht). Marrë më 2021-11-21.
  5. ^ "Hello Tokio". Tokio. Marrë më 2021-11-28. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  6. ^ "I/O". Tokio. Marrë më 11 dhjetor 2022. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  7. ^ Krill, Paul (2021-01-08). "Tokio Rust runtime reaches 1.0 status". InfoWorld (në anglisht). Marrë më 2021-09-03.
  8. ^ "Announcing tokio-uring: io-uring support for Tokio". Tokio. Marrë më 2021-11-28. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  9. ^ Sintes, Tony (13 prill 2001). "Four for the ages". InfoWorld. Marrë më 5 janar 2023. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  10. ^ Lerche, Carl (3 gusht 2016). "Announcing Tokio". Marrë më 11 dhjetor 2022. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  11. ^ 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}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Mungon shtëpia botuese te vendodhja (lidhja)
  12. ^ Blandy, Jim; Orendoff, Jason; Tindall, Leonara (2019). Programming Rust. Sebastopol. ISBN 9781492052548. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Mungon shtëpia botuese te vendodhja (lidhja)