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

From Vigyanwiki
टोकियो
Original author(s)कार्ल लेर्चे
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 in[रस्ट
Operating systemमैकओएस, विंडोज़, लिनक्स, फ्रीबीएसडी, वेबअसेंबली
Typeअतुल्यकालिक क्रम
Licenseएमआईटी लाइसेंस
Website.आरएस

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

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

इतिहास

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

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

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

विशेषताएं

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

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

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

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

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

टोकियो में रस्ट मानक पुस्तकालय का संस्करण भी सम्मिलित होता है जिसे अतुल्यकालिक रूप से उपयोग करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, टोकियो::एफएस::रीड_टू_एंड(), जो किसी फ़ाइल की सामग्री को पढ़ता है, अतः एसटीडी::एफएस::रीड_टू_एंड() का अतुल्यकालिक संस्करण होता है।[19] इसके अतिरिक्त, टोकियो भिन्न क्रेट में, जिसे टोकियो-यूरिंग कहा जाता है, अतः लिनक्स अतुल्यकालिक आई/ओ सिस्कल इंटरफ़ेस, आईओ_यूरिंग का समर्थन करता है।[9][20]

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

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

सॉकेट श्रोता

टोकियो गैर-अवरुद्ध दृष्टिकोण के माध्यम से सॉकेट पर सुनने में सक्षम होता है।[4] विशेष रूप से, टीसीपीलिस्टनर संरचना प्रसारण नियंत्रण प्रोटोकॉल (टीसीपी) सॉकेट श्रोता को पते से बांधती है और अतुल्यकालिक रूप से फलन निष्पादित करती है।[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)


बाहरी संबंध