टोकियो (सॉफ्टवेयर)

From Vigyanwiki
Tokio
Original author(s)Carl Lerche
Initial releaseDecember 23, 2020; 4 years ago (2020-12-23)
Stable release
Script error: The module returned a nil value. It is supposed to return an export table.
Written inRust
Operating systemmacOS, Windows, Linux, FreeBSD, WebAssembly
TypeAsynchronous runtime
LicenseMIT License
Websitetokio.rs

टोकियो जंग (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा के लिए सॉफ्टवेयर पुस्तकालय है। यह क्रम पुस्तकालय और फ़ंक्शंस प्रदान करता है जो एसिंक्रोनस आई/ओ के उपयोग को सक्षम करता है, जिससे कार्य पूर्ण होने के संबंध में समवर्तीता की अनुमति मिलती है।[1][2][3]

टोकियो को अगस्त, सन्न 2016 में रस्ट के लिए जारी किया गया था, जो सामान्य प्रयोजन की प्रोग्रामिंग भाषा है। कार्ल लेर्चे द्वारा विकसित, टोकियो नेटवर्क एप्लिकेशन फ्रेमवर्क के रूप में प्रारंभ हुआ और सॉकेट लिसनिंग और प्रसारण (नेटवर्किंग) जैसी सुविधाओं का समर्थन करता है, जिससे संदेशों को कंप्यूटर के मध्य स्थानांतरित किया जा सकता है।

इतिहास

टोकियो अगस्त, सन्न 2016 में कार्ल लेर्चे द्वारा फ्यूचर्स और वादों पर निर्मित रस्ट के लिए नेटवर्क एप्लिकेशन फ्रेमवर्क के रूप में प्रारंभ हुआ, जो नेटवर्क-आधारित मध्यस्थ और नॉन-ब्लॉकिंग आई/ओ|नॉन-ब्लॉकिंग, या एसिंक्रोनस, रिएक्टर के लिए रेडीनेस इंटरेस्ट के कार्यान्वयन की अनुमति देता है। नमूना। टोकियो, Finagle से प्रेरित था, Scala (प्रोग्रामिंग भाषा )-आधारित एसिंक्रोनस सुदूर प्रणाली संदेश (आरपीसी) प्रणाली जिसे जावा वर्चुअल मशीन (जेवीएम) के लिए ट्विटर पर विकसित किया गया था, जो वितरित प्रणाली को जेवीएम के भीतर संचार करने की अनुमति देता है। टोकियो निचले स्तर के रस्ट क्रेट का उपयोग करता है mio, खुद epoll (लिनक्स), क्यूक्यू (फ्रीबीएसडी), और इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी) एपीआई (विंडोज एनटी) जैसे प्रणाली कॉल का उपयोग कर रहा है।[4][5][6] टोकियो नाम टोक्यो और मियो से लिया गया है।[7] टोकियो का प्रारंभिक संस्करण जनवरी, सन्न 2017 में जारी किया गया था,[8] इसके पश्चात् दिसंबर, सन्न 2020 में पूरी रिलीज हुई।[9][10] सन्न 2017 में, टोकियो को mozilla फंड से अनुदान प्राप्त हुआ।[11] अप्रैल, सन्न 2021 में, टोकियो ने अपने पहले भुगतान योगदानकर्ता, ऐलिस रिहल को परियोजना विकसित करने और अपने उपयोगकर्ताओं की सहायता करने के लिए अपने कार्य के लिए वित्त पोषित किया।[12][13]

