إصدار Tinygo 0.7.0 ، مترجم Go القائم على LLVM

متاح إطلاق المشروع تينجو 0.7.0، التي تعمل على تطوير مترجم لغة Go للمجالات التي تتطلب تمثيلًا مضغوطًا للتعليمات البرمجية الناتجة واستهلاكًا منخفضًا للموارد، مثل وحدات التحكم الدقيقة وأنظمة المعالج الفردي المدمجة. شفرة وزعت من خلال تحت رخصة BSD.

يتم تنفيذ التجميع لمختلف الأنظمة الأساسية المستهدفة باستخدام LLVM، ويتم استخدام المكتبات المستخدمة في مجموعة الأدوات الرئيسية من مشروع Go لدعم اللغة. يمكن تشغيل البرنامج المترجم مباشرة على وحدات التحكم الدقيقة، مما يسمح باستخدام لغة Go كلغة لكتابة البرامج النصية للأتمتة.

كان الدافع وراء إنشاء مشروع جديد هو الرغبة في استخدام لغة Go المألوفة على الأجهزة المدمجة - وقد استنتج المطورون أنه إذا كان هناك إصدار Python لوحدات التحكم الدقيقة، فلماذا لا يتم إنشاء نسخة مماثلة للغة Go. يذهب المحدد بدلاً من Rust لأنه أسهل في التعلم، ويوفر دعمًا مستقلاً للخيط للموازاة القائمة على coroutine، ويوفر مكتبة قياسية واسعة النطاق ("البطاريات متضمنة").

في شكله الحالي، يتم دعم 15 نموذجًا من وحدات التحكم الدقيقة، بما في ذلك لوحات مختلفة من Adafruit وArduino وBBC micro:bit وST Micro وDigispark وNordic Semiconductor وMakerdiary وPhytec. يمكن أيضًا تجميع البرامج لتشغيلها في متصفح بتنسيق WebAssembly وكملفات قابلة للتنفيذ لنظام التشغيل Linux. يدعم وحدات التحكم ESP8266/ESP32 ليس بعد، ولكن يجري تطوير مشروع منفصل لإضافة دعم لشريحة Xtensa في LLVM، والتي لا تزال مصنفة على أنها غير مستقرة وغير جاهزة للتكامل مع TinyGo.

الأهداف الرئيسية للمشروع:

  • إنشاء ملفات قابلة للتنفيذ مدمجة للغاية؛
  • دعم النماذج الأكثر شيوعاً من لوحات التحكم الدقيقة؛
  • إمكانية التطبيق للويب.
  • دعم CGo بأقل قدر من الحمل عند استدعاء الوظائف في لغة C؛
  • دعم معظم الحزم القياسية والقدرة على تجميع التعليمات البرمجية العامة الحالية دون تغييرها.

    دعم الأنظمة متعددة النواة ليس من بين الأهداف الرئيسية،
    الإطلاق الفعال لعدد كبير من coroutines (يتم دعم إطلاق coroutines نفسه بشكل كامل)، وتحقيق مستوى أداء المترجم المرجعي gc (يتم ترك التحسين لـ LLVM وفي بعض التطبيقات قد يكون Tinygo أسرع من gc) وإكمال التوافق مع جميع تطبيقات Go.

    الفرق الرئيسي من مترجم مماثل emgo هي محاولة للحفاظ على نموذج إدارة الذاكرة الأصلي لـ Go باستخدام جمع البيانات المهملة واستخدام LLVM لإنشاء تعليمات برمجية فعالة بدلاً من تجميعها إلى تمثيل C. تقدم Tinygo أيضًا مكتبة وقت تشغيل جديدة تقوم بتنفيذ جدولة ونظام تخصيص الذاكرة ومعالجات سلسلة محسنة للأنظمة المدمجة. تمت إعادة إنشاء بعض الحزم، مثل المزامنة والانعكاس، استنادًا إلى وقت التشغيل الجديد.

    من بين التغييرات في الإصدار 0.7 تنفيذ أمر "tinygo test"، وتوفير دعم جمع البيانات المهملة لمعظم اللوحات المستهدفة (استنادًا إلى ARM Cortex-M) وWebAssembly، ودعم لوحة HiFive1 rev B استنادًا إلى RISC- بنية V ولوحة Arduino nano33،
    تحسين دعم اللغة (دعم حقول البت باستخدام الحروف والمحددات، ودعم الهياكل المجهولة).

    المصدر: opennet.ru

  • شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster