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

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

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

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

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

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

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

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

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

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

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

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

बाहरी संबंध

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