مترجم لغة Tinygo a Go يعتمد على LLVM

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

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

حول Tinygo

كان سبب إنشاء مشروع TinyGO هو الرغبة في استخدام لغة Go الشائعة في الأجهزة المدمجة- استنتج المطورون أنه إذا كان هناك إصدار من Python للميكروكونترولر ، فلماذا لا ننشئ نسخة مماثلة للغة Go؟

تم تحديد Go بدلاً من Rust لأنه من الأسهل التعلم ، يوفر دعمًا قائمًا على التمويج لدعم مستقل عن الخيط ويوفر مكتبة قياسية شاملة ("البطاريات مضمنة").

في الشكل الحالي ، يتم دعم 15 نموذجًا من وحدات التحكم الدقيقة ، بما في ذلك لوحات Adafruit و Arduino و BBC micro و bit و ST Micro و Digispark و Nordic Semiconductor و Makerdiary و Phytec.

يمكن أيضًا إنشاء البرامج للتشغيل في متصفح بتنسيق إصدار الويب وكملفات قابلة للتنفيذ لنظام التشغيل Linux.

لا يوجد دعم لوحدات التحكم ESP8266 / ESP32 حتى الآن ، ولكن هناك مشروع قيد التطوير لإضافة دعم لشريحة Xtensa في LLVM ، والتي لا تزال تحمل علامة غير مستقرة وغير جاهزة لتكامل TinyGo.

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

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

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

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

تقدم Tinygo أيضًا مكتبة وقت تشغيل جديدة تنفذ جدولة مُحسّنة للأنظمة المدمجة.، نظام تخصيص الذاكرة ووحدات التحكم في السلسلة. بناءً على وقت التشغيل الجديد ، تم إعادة إنشاء بعض الحزم ، مثل المزامنة والنسخ المتطابق.

حول الإصدار 0.7 من Tinygo

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

كيفية تثبيت Tinygo على Ubuntu ومشتقاته؟

بالنسبة لأولئك المهتمين بالقدرة على تثبيت Tinygo على Debian و Raspbian و Ubuntu والمشتقات. يجب أن يفتحوا محطة وفيها سنقوم بتنفيذ الأمر التالي:

wget https://github.com/tinygo-org/tinygo/releases/download/v0.7.0/tinygo_0.7.0_amd64.deb

sudo dpkg -i tinygo_0.7.0_amd64.deb

للحالة الخاصة لأنظمة أجهزة ARM (إصدارات Raspbian و Ubuntu)

سنقوم بكتابة ما يلي:

wget https://github.com/tinygo-org/tinygo/releases/download/v0.7.0/tinygo_0.7.0_armhf.deb

sudo dpkg -i tinygo_0.7.0_armhf.deb

بعد الانتهاء من التثبيت ، يجب عليهم التأكد من أن مسار tinygo في مسارهم.

export PATH=$PATH:/usr/local/tinygo/bin

أخيرًا ، للتحقق من التثبيت ، سنقوم بكتابة الأمر التالي:

tinygo versión

ويجب أن يرمينا بشيء من هذا القبيل

tinygo version 0.7.0 linux/amd64

لمعرفة المزيد حول هذا الموضوع يمكنك استشارة الرابط التالي. 


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.