टोकियो (सॉफ्टवेयर): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Library for Rust programming language}}
{{Short description|Library for Rust programming language}}
{{Infobox software
{{Infobox software
| title = Tokio
| title = टोकियो
| name = Tokio
| name = टोकियो
| logo = Tokio logo.svg
| logo = Tokio logo.svg
| logo size = 200px
| logo size = 200px
Line 12: Line 12:
| caption =  
| caption =  
| collapsible =  
| collapsible =  
| author = Carl Lerche
| author = कार्ल लेर्चे
| developer =  
| developer =  
| released = {{Start date and age|2020|12|23}}
| released = {{Start date and age|2020|12|23}}
Line 20: Line 20:
| latest preview version =  
| latest preview version =  
| latest preview date =  
| latest preview date =  
| programming language = [[Rust (programming language)|Rust]]
| programming language = [[रस्ट (programming language)|[रस्ट]]
| operating system = [[macOS]], [[Microsoft Windows|Windows]], [[Linux]], [[FreeBSD]], [[WebAssembly]]
| operating system = [[मैकओएस]], [[Microsoft Windows|विंडोज़]], [[लिनक्स]], [[फ्रीबीएसडी]], [[वेबअसेंबली]]
| size =  
| size =  
| language =  
| language =  
| language count =  
| language count =  
| language footnote =  
| language footnote =  
| genre = Asynchronous [[runtime library|runtime]]
| genre = अतुल्यकालिक [[runtime library|क्रम]]
| license = [[MIT License]]
| license = [[एमआईटी लाइसेंस]]
| alexa =  
| alexa =  
| standard =  
| standard =  
| AsOf =  
| AsOf =  
| website = {{URL|https://tokio.rs/}}
| website = {{URL|https://.आरएस/}}
}}
}}
'''टोकियो''' [[ जंग (प्रोग्रामिंग भाषा) |रस्ट (प्रोग्रामिंग भाषा)]] प्रोग्रामिंग भाषा के लिए [[ सॉफ्टवेयर पुस्तकालय |सॉफ्टवेयर पुस्तकालय]] होता है। यह [[ क्रम पुस्तकालय |रनटाइम]] और फलन प्रदान करता है जो अतुल्यकालिक आई/ओ के उपयोग को सक्षम करता है, जिससे कि कार्य पूर्ण होने के संबंध में समवर्तीता की अनुमति मिलती है।<ref>{{Cite book|last=Chanda|first=Abhishek|url=https://www.worldcat.org/oclc/1028194311|title=Network Programming with Rust: Build fast and resilient network servers and clients by leveraging Rust's memory-safety and concurrency features.|date=2018|publisher=Packt Publishing|isbn=978-1-78862-171-7|location=Birmingham|oclc=1028194311}}</ref><ref>{{Cite book|last=Sharma|first=Rahul|url=https://www.worldcat.org/oclc/1090681119|title=Mastering Rust : learn about memory safety, type system, concurrency, and the new features of Rust 2018 edition|date=2019|others=Vesa Kaihlavirta|isbn=978-1-78934-118-8|edition=Second|location=Birmingham, UK|oclc=1090681119}}</ref><ref>{{Cite web|last=De Simone|first=Sergio|date=2021-01-06|title=रस्ट एसिंक्रोनस रनटाइम टोकियो 1.0 तक पहुंचा|url=https://www.infoq.com/news/2021/01/rust-tokio-async-runtime/|url-status=live|access-date=2021-11-21|website=InfoQ|language=en}}</ref>
'''टोकियो''' [[ जंग (प्रोग्रामिंग भाषा) |रस्ट (प्रोग्रामिंग भाषा)]] प्रोग्रामिंग भाषा के लिए [[ सॉफ्टवेयर पुस्तकालय |सॉफ्टवेयर पुस्तकालय]] होता है। यह [[ क्रम पुस्तकालय |क्रम]] और फलन प्रदान करता है जो अतुल्यकालिक आई/ओ के उपयोग को सक्षम करता है, जिससे कि कार्य पूर्ण होने के संबंध में समवर्तीता की अनुमति मिलती है।<ref>{{Cite book|last=Chanda|first=Abhishek|url=https://www.worldcat.org/oclc/1028194311|title=Network Programming with Rust: Build fast and resilient network servers and clients by leveraging Rust's memory-safety and concurrency features.|date=2018|publisher=Packt Publishing|isbn=978-1-78862-171-7|location=Birmingham|oclc=1028194311}}</ref><ref>{{Cite book|last=Sharma|first=Rahul|url=https://www.worldcat.org/oclc/1090681119|title=Mastering Rust : learn about memory safety, type system, concurrency, and the new features of Rust 2018 edition|date=2019|others=Vesa Kaihlavirta|isbn=978-1-78934-118-8|edition=Second|location=Birmingham, UK|oclc=1090681119}}</ref><ref>{{Cite web|last=De Simone|first=Sergio|date=2021-01-06|title=रस्ट एसिंक्रोनस रनटाइम टोकियो 1.0 तक पहुंचा|url=https://www.infoq.com/news/2021/01/rust-tokio-async-runtime/|url-status=live|access-date=2021-11-21|website=InfoQ|language=en}}</ref>


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


== इतिहास ==
== इतिहास ==
टोकियो का प्रारंभ अगस्त, सन्न 2016 में कार्ल लेर्चे द्वारा फ्यूचर्स और वादों पर निर्मित रस्ट के लिए नेटवर्क एप्लिकेशन फ्रेमवर्क के रूप में की गयी थी, जो नेटवर्क-आधारित [[ मध्यस्थ |मध्यस्थ]] और गैर-अवरुद्ध, या अतुल्यकालिक, रिएक्टर के लिए तत्परता के कार्यान्वयन की अनुमति देता है। इस प्रकार टोकियो, फिनागल से प्रेरित होता था, जो [[जावा वर्चुअल मशीन]] (जेवीएम) के लिए ट्विटर पर विकसित स्काला (प्रोग्रामिंग भाषा )-आधारित अतुल्यकालिक [[सुदूर प्रणाली संदेश|रिमोट प्रोसीजर कॉल]] (आरपीसी) प्रणाली होती है, जो वितरित प्रणाली को जेवीएम के अंदर संचार करने की अनुमति देता है। सामान्यतः टोकियो निचले स्तर के रस्ट क्रेट <code>मियो</code> का उपयोग करता है, जो स्वयं [[epoll|एपोलl]] ([[लिनक्स]]), केक्यू (फ्रीबीएसडी) और इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी) एपीआई ([[विंडोज एनटी]]) जैसे प्रणाली कॉल का उपयोग करता है।<ref name="Announcement">{{Cite web |url=https://medium.com/@carllerche/announcing-tokio-df6bb4ddb34 |title=टोकियो की घोषणा|date=August 3, 2016 |last=Lerche |first=Carl |access-date=December 11, 2022}}</ref><ref>{{Cite web |url=https://blog.twitter.com/engineering/en_us/a/2011/finagle-a-protocol-agnostic-rpc-system |title=Finagle: A Protocol-Agnostic RPC System |date=August 19, 2011 |access-date=December 11, 2022}}</ref><ref>{{Cite book|last1=Gomez|first1=Guillaume|last2=Boucher|first2=Antoni|url=https://books.google.com/books?id=qNRJDwAAQBAJ|title=Rust Programming By Example: Enter the World of Rust by Building Engaging, Concurrent, Reactive, and Robust Applications|date=2018|publisher=Packt Publishing|isbn=9781788470308|location=Birmingham}}</ref> अतः "टोकियो" नाम [[टोक्यो]] और मियो से लिया गया है।<ref>{{Cite web |url=https://www.reddit.com/r/rust/comments/4vzomj/announcing_tokio_a_finagle_inspired_network/d62svqf/ |title=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. |date=August 3, 2016 |last=Lerche |first=Carl |publisher=[[Reddit]] |access-date=December 11, 2022}}</ref> अर्थात् टोकियो का प्रारंभिक संस्करण जनवरी, सन्न 2017 में जारी किया गया था,<ref>{{Cite web |url=https://tokio.rs/blog/2017-01-tokio-0-1 |title=टोकियो 0.1 की घोषणा|last1=Lerche |first1=Carl |last2=Crichton |first2=Alex |last3=Turon |first3=Aaron |access-date=December 11, 2022}}</ref> इसके पश्चात् दिसंबर, सन्न 2020 में पूरी रूप से जरी हुआ था।<ref name=":0">{{Cite web|last=Krill|first=Paul|date=2021-01-08|title=टोकियो रस्ट रनटाइम 1.0 स्थिति तक पहुँचता है|url=https://www.infoworld.com/article/3602776/tokio-rust-runtime-reaches-10-status.html|url-status=live|access-date=2021-09-03|website=[[InfoWorld]]|language=en}}</ref><ref>{{Cite web |url=https://tokio.rs/blog/2020-12-tokio-1-0 |title=टोकियो 1.0 की घोषणा|last=Lerche |first=Carl |access-date=December 11, 2022}}</ref> इस प्रकार सन्न 2017 में, टोकियो को [[mozilla|मोज़िला]] फंड से अनुदान प्राप्त हुआ था।<ref>{{Cite web|title=Mozilla Awards $365,000 to Open Source Projects as part of MOSS|url=https://lwn.net/Articles/719632/|url-status=live|access-date=2021-11-21|website=LWN.net}}</ref> जिसे अप्रैल, सन्न 2021 में, टोकियो ने अपने प्रथम भुगतान योगदानकर्ता, ऐलिस रिहल को परियोजना विकसित करने और अपने उपयोगकर्ताओं की सहायता करने के लिए अपने कार्य के लिए वित्त पोषित किया गया था।<ref>{{Cite web|title=पहले भुगतान किए गए टोकियो योगदानकर्ता के रूप में एलिस रिहल का स्वागत|url=https://tokio.rs/blog/2021-04-welcome-alice|url-status=live|access-date=2021-11-28|website=Tokio}}</ref><ref>{{Cite podcast|url=https://rustacean-station.org/episode/046-alice-ryhl/|title=ऐलिस रिहल के साथ टोकियो पारिस्थितिकी तंत्र|website=Rustacean Station|host=Allen Wyma|date=12 November 2021|access-date=2021-11-26}}</ref>
टोकियो का प्रारंभ अगस्त, सन्न 2016 में कार्ल लेर्चे द्वारा फ्यूचर्स और प्रतिज्ञा पर निर्मित रस्ट के लिए नेटवर्क एप्लिकेशन फ्रेमवर्क के रूप में की गयी थी, जो नेटवर्क-आधारित [[ मध्यस्थ |मध्यस्थ]] और गैर-अवरुद्ध, या अतुल्यकालिक, रिएक्टर के लिए तत्परता के कार्यान्वयन की अनुमति देता है। इस प्रकार टोकियो, फिनागल से प्रेरित होता था, जो [[जावा वर्चुअल मशीन]] (जेवीएम) के लिए ट्विटर पर विकसित स्काला (प्रोग्रामिंग भाषा )-आधारित अतुल्यकालिक [[सुदूर प्रणाली संदेश|रिमोट प्रोसीजर कॉल]] (आरपीसी) प्रणाली होती है, जो वितरित प्रणाली को जेवीएम के अंदर संचार करने की अनुमति देता है। सामान्यतः टोकियो निचले स्तर के रस्ट क्रेट <code>मियो</code> का उपयोग करता है, जो स्वयं [[epoll|एपोलl]] ([[लिनक्स]]), केक्यू (फ्रीबीएसडी) और इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी) एपीआई ([[विंडोज एनटी]]) जैसे प्रणाली कॉल का उपयोग करता है।<ref name="Announcement">{{Cite web |url=https://medium.com/@carllerche/announcing-tokio-df6bb4ddb34 |title=टोकियो की घोषणा|date=August 3, 2016 |last=Lerche |first=Carl |access-date=December 11, 2022}}</ref><ref>{{Cite web |url=https://blog.twitter.com/engineering/en_us/a/2011/finagle-a-protocol-agnostic-rpc-system |title=Finagle: A Protocol-Agnostic RPC System |date=August 19, 2011 |access-date=December 11, 2022}}</ref><ref>{{Cite book|last1=Gomez|first1=Guillaume|last2=Boucher|first2=Antoni|url=https://books.google.com/books?id=qNRJDwAAQBAJ|title=Rust Programming By Example: Enter the World of Rust by Building Engaging, Concurrent, Reactive, and Robust Applications|date=2018|publisher=Packt Publishing|isbn=9781788470308|location=Birmingham}}</ref> अतः "टोकियो" नाम [[टोक्यो]] और मियो से लिया गया है।<ref>{{Cite web |url=https://www.reddit.com/r/rust/comments/4vzomj/announcing_tokio_a_finagle_inspired_network/d62svqf/ |title=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. |date=August 3, 2016 |last=Lerche |first=Carl |publisher=[[Reddit]] |access-date=December 11, 2022}}</ref> अर्थात् टोकियो का प्रारंभिक संस्करण जनवरी, सन्न 2017 में जारी किया गया था,<ref>{{Cite web |url=https://tokio.rs/blog/2017-01-tokio-0-1 |title=टोकियो 0.1 की घोषणा|last1=Lerche |first1=Carl |last2=Crichton |first2=Alex |last3=Turon |first3=Aaron |access-date=December 11, 2022}}</ref> इसके पश्चात् दिसंबर, सन्न 2020 में पूरी रूप से जरी हुआ था।<ref name=":0">{{Cite web|last=Krill|first=Paul|date=2021-01-08|title=टोकियो रस्ट रनटाइम 1.0 स्थिति तक पहुँचता है|url=https://www.infoworld.com/article/3602776/tokio-rust-runtime-reaches-10-status.html|url-status=live|access-date=2021-09-03|website=[[InfoWorld]]|language=en}}</ref><ref>{{Cite web |url=https://tokio.rs/blog/2020-12-tokio-1-0 |title=टोकियो 1.0 की घोषणा|last=Lerche |first=Carl |access-date=December 11, 2022}}</ref> इस प्रकार सन्न 2017 में, टोकियो को [[mozilla|मोज़िला]] फंड से अनुदान प्राप्त हुआ था।<ref>{{Cite web|title=Mozilla Awards $365,000 to Open Source Projects as part of MOSS|url=https://lwn.net/Articles/719632/|url-status=live|access-date=2021-11-21|website=LWN.net}}</ref> जिसे अप्रैल, सन्न 2021 में, टोकियो ने अपने प्रथम भुगतान योगदानकर्ता, ऐलिस रिहल को परियोजना विकसित करने और अपने उपयोगकर्ताओं की सहायता करने के लिए अपने कार्य के लिए वित्त पोषित किया गया था।<ref>{{Cite web|title=पहले भुगतान किए गए टोकियो योगदानकर्ता के रूप में एलिस रिहल का स्वागत|url=https://tokio.rs/blog/2021-04-welcome-alice|url-status=live|access-date=2021-11-28|website=Tokio}}</ref><ref>{{Cite podcast|url=https://rustacean-station.org/episode/046-alice-ryhl/|title=ऐलिस रिहल के साथ टोकियो पारिस्थितिकी तंत्र|website=Rustacean Station|host=Allen Wyma|date=12 November 2021|access-date=2021-11-26}}</ref>


जबकि रस्ट ने संस्करण 1.39 के पश्चात् '''से अतुल्यकालिक कार्यों का समर्थन किया''' है, जो नवंबर, सन्न 2019 में जारी किया गया था,<ref>{{Cite web|title=Rust Gets Zero-Cost Async/Await Support in Rust 1.39|url=https://www.infoq.com/news/2019/11/rust-async-await/|access-date=2021-11-28|website=InfoQ|language=en}}</ref> यह उन्हें निष्पादित करने के लिए कोई सुविधा प्रदान नहीं करता है, उस उद्देश्य के लिए बाहरी रनटाइम की आवश्यकता होती है।<ref>{{Cite web|title=Async पारिस्थितिकी तंत्र|url=https://rust-lang.github.io/async-book/08_ecosystem/00_chapter.html|url-status=live|access-date=2021-11-28|website=Asynchronous Programming in Rust}}</ref> टोकियो रनटाइम प्रदान करता है जो बहु-थ्रेडेड कार्य चोरी अनुसूचक का उपयोग करता है।<ref name=":0" /> रस्ट का वायदा [[आलसी मूल्यांकन]] है, जिसे कॉल करने के लिए कार्यों की आवश्यकता होती है <code>.await</code> इससे पहले कि वे कोई कार्य करें।<ref>{{Cite web|last=Matsakis|first=Niko|date=2019-11-07|title=स्थिर रस्ट पर Async-प्रतीक्षा करें!|url=https://blog.rust-lang.org/2019/11/07/Async-await-stable.html|url-status=live|access-date=2021-11-28|website=Rust Blog|language=en}}</ref> कब <code>.await</code> आह्वान किया जाता है, तो टोकियो का रनटाइम मूल भविष्य को उसके आई/ओ के पूर्ण होने तक रोक सकता है, और आगे की प्रक्रिया के लिए तैयार अलग कार्य को रोक सकता है।<ref name="HelloTokio">{{Cite web|title=हैलो टोकियो|url=https://tokio.rs/tokio/tutorial/hello-tokio|url-status=live|access-date=2021-11-28|website=Tokio}}</ref>
जबकि रस्ट ने संस्करण 1.39 के पश्चात् से अतुल्यकालिक कार्यों का समर्थन किया है, जो नवंबर, सन्न 2019 में जारी किया गया था।<ref>{{Cite web|title=Rust Gets Zero-Cost Async/Await Support in Rust 1.39|url=https://www.infoq.com/news/2019/11/rust-async-await/|access-date=2021-11-28|website=InfoQ|language=en}}</ref> यह उन्हें निष्पादित करने के लिए कोई सुविधा प्रदान नहीं करता है, उस उद्देश्य के लिए बाहरी क्रम की आवश्यकता होती है।<ref>{{Cite web|title=Async पारिस्थितिकी तंत्र|url=https://rust-lang.github.io/async-book/08_ecosystem/00_chapter.html|url-status=live|access-date=2021-11-28|website=Asynchronous Programming in Rust}}</ref> इस प्रकार टोकियो क्रम प्रदान करता है जो बहु-थ्रेडेड कार्य चोरी अनुसूचक का उपयोग करता है।<ref name=":0" /> चूँकि रस्ट के भविष्य का मूल्यांकन [[आलसी मूल्यांकन|आलस्य]] से किया जाता है, जिससे किसी भी कार्यों को करने से पहले फलन को <code>.अवेट</code> पर कॉल करने की आवश्यकता होती है।<ref>{{Cite web|last=Matsakis|first=Niko|date=2019-11-07|title=स्थिर रस्ट पर Async-प्रतीक्षा करें!|url=https://blog.rust-lang.org/2019/11/07/Async-await-stable.html|url-status=live|access-date=2021-11-28|website=Rust Blog|language=en}}</ref> जब <code>.अवेट</code> को क्रियान्वित किया जाता है, तब टोकियो का क्रम मूल भविष्य को उसके आई/ओ के पूर्ण होने तक रोक सकता है और आगे की प्रक्रिया के लिए तैयार भिन्न कार्य को रोक सकता है।<ref name="HelloTokio">{{Cite web|title=हैलो टोकियो|url=https://tokio.rs/tokio/tutorial/hello-tokio|url-status=live|access-date=2021-11-28|website=Tokio}}</ref>


टोकियो के उपयोगकर्ताओं में [[ कलह (सॉफ्टवेयर) |कलह (सॉफ्टवेयर)]] और [[एडब्ल्यूएस लैम्ब्डा]] के पीछे विकास दल सम्मिलित हैं।<ref name=":0" />[[JavaScript]] रनटाइम Node.js की तुलना में JavaScript और [[TypeScript]] रनटाइम Deno (सॉफ़्टवेयर) टोकियो का उपयोग करता है, जो [[libuv]] लाइब्रेरी का उपयोग करता है।<ref>{{Cite book|last=Rappl Moraza|first=Florian|url=https://books.google.com/books?id=HyqdEAAAQBAJ|title=Modern Frontend Development with Node.js: A Compendium for Modern JavaScript Web Development Within the Node.js Ecosystem|date=2022|isbn=9781804617380|location=Birmingham, UK}}</ref>
टोकियो के उपयोगकर्ताओं में [[ कलह (सॉफ्टवेयर) |कलह (सॉफ्टवेयर)]] और [[एडब्ल्यूएस लैम्ब्डा]] के पीछे विकास दल सम्मिलित होते हैं।<ref name=":0" /> इस प्रकार [[JavaScript|जावास्क्रिप्ट]] क्रम नोड.जेएस की तुलना में जावास्क्रिप्ट और [[TypeScript|टाइप]][[JavaScript|स्क्रिप्ट]] क्रम डेनो (सॉफ़्टवेयर) टोकियो का उपयोग करता है, जो [[libuv|लिबुव]] पुस्तकालय का उपयोग करता है।<ref>{{Cite book|last=Rappl Moraza|first=Florian|url=https://books.google.com/books?id=HyqdEAAAQBAJ|title=Modern Frontend Development with Node.js: A Compendium for Modern JavaScript Web Development Within the Node.js Ecosystem|date=2022|isbn=9781804617380|location=Birmingham, UK}}</ref>
== विशेषताएं ==
== विशेषताएं ==


=== अतुल्यकालिक कोड ===
=== अतुल्यकालिक कोड ===
टोकियो अतुल्यकालिक रनटाइम के निर्माण के माध्यम से रस्ट में अतुल्यकालिक कार्यों के उपयोग की अनुमति देता है। यह के माध्यम से पूर्ण किया जा सकता है <code>[टोकियो::main]</code> [[मैक्रो (कंप्यूटर विज्ञान)]]<ref name="HelloTokio"/>
टोकियो अतुल्यकालिक क्रम के निर्माण के माध्यम से रस्ट में अतुल्यकालिक कार्यों के उपयोग की अनुमति देता है। इसे <code>[टोकियो::मुख्य]</code> [[मैक्रो (कंप्यूटर विज्ञान)]] के माध्यम से पूर्ण किया जा सकता है।<ref name="HelloTokio"/>


उदाहरण के लिए,
उदाहरण के लिए,
Line 58: Line 58:
}
}
</syntaxhighlight>
</syntaxhighlight>
इस उदाहरण में, <code>reqwest</code> क्रेट का उपयोग [[अंग्रेजी विकिपीडिया]] के लिए [[ हाइपर टेक्स्ट मार्कअप लैंग्वेज |हाइपर टेक्स्ट मार्कअप भाषा]] (एचटीएमएल) का अनुरोध करने के लिए किया जाता है। यह सुनिश्चित करने के लिए कि अनुरोध तुरंत संभाला नहीं जाता है, टोकियो फलन कॉल को अतुल्यकालिक रनटाइम में लपेटता है, कॉल करने से पहले अनुरोध पूर्ण होने की प्रतीक्षा कर रहा है <code>println()</code>.
इस उदाहरण में, [[अंग्रेजी विकिपीडिया]] के लिए [[ हाइपर टेक्स्ट मार्कअप लैंग्वेज |हाइपर टेक्स्ट मार्कअप भाषा]] (एचटीएमएल) का अनुरोध करने के लिए <code>रिक्वेस्ट</code> क्रेट का उपयोग किया जाता है। यह सुनिश्चित करने के लिए कि अनुरोध तुरंत नियंत्रित नहीं जाता है, चूँकि टोकियो फलन कॉल को अतुल्यकालिक क्रम में लपेटता है, अतः <code>प्रिंटइन()</code> को कॉल करने से पूर्व अनुरोध पूर्ण होने की प्रतीक्षा कर रहा है।


टोकियो में रस्ट मानक पुस्तकालय का संस्करण भी सम्मिलित है जिसे अतुल्यकालिक रूप से उपयोग करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, <code>टोकियो::fs::read_to_end()</code>, जो फ़ाइल की सामग्री को पढ़ता है, का अतुल्यकालिक संस्करण है <code>std::fs::read_to_end()</code>.<ref>{{Cite web|title=I/O|url=https://tokio.rs/tokio/tutorial/io|url-status=live|access-date=December 11, 2022|website=Tokio}}</ref> इसके अतिरिक्त, टोकियो io_uring का समर्थन करता है, लिनक्स अतुल्यकालिक I/O syscall इंटरफ़ेस, नाम के अलग क्रेट में <code>टोकियो-uring</code>.<ref name=":0" /><ref>{{Cite web|title=Announcing tokio-uring: io-uring support for Tokio|url=https://tokio.rs/blog/2021-07-tokio-uring|url-status=live|access-date=2021-11-28|website=Tokio}}</ref>
टोकियो में रस्ट मानक पुस्तकालय का संस्करण भी सम्मिलित होता है जिसे अतुल्यकालिक रूप से उपयोग करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, <code>टोकियो::एफएस::रीड_टू_एंड()</code>, जो किसी फ़ाइल की सामग्री को पढ़ता है, अतः <code>एसटीडी::एफएस::रीड_टू_एंड()</code> का अतुल्यकालिक संस्करण होता है।<ref>{{Cite web|title=I/O|url=https://tokio.rs/tokio/tutorial/io|url-status=live|access-date=December 11, 2022|website=Tokio}}</ref> इसके अतिरिक्त, टोकियो भिन्न क्रेट में, जिसे <code>टोकियो-यूरिंग</code> कहा जाता है, अतः लिनक्स अतुल्यकालिक आई/ओ सिस्कल इंटरफ़ेस, आईओ_यूरिंग का समर्थन करता है।<ref name=":0" /><ref>{{Cite web|title=Announcing tokio-uring: io-uring support for Tokio|url=https://tokio.rs/blog/2021-07-tokio-uring|url-status=live|access-date=2021-11-28|website=Tokio}}</ref>
=== संकलन-समय ग्रीन-थ्रेडिंग ===
=== संकलन-समय ग्रीन-थ्रेडिंग ===
टोकियो आगे उपयोगकर्ताओं को कार्य बनाने की अनुमति देता है, जो हरे रंग के धागे हैं, का उपयोग करके <code>टोकियो::spawn()</code> फलन। हरे रंग के धागे उपयोगकर्ता के स्तर पर चलते हैं, जब देशी धागे हमेशा उपलब्ध नहीं होते हैं तो समानता प्रदान करते हैं।<ref name="InfoWorldGreenThread">{{Cite web |url=https://www.infoworld.com/article/2077383/four-for-the-ages.html |title=उम्र के लिए चार|date=April 13, 2001 |last=Sintes |first=Tony |work=[[InfoWorld]] |access-date=January 5, 2023}}</ref> रस्ट के पिछले संस्करणों ने ग्रीन थ्रेडिंग को प्रयुक्त किया; इस कार्यक्षमता को रस्ट 1.0 में हटा दिया गया था।<ref name="PracticalRust">{{Cite book|last=Lyu|first=Shing|url=https://books.google.com/books?id=1mTTDwAAQBAJ|title=व्यावहारिक जंग परियोजनाएं|date=2020|isbn=9781484255995|location=New York}}</ref> फ्यूचर्स के विपरीत, कार्यों को उपयोग करने की आवश्यकता नहीं है <code>.await</code>, क्योंकि थ्रेड उपलब्ध होने पर कार्य स्वचालित रूप से निष्पादित हो जाएगा।<ref name="HelloTokio"/>
टोकियो आगे उपयोगकर्ताओं को <code>टोकियो::spawn()</code> फलन का उपयोग करके कार्य बनाने की अनुमति देता है, जो हरे रंग के धागे हैं। इस प्रकार हरे रंग के धागे उपयोगकर्ता के स्तर पर चलते हैं, जब मूल धागे हमेशा उपलब्ध नहीं होते हैं, तब समानता प्रदान करते हैं।<ref name="InfoWorldGreenThread">{{Cite web |url=https://www.infoworld.com/article/2077383/four-for-the-ages.html |title=उम्र के लिए चार|date=April 13, 2001 |last=Sintes |first=Tony |work=[[InfoWorld]] |access-date=January 5, 2023}}</ref> सामान्यतः रस्ट के पिछले संस्करणों ने ग्रीन थ्रेडिंग को प्रयुक्त किया था। इस कार्यक्षमता को रस्ट 1.0 में हटा दिया गया था।<ref name="PracticalRust">{{Cite book|last=Lyu|first=Shing|url=https://books.google.com/books?id=1mTTDwAAQBAJ|title=व्यावहारिक जंग परियोजनाएं|date=2020|isbn=9781484255995|location=New York}}</ref> अतः फ्यूचर्स के विपरीत, कार्यों को <code>.await</code> का उपयोग करने की आवश्यकता नहीं होती है, जिससे कि थ्रेड उपलब्ध होने पर कार्य स्वचालित रूप से निष्पादित हो जाता है।<ref name="HelloTokio"/>
=== सॉकेट सुनना ===
=== सॉकेट श्रोता ===
टोकियो गैर-अवरुद्ध I/O|गैर-अवरुद्ध दृष्टिकोण के माध्यम से सॉकेट पर सुनने में सक्षम है।<ref name="Announcement"/> विशेष रूप से, <code>TcpListener</code> संरचना [[ प्रसारण नियंत्रण प्रोटोकॉल |प्रसारण नियंत्रण प्रोटोकॉल]] (टीसीपी) सॉकेट श्रोता को पते से बांधती है और अतुल्यकालिक रूप से कार्य करती है।<ref>{{Cite book|last=Eguia Moraza|first=Iban|url=https://www.worldcat.org/oclc/1033544275|title=Rust high performance : learn to skyrocket the performance of your Rust applications|date=2018|isbn=978-1-78847-823-6|location=Birmingham, UK|oclc=1033544275}}</ref>
टोकियो गैर-अवरुद्ध दृष्टिकोण के माध्यम से सॉकेट पर सुनने में सक्षम होता है।<ref name="Announcement"/> विशेष रूप से, <code>टीसीपीलिस्टनर</code> संरचना [[ प्रसारण नियंत्रण प्रोटोकॉल |प्रसारण नियंत्रण प्रोटोकॉल]] (टीसीपी) सॉकेट श्रोता को पते से बांधती है और अतुल्यकालिक रूप से फलन निष्पादित करती है।<ref>{{Cite book|last=Eguia Moraza|first=Iban|url=https://www.worldcat.org/oclc/1033544275|title=Rust high performance : learn to skyrocket the performance of your Rust applications|date=2018|isbn=978-1-78847-823-6|location=Birmingham, UK|oclc=1033544275}}</ref>
=== प्रसारण ===
=== प्रसारण ===
टोकियो ब्रॉडकास्टिंग (नेटवर्किंग) चैनल प्रकार प्रदान करता है, जिससे संदेशों को कई रिसीवरों को प्रसारित करने की अनुमति मिलती है। संदेश भेजने पर, यह ऐसे रिसीवर द्वारा प्राप्त किया जाता है। यह अन्य अनुप्रयोगों के मध्य वास्तविक-समय संचार और वितरित प्रणाली को सक्षम बनाता है।<ref>{{Cite book|last1=Blandy|first1=Jim|last2=Orendoff|first2=Jason|last3=Tindall|first3=Leonara|url=https://books.google.com/books?id=qFkzEAAAQBAJ|title=प्रोग्रामिंग जंग|date=2019|isbn=9781492052548|location=Sebastopol}}</ref>
टोकियो प्रसारण (नेटवर्किंग) चैनल प्रकार प्रदान करता है, जिससे संदेशों को अनेक प्राप्तकर्ताओं को प्रसारित करने की अनुमति मिलती है। इस प्रकार संदेश भेजने पर यह ऐसे प्राप्तकर्ताओं द्वारा प्राप्त किया जाता है। यह अन्य अनुप्रयोगों के मध्य वास्तविक-समय संचार और वितरित प्रणाली को सक्षम बनाता है।<ref>{{Cite book|last1=Blandy|first1=Jim|last2=Orendoff|first2=Jason|last3=Tindall|first3=Leonara|url=https://books.google.com/books?id=qFkzEAAAQBAJ|title=प्रोग्रामिंग जंग|date=2019|isbn=9781492052548|location=Sebastopol}}</ref>
== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
Line 75: Line 75:
* {{GitHub|tokio-rs/tokio|Tokio}}
* {{GitHub|tokio-rs/tokio|Tokio}}
* [https://crates.io/crates/tokio टोकियो] on crates.io
* [https://crates.io/crates/tokio टोकियो] on crates.io
[[Category: 2020 सॉफ्टवेयर]] [[Category: रस्ट में मुफ्त सॉफ्टवेयर प्रोग्राम किया गया]] [[Category: मुफ्त कंप्यूटर पुस्तकालय]] [[Category: एमआईटी लाइसेंस का उपयोग करने वाला सॉफ्टवेयर]]


 
[[Category:2020 सॉफ्टवेयर]]
 
[[Category:CS1 English-language sources (en)]]
[[Category: Machine Translated Page]]
[[Category:CS1 maint]]
[[Category:Created On 16/06/2023]]
[[Category:Created On 16/06/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Official website not in Wikidata]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:एमआईटी लाइसेंस का उपयोग करने वाला सॉफ्टवेयर]]
[[Category:मुफ्त कंप्यूटर पुस्तकालय]]
[[Category:रस्ट में मुफ्त सॉफ्टवेयर प्रोग्राम किया गया]]

Latest revision as of 11:33, 2 July 2023

टोकियो
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)


बाहरी संबंध