GNU Guile
جی این یو یوبیکیوٹس انٹیلیجنٹ لینگویج فار ایکسٹینشنز (جی این یو گیل) جی این یو پروجیکٹ کے لیے ترجیحی توسیعی زبان کا نظام ہے اور پروگرامنگ زبان اسکیم کے نفاذ کی خصوصیات رکھتا ہے۔ اس کا پہلا ورژن 1993 میں جاری کیا گیا تھا۔ اسکیم کے معیارات کے بڑے حصوں کے علاوہ، گائل اسکیم میں بہت سے مختلف پروگرامنگ کاموں کے لیے ماڈیولرائزڈ ایکسٹینشنز شامل ہیں۔ پروگراموں کی توسیع کے لیے، گائل لبگائل پیش کرتا ہے جو زبان کو دوسرے پروگراموں میں سرایت کرنے کی اجازت دیتا ہے، اور سی لینگویج ایپلی کیشن پروگرامنگ انٹرفیس (اے پی آئی) کے ذریعے قریب سے مربوط ہوتا ہے ؛ اسی طرح، سی اے پی آئی کے ذریعے بیان کردہ ڈیٹا کی نئی اقسام اور سبروٹینز کو گائل کے لیے ایکسٹینشن کے طور پر دستیاب کیا جا سکتا ہے۔ گائل کا استعمال گنو کیش، للی پونڈ، گنو ڈیبگر، گنو گکس، گنو میک، گنو ٹیکسمکس اور گوگل کے شزم جیسے پروگراموں میں کیا جاتا ہے۔ گائل اسکیم ایک عام مقصد، اعلی سطحی پروگرامنگ زبان ہے جس کی لچک سی جیسی زبانوں میں ممکن ہونے سے کم کوڈ کی لائنوں میں تصورات کا اظہار کرنے کی اجازت دیتی ہے۔ مثال کے طور پر، اس کا حفظان صحت میکرو سسٹم گائل میں ترمیم کیے بغیر ڈومین مخصوص نحو عناصر کو شامل کرنے کی اجازت دیتا ہے۔ گائل اسکیم کے معیاری آر 5 آر ایس، زیادہ تر آر 6 آر ایس اور آر 7 آر ایس، نفاذ کے لیے کئی اسکیم کی درخواستیں (ایس آر ایف آئی)، اور اپنی بہت سی توسیعات کو نافذ کرتا ہے۔ گائل اسکیم کا بنیادی خیال یہ ہے کہ "ڈویلپر سی یا سی + + میں اہم الگورتھم اور ڈیٹا ڈھانچے کو نافذ کرتا ہے اور تشریح شدہ کوڈ کے ذریعے استعمال کے لیے افعال اور اقسام کو برآمد کرتا ہے۔ ایپلی کیشن مترجم کے ذریعہ ترتیب دی گئی ابتدائی چیزوں کی لائبریری بن جاتی ہے، جو مرتب شدہ کوڈ کی کارکردگی کو تشریح کی لچک کے ساتھ جوڑتی ہے۔ اس طرح گائل اسکیم (اور گائل کے ذریعے نافذ کردہ دیگر زبانوں) کو سی اے پی آئی کے ذریعے نافذ کردہ نئے ڈیٹا ٹائپز اور سبروٹائنز کے ساتھ بڑھایا جا سکتا ہے۔ معیاری تقسیم پورٹیبل آپریٹنگ سسٹم انٹرفیس (پوزیکس) سسٹم کالز، شیڈولنگ، ایک غیر ملکی فنکشن انٹرفیس، ایس ایکس ایم ایل، ایس ایکس پیتھ، اور ایس ایکس ایس ایل ٹی، ایچ ٹی ٹی پی اور دیگر ورلڈ وائڈ ویب اے پی آئی کے ذریعے ایس-ایکسپریشن پر مبنی ایکس ایم ایل پروسیسنگ، حد بند تسلسل، صف پروگرامنگ، اور دیگر فعالیت کے لیے ماڈیول پیش کرتی ہے۔ گائل پروگرام ایس ایل آئی بی، پورٹیبل اسکیم لائبریری سے سہولیات کا استعمال کر سکتے ہیں۔ عمل درآمد کی تفصیلات کال/سی سی کے ساتھ تسلسل کا استعمال کرتے وقت، اسکیم کے معیار کی ایک ضرورت، گیل عمل درآمد کے اسٹیک کو ڈھیر میں اور پیچھے کاپی کرتا ہے۔ اس کا دستی تجویز کرتا ہے کہ اس کے بجائے حد بند تسلسل کا استعمال کیا جائے، کیونکہ ان کا نفاذ زیادہ موثر ہے۔ چونکہ غیر ملکی کوڈ میں اسکیم آبجیکٹ کے لیے اشارے ہو سکتے ہیں، اس لیے گیل قدامت پسند بوہم-ڈیمرز-ویزر (بی ڈی ڈبلیو) کچرا جمع کرنے والے کا استعمال کرتا ہے۔ گائیلی دستی زبان کے آغاز اور ابتدائی تاریخ کی تفصیلات فراہم کرتا ہے۔ ایک مختصر خلاصہ مندرجہ ذیل ہے: مفت سافٹ ویئر کمیونٹی میں ایمیکس کی کامیابی کے بعد، اس کی توسیع (اور جزوی طور پر عمل درآمد) زبان ایمیکس لیسپ کے ذریعے ایک انتہائی توسیع پذیر اور حسب ضرورت ایپلی کیشن کے طور پر، کمیونٹی نے اس بات پر غور کرنا شروع کیا کہ یہ ڈیزائن حکمت عملی باقی جی این یو سسٹم پر کیسے لاگو ہوسکتی ہے۔ ٹام لارڈ نے ابتدائی طور پر جی این یو ایکسٹینشن لینگویج (جی ای ایل) کے نام سے ایک سرایت شدہ زبان کے رن ٹائم پر کام شروع کیا، جو آبری جعفر کی اسکیم کے نفاذ ایس سی ایم پر مبنی تھا (جو بدلے میں جارج کیریٹ کے ایس آئی او ڈی پر مبنی تھا)۔ لارڈ نے رچرڈ اسٹالمین کو جی ای ایل کو جی این یو پروجیکٹ کی سرکاری توسیعی زبان بنانے کے لیے راضی کیا، اس دلیل کی بنیاد پر کہ اسکیم ایمیکس لیسپ کے مقابلے میں ایک صاف لیسپ بولی تھی، اور یہ کہ جی ای ایل اسی رن ٹائم پر دوسری زبانوں، یعنی ایمیکس لیسپ کو نافذ کرنے کے لیے تیار ہو سکتی ہے۔ جب لارڈ نے دریافت کیا کہ جی ای ایل کا ایک اور پروگرامنگ زبان کے ساتھ نام کا تنازعہ ہے، تو اس نے ایک نئے نام کے لیے تجاویز طلب کیں۔ کئی یوزنیٹ نیوز گروپوں میں کئی شراکتوں سے، لارڈ نے متنازعہ طور پر لی تھامس کی تجویز میں سے گیل کا انتخاب کیا۔ گیل (اس وقت جی ای ایل) کی ترقی کے دوران اور اس کی عوامی ریلیز سے پہلے، توسیعی زبان ٹی سی ایل مقبولیت حاصل کر رہی تھی اور اسے عالمگیر توسیعی زبان کے طور پر آگے بڑھایا جا رہا تھا۔ اسٹالمین نے ٹی سی ایل کو ایک توسیعی زبان کے طور پر کم طاقت کے طور پر دیکھا، اور comp.lang.tcl نیوز گروپ پر تنقید پوسٹ کی، جس نے "ٹی سی ایل وار" کے نام سے مشہور ایک شعلہ جنگ کا آغاز کیا۔ چونکہ گیل منصوبے کا عوامی اعلان ٹی سی ایل بحث کے ساتھ ہوا، یہ ایک عام غلط فہمی بن گئی ہے کہ گیل نے اس کے رد عمل کے طور پر آغاز کیا۔ گیل کی ابتدائی ریلیز کے بعد، ترقی کئی سالوں تک سست رہی، لیکن 2009-2010 میں بڑی بہتری دیکھی گئی، اور گیل 2. O کو 2011 میں ایک نئے مرتب کرنے والے بنیادی ڈھانچے، ایک ورچوئل مشین کے نفاذ، بوہم-ڈیمرز-ویزر کچرا جمع کرنے والے میں تبدیلی، گیل اسکیم کی زبان میں بہت سی بہتری، اور دیگر بڑی تبدیلیوں کے ساتھ جاری کیا گیا۔ گائل کے مقاصد میں سے ایک اسکیم کے ساتھ ساتھ دوسری زبانوں کو استعمال کرنے کی اجازت دینا ہے، تاکہ گائل مؤثر طریقے سے زبان غیر جانبدار رن ٹائم ماحول ہو۔ ماضی کے ورژنوں میں اس پر مختلف کوششیں کی گئی ہیں: اسکیم کی ایک بولی بنیادی طور پر صرف اس کے سی نما نحو میں مختلف ہے، ایمیکس لیسپ کا ترجمہ، ٹی کے ڈبلیو ڈبلیو ڈبلیو سے متاثر ایک ٹی سی ایل کنورٹر، اور تقریبا زبان کے لوگو سے مشابہت رکھتا ہے۔ ورژن 2 کے ساتھ، پروجیکٹ نے کامیابی کے ساتھ ایک مرتب ٹاور کے نقطہ نظر میں تبدیلی کی، جس سے مرتب کرنے والوں کی تعریف ایک زبان سے دوسری زبان میں، عام طور پر اعلی سطح سے نچلے درجے کی انٹرمیڈیٹ نمائندگی، اور بالآخر ورچوئل مشین بائٹ کوڈ یا مقامی مشین کوڈ کی اجازت دی گئی۔ 16 مارچ 2017 کو، گائل 2.2.0 کو ایک نئے بہتر بنانے والے مرتب اور اعلی کارکردگی والی رجسٹر ورچوئل مشین کے ساتھ جاری کیا گیا۔ اینڈی ونگو کے ریلیز کے اعلان کے مطابق، حقیقی دنیا کے پروگراموں میں اکثر پچھلی 2.0 سیریز کے مقابلے میں گیل 2.2 کے ساتھ 30 فیصد یا اس سے زیادہ کی رفتار دکھائی جاتی ہے۔ گائل 2.2 نے میموری کے استعمال کو بھی کم کیا، "ایول" انٹرپریٹر کو تیز کیا، ملٹی کور پروگرامنگ کے لیے بہتر سپورٹ فراہم کی، اور ریکرسو فنکشن کالز پر کسی بھی مقررہ حد کو ہٹا دیا۔ اس نے یوزر اسپیس کنکرنسی سہولیات کی تخلیق کی بھی حمایت کی جو لاکھوں بیک وقت ہلکے وزن والے "فائبر" کو ملٹی پلیکس کرتی ہیں اور ایلیسپ کی تمام خصوصیات اور نرخوں کو ایمیکس کی طرح نافذ کرتے ہوئے ایک مکمل ایمیکس ہم آہنگ ایلیسپ نفاذ فراہم کرتی ہیں۔ 16 جنوری 2020 کو، گائل 3.0 کو بہت زیادہ کارکردگی کے لیے جسٹ ان ٹائم (جے آئی ٹی) مقامی کوڈ جنریشن کے ساتھ جاری کیا گیا۔ 2. 2 کے مقابلے میں، مائیکرو بینچ مارک کی کارکردگی مجموعی طور پر تقریبا دگنی اچھی ہوتی ہے، جبکہ کچھ انفرادی معیارات 32 گنا تک تیز ہوتے ہیں۔ اس میں لفظی سیاق و سباق میں باہمی تعریفیں اور تاثرات کی حمایت، منظم مستثنیات کے لیے مقامی حمایت، آر 6 آر ایس اور آر 7 آر ایس اسکیم کے معیارات کے لیے بہتر حمایت اور بہت سی اصلاحات بھی شامل تھیں۔ ایمیکس انضمام ماضی میں ایمیکس کی ایمیکس لیسپ (ایلیسپ) توسیعی زبان کو گیل کے ساتھ تبدیل کرنے یا اس کی تکمیل کرنے کی کئی نامکمل کوششیں کی گئی ہیں، جو گیل میں دوسری زبانوں کی حمایت کرنے کی کوششوں کے متوازی ہیں۔ گیل کے ورژن 2 کے ساتھ، گیل مرتب کرنے والے ٹاور پر ایلسپ کو نافذ کرنے اور ایمیکس کے ایلسپ کے نفاذ کو لبگائل کے ساتھ تبدیل کرنے کی ایک نئی کوشش شروع ہوئی ہے اور گوگل سمر آف کوڈ پروجیکٹس کے ذریعے نمایاں پیش رفت ہوئی ہے۔ گائل پر مبنی ای ایم اے سی ای ایم اے سی ایس لیسپ کے لیے بہتر کارکردگی پیش کر سکتا ہے، ای ایم اے سی ایس لیسپ زبان کی نئی خصوصیات کو زیادہ آسانی سے سپورٹ کر سکتا ہے، ای ایم اے سی ایس لیسپ کوڈ کے لیے دیگر پروگرامنگ زبانوں میں لکھی گئی گائل لائبریریوں کو دستیاب کر سکتا ہے، اور گائل کی حمایت یافتہ دیگر پروگرامنگ زبانوں میں ای ایم اے سی ایس ایکسٹینشنز لکھنے کی اجازت دے سکتا ہے، جبکہ موجودہ ای ایم اے سی ایس لیسپ کوڈ بیس کے ساتھ مکمل طور پر بیک ورڈ مطابقت رکھتا ہے۔ نفاذ ایک ایسے مرحلے پر پہنچ گیا تھا جہاں گیل ایمیکس زیادہ تر ایمیکس لیسپ کوڈ کو قابل اعتماد طریقے سے چلانے کے قابل ہے۔ بقیہ مسائل یا ممکنہ مسائل میں اسکیم سٹرنگز سے ایمیکس لیسپ سٹرنگز کی مختلف اندرونی نمائندگی، ایمیکس لیسپ اور اسکیم کے درمیان فرق بولین غلط اور خالی فہرست اشیاء کے ساتھ کس طرح سلوک کرتے ہیں، ایمیکس لیسپ میکرو اسکیم کے ساتھ مربوط نہیں ہوتے ہیں، ایمیکس لیسپ کو ہم آہنگی کے لیے ڈیزائن نہیں کیا گیا ہے، اور ایمیکس کے تعاون یافتہ پلیٹ فارمز پر گیل کی پورٹیبلٹی شامل ہیں۔ ایماکس کمیونٹی کی طرف سے اٹھائے گئے دیگر خدشات میں ایماکس اور گیل کمیونٹیز کے نسبتا سائز شامل ہیں، اور کیا یہ کمیونٹی میں تقسیم کا سبب بنے گا اگر ایماکس کو ایماکس لیسپ کے علاوہ دیگر پروگرامنگ زبانوں میں توسیع دی جائے۔ جی این یو میک انٹیگریشن جی این یو میک کو ایک سرایت شدہ توسیعی زبان کے طور پر جی این یو گیل کی حمایت کے ساتھ بنایا جا سکتا ہے۔ مزید پڑھنے والے حوالہ جات "این اناٹومی آف گائل، دی انٹرفیس ٹو ٹی سی ایل/ٹی کے" (1995) بیرونی لنکس گائل ریفرنس دستی ایک، طویل ویب پیج سورس کوڈ میں جی این یو سوانا سافٹ ویئر پر جعلی کیا ہے؟ "دغابازی کی ایک مختصر تاریخ" (گائل دستی سے) 2003 میں جی این یو گائل کی دیکھ بھال کرنے والے ماریس وولمر کے ساتھ ایک انٹرویو مفت مرتب کرنے والے اور ترجمان جی این یو پروجیکٹ Lisp پروگرامنگ زبان کے نفاذ کی اسکیم (پروگرامنگ زبان) اسکیم (پروگرامنگ زبان) نفاذ کی اسکیم (پروگرامنگ زبان) ترجمان اسکرپٹنگ لینگویجز سافٹ ویئر جی پی ایل سے منسلک استثناء کا استعمال کرتے ہوئے