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

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

इतिहास
टोकियो अगस्त 2016 में कार्ल लेर्चे द्वारा फ्यूचर्स और वादों पर निर्मित रस्ट के लिए एक नेटवर्क एप्लिकेशन फ्रेमवर्क के रूप में शुरू हुआ, जो नेटवर्क-आधारित मध्यस्थ  और नॉन-ब्लॉकिंग I/O|नॉन-ब्लॉकिंग, या एसिंक्रोनस, रिएक्टर के लिए रेडीनेस इंटरेस्ट के कार्यान्वयन की अनुमति देता है। नमूना। Tokio, Finagle से प्रेरित था, एक Scala (प्रोग्रामिंग लैंग्वेज)-आधारित एसिंक्रोनस सुदूर प्रणाली संदेश (RPC) सिस्टम जिसे जावा वर्चुअल मशीन (JVM) के लिए ट्विटर पर विकसित किया गया था, जो वितरित सिस्टम को JVM के भीतर संचार करने की अनुमति देता है। टोकियो निचले स्तर के रस्ट क्रेट का उपयोग करता है , खुद epoll (लिनक्स), क्यूक्यू (फ्रीबीएसडी), और इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी) एपीआई (विंडोज एनटी) जैसे सिस्टम कॉल का उपयोग कर रहा है।  टोकियो नाम टोक्यो और मियो से लिया गया है। टोकियो का प्रारंभिक संस्करण जनवरी 2017 में जारी किया गया था, इसके बाद दिसंबर 2020 में पूरी रिलीज हुई। 2017 में, टोकियो को mozilla फंड से अनुदान प्राप्त हुआ। अप्रैल 2021 में, टोकियो ने अपने पहले भुगतान योगदानकर्ता, ऐलिस रिहल को परियोजना विकसित करने और अपने उपयोगकर्ताओं की सहायता करने के लिए अपने काम के लिए वित्त पोषित किया। जबकि रस्ट ने संस्करण 1.39 के बाद से अतुल्यकालिक कार्यों का समर्थन किया है, जो नवंबर 2019 में जारी किया गया था, यह उन्हें निष्पादित करने के लिए कोई सुविधा प्रदान नहीं करता है, उस उद्देश्य के लिए बाहरी रनटाइम की आवश्यकता होती है। टोकियो एक रनटाइम प्रदान करता है जो एक बहु-थ्रेडेड कार्य चोरी अनुसूचक का उपयोग करता है। रस्ट का वायदा आलसी मूल्यांकन है, जिसे कॉल करने के लिए कार्यों की आवश्यकता होती है  इससे पहले कि वे कोई काम करें। कब   आह्वान किया जाता है, तो टोकियो का रनटाइम मूल भविष्य को उसके I/O के पूरा होने तक रोक सकता है, और आगे की प्रक्रिया के लिए तैयार एक अलग कार्य को रोक सकता है। टोकियो के उपयोगकर्ताओं में कलह (सॉफ्टवेयर)  और एडब्ल्यूएस लैम्ब्डा के पीछे विकास दल शामिल हैं। JavaScript रनटाइम Node.js की तुलना में JavaScript और TypeScript रनटाइम Deno (सॉफ़्टवेयर) Tokio का उपयोग करता है, जो libuv लाइब्रेरी का उपयोग करता है।

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

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

टोकियो में रस्ट मानक पुस्तकालय का एक संस्करण भी शामिल है जिसे अतुल्यकालिक रूप से उपयोग करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए,, जो एक फ़ाइल की सामग्री को पढ़ता है, का अतुल्यकालिक संस्करण है. इसके अलावा, टोकियो io_uring का समर्थन करता है, एक लिनक्स एसिंक्रोनस I/O syscall इंटरफ़ेस, नाम के एक अलग क्रेट में.

संकलन-समय ग्रीन-थ्रेडिंग
Tokio आगे उपयोगकर्ताओं को कार्य बनाने की अनुमति देता है, जो हरे रंग के धागे हैं, एक का उपयोग करके  समारोह। हरे रंग के धागे उपयोगकर्ता के स्तर पर चलते हैं, जब देशी धागे हमेशा उपलब्ध नहीं होते हैं तो समानता प्रदान करते हैं। रस्ट के पिछले संस्करणों ने ग्रीन थ्रेडिंग को लागू किया; इस कार्यक्षमता को रस्ट 1.0 में हटा दिया गया था। फ्यूचर्स के विपरीत, कार्यों को उपयोग करने की आवश्यकता नहीं है , क्योंकि थ्रेड उपलब्ध होने पर कार्य स्वचालित रूप से निष्पादित हो जाएगा।

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

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

बाहरी संबंध

 * Tokio on crates.io
 * Tokio on crates.io
 * Tokio on crates.io