Tokio (software)
ٹوکیو زنگ پروگرامنگ زبان کے لیے ایک سافٹ ویئر لائبریری ہے۔ یہ ایک رن ٹائم اور افعال فراہم کرتا ہے جو غیر متزلزل I/O کے استعمال کو قابل بناتا ہے، جس سے کام کی تکمیل کے حوالے سے ہم آہنگی کی اجازت ملتی ہے۔ ٹوکیو کو اگست 2016 میں رسٹ کے لیے جاری کیا گیا تھا، جو ایک عام مقصد کی پروگرامنگ زبان ہے۔ کارل لرچے کے ذریعہ تیار کردہ، ٹوکیو ایک نیٹ ورک ایپلی کیشن فریم ورک کے طور پر شروع ہوا اور ساکٹ سننے اور نشر کرنے جیسی خصوصیات کی حمایت کرتا ہے، جس سے پیغامات کو کمپیوٹر کے درمیان منتقل کیا جاسکتا ہے۔ ٹوکیو کی تاریخ کا آغاز اگست 2016 میں کارل لرچے نے مستقبل پر بنائے گئے رسٹ کے لیے ایک نیٹ ورک ایپلی کیشن فریم ورک کے طور پر کیا تھا، جس سے نیٹ ورک پر مبنی مڈل ویئر اور ری ایکٹر کو غیر مسدود کرنے، یا غیر مطابقت پذیر، تیاری کے مفاد کو نافذ کرنے کی اجازت ملتی ہے۔ ٹوکیو فنگل سے متاثر تھا، جو جاوا ورچوئل مشینوں (جے وی ایم) کے لیے ٹویٹر پر تیار کردہ اسکالا پر مبنی اسنکرونس ریموٹ پروسیجر کال (آر پی سی) سسٹم ہے، جو تقسیم شدہ نظاموں کو جے وی ایم کے اندر بات چیت کرنے کی اجازت دیتا ہے۔ ٹوکیو نچلی سطح کے رسٹ کریٹ میو کا استعمال کرتا ہے، خود سسٹم کالز جیسے ایپول (لینکس)، کیو (فری بی ایس ڈی)، اور ان پٹ/آؤٹ پٹ تکمیل پورٹ (آئی او سی پی) اے پی آئی (ونڈوز) کا استعمال کرتا ہے۔ "ٹوکیو" نام ٹوکیو اور میو سے ماخوذ ہے۔ ٹوکیو کا ابتدائی ورژن جنوری 2017 میں جاری کیا گیا تھا، اس کے بعد دسمبر 2020 میں مکمل ریلیز ہوا۔ 2017 میں ٹوکیو کو موزیلا اوپن سورس سپورٹ فنڈ سے گرانٹ ملی۔ اپریل 2021 میں، ٹوکیو نے اپنے پہلے ادا شدہ شراکت دار، ایلس ریہل کو اس منصوبے کو تیار کرنے اور اس کے صارفین کی مدد کرنے دونوں کے لیے مالی اعانت فراہم کی۔ اگرچہ رسٹ نے نومبر 2019 میں ریلیز ہونے والے ورژن 1.39 کے بعد سے غیر متزلزل افعال کی حمایت کی ہے، لیکن یہ انہیں انجام دینے کے لیے کوئی سہولیات فراہم نہیں کرتا، اس مقصد کے لیے بیرونی رن ٹائم کی ضرورت ہوتی ہے۔ ٹوکیو ایک رن ٹائم فراہم کرتا ہے جو ملٹی تھریڈ ورک اسٹیلنگ شیڈولر کا استعمال کرتا ہے۔ رسٹ کے مستقبل کا سست انداز میں جائزہ لیا جاتا ہے، جس میں افعال کو کوئی بھی کام کرنے سے پہلے کال کرنے کی ضرورت ہوتی ہے۔ جب. آوائٹ کو بلایا جاتا ہے، تو ٹوکیو کا رن ٹائم اصل مستقبل کو اس وقت تک روک سکتا ہے جب تک کہ اس کا I/O مکمل نہ ہو جائے، اور ایک مختلف کام کو روک سکتا ہے جو مزید کارروائی کے لیے تیار ہے۔ ٹوکیو کے صارفین میں ڈسکارڈ اور اے ڈبلیو ایس لیمبڈا کے پیچھے ترقیاتی ٹیمیں شامل ہیں۔ جاوا اسکرپٹ اور ٹائپ اسکرپٹ رن ٹائم ڈینو ٹوکیو کو ہڈ کے نیچے استعمال کرتا ہے، جاوا اسکرپٹ رن ٹائم Node.js کے مقابلے میں، جو لبیو لائبریری استعمال کرتا ہے۔ خصوصیات اسنکرونس کوڈ ٹوکیو ایک اسنکرونس رن ٹائم کی تخلیق کے ذریعے زنگ میں اسنکرونس افعال کے استعمال کی اجازت دیتا ہے۔ یہ #[ٹوکیو:: مین] میکرو کے ذریعے پورا کیا جا سکتا ہے۔ مثال کے طور پر: #[ٹوکیو:: مین] اسنک ایف این مین ()-> نتیجہ <()> {یو آر ایل = "https://en.wikipedia.org" ؛ ٹیکسٹ = ریکویسٹ:: حاصل کریں (یو آر ایل). انتظار کریں؟. ٹیکسٹ (). انتظار کریں؟ پرنٹلن! ("{}"، متن) ؛ اوکے (())} اس مثال میں، ریکوویسٹ کریٹ کا استعمال انگریزی ویکیپیڈیا کے لیے ہائپر ٹیکسٹ مارک اپ لینگویج (ایچ ٹی ایم ایل) کی درخواست کرنے کے لیے کیا جاتا ہے۔ اس بات کو یقینی بنانے کے لیے کہ درخواست کو فوری طور پر ہینڈل نہیں کیا گیا ہے، ٹوکیو فنکشن کال کو غیر متزلزل رن ٹائم میں لپیٹ دیتا ہے، پرنٹ ایل این () پر کال کرنے سے پہلے درخواست کے مکمل ہونے کا انتظار کرتا ہے۔ ٹوکیو میں رسٹ اسٹینڈرڈ لائبریری کا ایک ورژن بھی شامل ہے جسے غیر متزلزل طور پر استعمال کرنے کے لیے ڈیزائن کیا گیا ہے۔ مثال کے طور پر، ٹوکیو:: ایف ایس:: ریڈ _ ٹو _ اینڈ ()، جو کسی فائل کے مندرجات کو پڑھتا ہے، ایس ٹی ڈی:: ایف ایس:: ریڈ _ ٹو _ اینڈ () کا غیر متزلزل ورژن ہے۔ اس کے علاوہ، ٹوکیو ٹوکیو-یورنگ نامی ایک علیحدہ کریٹ میں، ایک لینکس اسنکرونس I/O سسکل انٹرفیس، io _ uaring کی حمایت کرتا ہے۔ کمپائل ٹائم گرین تھریڈنگ ٹوکیو مزید صارفین کو ٹوکیو:: اسپان () فنکشن کا استعمال کرتے ہوئے ٹاسک بنانے کی اجازت دیتا ہے، جو سبز دھاگے ہیں۔ سبز دھاگے صارف کی سطح پر چلتے ہیں، متوازی فراہم کرتے ہیں جب مقامی دھاگے ہمیشہ دستیاب نہیں ہوتے ہیں۔ رسٹ کے پچھلے ورژنوں نے گرین تھریڈنگ کو نافذ کیا۔ اس فعالیت کو رسٹ 1 میں ہٹا دیا گیا تھا۔ فیوچر کے برعکس، ٹاسکس کو. آوائٹ استعمال کرنے کی ضرورت نہیں ہے، کیونکہ تھریڈ دستیاب ہونے پر ٹاسک خود بخود انجام پا جائے گا۔ ساکٹ سننے والا ٹوکیو نان بلاکنگ اپروچ کے ذریعے ساکٹ پر سننے کی صلاحیت رکھتا ہے۔ خاص طور پر، ٹی سی پی لسٹنر ڈھانچہ ٹرانسمیشن کنٹرول پروٹوکول (ٹی سی پی) ساکٹ سننے والے کو ایڈریس سے جوڑتا ہے اور غیر متزلزل طور پر فنکشن کو انجام دیتا ہے۔ براڈکاسٹنگ ٹوکیو ایک نشریاتی چینل کی قسم فراہم کرتا ہے، جس سے پیغامات کو متعدد وصول کنندگان تک نشر کیا جا سکتا ہے۔ پیغام بھیجنے پر، اس طرح کے وصول کنندگان اسے وصول کرتے ہیں۔ یہ دیگر ایپلی کیشنز کے درمیان ریئل ٹائم مواصلات اور تقسیم شدہ نظام کو قابل بناتا ہے۔ حوالہ جات ٹوکیو کو crates.io 2020 سافٹ ویئر پر بیرونی روابط ایم آئی ٹی لائسنس کا استعمال کرتے ہوئے رسٹ فری کمپیوٹر لائبریری سافٹ ویئر میں پروگرام کردہ مفت سافٹ ویئر