Tinygo 0.7.0 کی ریلیز، LLVM پر مبنی Go کمپائلر

دستیاب منصوبے کی رہائی Tinygo 0.7.0، جو ان علاقوں کے لیے گو لینگوئج کمپائلر تیار کر رہا ہے جہاں نتیجے میں آنے والے کوڈ کی کمپیکٹ نمائندگی اور کم وسائل کی کھپت کی ضرورت ہوتی ہے، جیسے مائیکرو کنٹرولرز اور کمپیکٹ سنگل پروسیسر سسٹم۔ کوڈ نے بانٹا BSD لائسنس کے تحت۔

مختلف ٹارگٹ پلیٹ فارمز کے لیے تالیف LLVM کا استعمال کرتے ہوئے لاگو کی جاتی ہے، اور زبان کی معاونت بنیادی طور پر گو پروجیکٹ کے ٹول چین میں استعمال ہونے والی لائبریریوں کے ذریعے فراہم کی جاتی ہے۔ مرتب کردہ پروگرام براہ راست مائیکرو کنٹرولرز پر چل سکتا ہے، جس سے گو کو آٹومیشن اسکرپٹ لکھنے کے لیے بطور زبان استعمال کیا جا سکتا ہے۔

نئے پروجیکٹ کو بنانے کا محرک کمپیکٹ ڈیوائسز پر مانوس گو لینگویج استعمال کرنے کی خواہش تھی - ڈویلپرز نے استدلال کیا کہ اگر مائیکرو کنٹرولرز کے لیے Python ورژن موجود ہے، تو پھر گو زبان کے لیے کچھ ایسا ہی کیوں نہ بنایا جائے۔ منتخب شدہ Rust کے بجائے کیونکہ یہ سیکھنا آسان ہے، کورٹین پر مبنی ہم آہنگی کے لیے تھریڈ-ایگنوسٹک سپورٹ فراہم کرتا ہے، اور ایک جامع معیاری لائبریری پیش کرتا ہے ("بیٹریاں شامل")۔

فی الحال، 15 مائیکرو کنٹرولر ماڈلز سپورٹ ہیں، بشمول Adafruit، Arduino، BBC micro:bit، ST Micro، Digispark، Nordic Semiconductor، Makerdiary، اور Phytec کے مختلف بورڈز۔ ویب اسمبلی فارمیٹ میں اور لینکس ایگزیکیوٹیبل کے طور پر براؤزر کے عمل کے لیے بھی پروگرام مرتب کیے جا سکتے ہیں۔ ESP8266/ESP32 کنٹرولرز کے لیے سپورٹ ابھی تک نہیں۔، لیکن LLVM میں Xtensa چپ کے لیے سپورٹ شامل کرنے کے لیے ایک علیحدہ پروجیکٹ تیار کیا جا رہا ہے، جسے فی الحال غیر مستحکم کے طور پر نشان زد کیا گیا ہے اور TinyGo کے ساتھ انضمام کے لیے تیار نہیں ہے۔

منصوبے کے اہم مقاصد:

  • بہت کمپیکٹ قابل عمل فائلوں کی تخلیق؛
  • سب سے عام مائیکرو کنٹرولر بورڈ ماڈلز کے لیے سپورٹ؛
  • ویب کے لیے تیار؛
  • C فنکشنز کو کال کرتے وقت کم سے کم اوور ہیڈ کے ساتھ CGO سپورٹ؛
  • زیادہ تر معیاری پیکجوں کے لیے سپورٹ اور عام موجودہ کوڈ کو تبدیل کیے بغیر مرتب کرنے کی صلاحیت۔

    ملٹی کور سسٹمز کے لیے سپورٹ اہم مقاصد میں سے ایک نہیں ہے،
    بڑی تعداد میں کوروٹینز کا موثر لانچ (کوروٹائنز کا آغاز خود مکمل طور پر معاون ہے)، حوالہ جی سی کمپائلر کی کارکردگی کی سطح کو حاصل کرنا (اصلاح کو ایل ایل وی ایم پر چھوڑ دیا گیا ہے اور کچھ ایپلی کیشنز میں ٹینیگو جی سی سے تیز ہو سکتا ہے) اور مکمل مطابقت تمام گو ایپلی کیشنز کے ساتھ۔

    اسی طرح کے مرتب کرنے والے سے بنیادی فرق ایمگو Tinygo Go کے اصل کوڑے سے جمع کردہ میموری مینجمنٹ ماڈل کو محفوظ رکھنے کی کوشش کرتا ہے اور LLVM سے فائدہ اٹھاتا ہے تاکہ C نمائندگی کو مرتب کرنے کے بجائے موثر کوڈ تیار کیا جا سکے۔ Tinygo ایک نئی رن ٹائم لائبریری بھی پیش کرتا ہے جو ایک شیڈیولر، میموری ایلوکیشن سسٹم، اور سٹرنگ ہینڈلرز کو لاگو کرتا ہے جو کمپیکٹ سسٹمز کے لیے موزوں ہیں۔ نئے رن ٹائم کا استعمال کرتے ہوئے متعدد پیکیجز، جیسے کہ مطابقت پذیری اور عکاسی کو دوبارہ بنایا گیا ہے۔

    ریلیز 0.7 میں تبدیلیوں میں "tinygo test" کمانڈ کا نفاذ، زیادہ تر ٹارگٹ بورڈز (ARM Cortex-M کی بنیاد پر) اور WebAssembly کے لیے کوڑا کرکٹ جمع کرنے میں مدد، RISC-V فن تعمیر اور Arduino nano33 بورڈ پر مبنی HiFive1 rev B بورڈ کے لیے سپورٹ،
    بہتر لینگویج سپورٹ (گیٹرز اور سیٹرز کا استعمال کرتے ہوئے بٹ فیلڈز کے لیے سپورٹ، گمنام ڈھانچوں کے لیے سپورٹ)۔

    ماخذ: opennet.ru

  • نیا تبصرہ شامل کریں