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

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

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

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