जबकि रस्ट ने संस्करण 1.39 के पश्चात् से अतुल्यकालिक कार्यों का समर्थन किया है, जो नवंबर, सन्न 2019 में जारी किया गया था,[14] यह उन्हें निष्पादित करने के लिए कोई सुविधा प्रदान नहीं करता है, उस उद्देश्य के लिए बाहरी रनटाइम की आवश्यकता होती है।[15] टोकियो रनटाइम प्रदान करता है जो बहु-थ्रेडेड कार्य चोरी अनुसूचक का उपयोग करता है।[9] रस्ट का वायदा आलसी मूल्यांकन है, जिसे कॉल करने के लिए कार्यों की आवश्यकता होती है .await इससे पहले कि वे कोई कार्य करें।[16] कब .await आह्वान किया जाता है, तो टोकियो का रनटाइम मूल भविष्य को उसके आई/ओ के पूर्ण होने तक रोक सकता है, और आगे की प्रक्रिया के लिए तैयार अलग कार्य को रोक सकता है।[17]

टोकियो के उपयोगकर्ताओं में कलह (सॉफ्टवेयर) और एडब्ल्यूएस लैम्ब्डा के पीछे विकास दल सम्मिलित हैं।[9]JavaScript रनटाइम Node.js की तुलना में JavaScript और TypeScript रनटाइम Deno (सॉफ़्टवेयर) टोकियो का उपयोग करता है, जो libuv लाइब्रेरी का उपयोग करता है।[18]

विशेषताएं

अतुल्यकालिक कोड

टोकियो अतुल्यकालिक रनटाइम के निर्माण के माध्यम से रस्ट में अतुल्यकालिक कार्यों के उपयोग की अनुमति देता है। यह के माध्यम से पूर्ण किया जा सकता है [टोकियो::main] मैक्रो (कंप्यूटर विज्ञान)[17]

उदाहरण के लिए,

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

इस उदाहरण में, reqwest क्रेट का उपयोग अंग्रेजी विकिपीडिया के लिए हाइपर टेक्स्ट मार्कअप भाषा (एचटीएमएल) का अनुरोध करने के लिए किया जाता है। यह सुनिश्चित करने के लिए कि अनुरोध तुरंत संभाला नहीं जाता है, टोकियो फलन कॉल को एसिंक्रोनस रनटाइम में लपेटता है, कॉल करने से पहले अनुरोध पूर्ण होने की प्रतीक्षा कर रहा है println().

टोकियो में रस्ट मानक पुस्तकालय का संस्करण भी सम्मिलित है जिसे अतुल्यकालिक रूप से उपयोग करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, टोकियो::fs::read_to_end(), जो फ़ाइल की सामग्री को पढ़ता है, का अतुल्यकालिक संस्करण है std::fs::read_to_end().[19] इसके अतिरिक्त, टोकियो io_uring का समर्थन करता है, लिनक्स एसिंक्रोनस I/O syscall इंटरफ़ेस, नाम के अलग क्रेट में टोकियो-uring.[9][20]

संकलन-समय ग्रीन-थ्रेडिंग

टोकियो आगे उपयोगकर्ताओं को कार्य बनाने की अनुमति देता है, जो हरे रंग के धागे हैं, का उपयोग करके टोकियो::spawn() फलन। हरे रंग के धागे उपयोगकर्ता के स्तर पर चलते हैं, जब देशी धागे हमेशा उपलब्ध नहीं होते हैं तो समानता प्रदान करते हैं।[21] रस्ट के पिछले संस्करणों ने ग्रीन थ्रेडिंग को प्रयुक्त किया; इस कार्यक्षमता को रस्ट 1.0 में हटा दिया गया था।[22] फ्यूचर्स के विपरीत, कार्यों को उपयोग करने की आवश्यकता नहीं है .await, क्योंकि थ्रेड उपलब्ध होने पर कार्य स्वचालित रूप से निष्पादित हो जाएगा।[17]

सॉकेट सुनना

टोकियो गैर-अवरुद्ध I/O|गैर-अवरुद्ध दृष्टिकोण के माध्यम से सॉकेट पर सुनने में सक्षम है।[4] विशेष रूप से, TcpListener संरचना प्रसारण नियंत्रण प्रोटोकॉल (टीसीपी) सॉकेट श्रोता को पते से बांधती है और एसिंक्रोनस रूप से कार्य करती है।[23]

प्रसारण

