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

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

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

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

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

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

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

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

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

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

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

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

बाहरी संबंध

 * टोकियो on crates.io
 * टोकियो on crates.io
 * टोकियो on crates.io