टोकियो ब्रॉडकास्टिंग (नेटवर्किंग) चैनल प्रकार प्रदान करता है, जिससे संदेशों को कई रिसीवरों को प्रसारित करने की अनुमति मिलती है। संदेश भेजने पर, यह ऐसे रिसीवर द्वारा प्राप्त किया जाता है। यह अन्य अनुप्रयोगों के मध्य वास्तविक-समय संचार और वितरित प्रणाली को सक्षम बनाता है।[24]

संदर्भ

  1. 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.
  2. 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 maint: location missing publisher (link)
  3. De Simone, Sergio (2021-01-06). "रस्ट एसिंक्रोनस रनटाइम टोकियो 1.0 तक पहुंचा". InfoQ (in English). Retrieved 2021-11-21.{{cite web}}: CS1 maint: url-status (link)
  4. 4.0 4.1 Lerche, Carl (August 3, 2016). "टोकियो की घोषणा". Retrieved December 11, 2022.
  5. "Finagle: A Protocol-Agnostic RPC System". August 19, 2011. Retrieved December 11, 2022.
  6. 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.
  7. 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.
  8. Lerche, Carl; Crichton, Alex; Turon, Aaron. "टोकियो 0.1 की घोषणा". Retrieved December 11, 2022.
  9. 9.0 9.1 9.2 9.3 Krill, Paul (2021-01-08). "टोकियो रस्ट रनटाइम 1.0 स्थिति तक पहुँचता है". InfoWorld (in English). Retrieved 2021-09-03.{{cite web}}: CS1 maint: url-status (link)
  10. Lerche, Carl. "टोकियो 1.0 की घोषणा". Retrieved December 11, 2022.
  11. "Mozilla Awards $365,000 to Open Source Projects as part of MOSS". LWN.net. Retrieved 2021-11-21.{{cite web}}: CS1 maint: url-status (link)
  12. "पहले भुगतान किए गए टोकियो योगदानकर्ता के रूप में एलिस रिहल का स्वागत". Tokio. Retrieved 2021-11-28.{{cite web}}: CS1 maint: url-status (link)
  13. Allen Wyma (12 November 2021). "ऐलिस रिहल के साथ टोकियो पारिस्थितिकी तंत्र". Rustacean Station (Podcast). Retrieved 2021-11-26.
  14. "Rust Gets Zero-Cost Async/Await Support in Rust 1.39". InfoQ (in English). Retrieved 2021-11-28.
  15. "Async पारिस्थितिकी तंत्र". Asynchronous Programming in Rust. Retrieved 2021-11-28.{{cite web}}: CS1 maint: url-status (link)
  16. Matsakis, Niko (2019-11-07). "स्थिर रस्ट पर Async-प्रतीक्षा करें!". Rust Blog (in English). Retrieved 2021-11-28.{{cite web}}: CS1 maint: url-status (link)
  17. 17.0 17.1 17.2 "हैलो टोकियो". Tokio. Retrieved 2021-11-28.{{cite web}}: CS1 maint: url-status (link)
  18. 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 maint: location missing publisher (link)
  19. "I/O". Tokio. Retrieved December 11, 2022.{{cite web}}: CS1 maint: url-status (link)
  20. "Announcing tokio-uring: io-uring support for Tokio". Tokio. Retrieved 2021-11-28.{{cite web}}: CS1 maint: url-status (link)
  21. Sintes, Tony (April 13, 2001). "उम्र के लिए चार". InfoWorld. Retrieved January 5, 2023.
  22. Lyu, Shing (2020). व्यावहारिक जंग परियोजनाएं. New York. ISBN 9781484255995.{{cite book}}: CS1 maint: location missing publisher (link)
  23. 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 maint: location missing publisher (link)
  24. Blandy, Jim; Orendoff, Jason; Tindall, Leonara (2019). प्रोग्रामिंग जंग. Sebastopol. ISBN 9781492052548.{{cite book}}: CS1 maint: location missing publisher (link)


बाहरी संबंध