کامپایل برای پلتفرمهای هدف مختلف با استفاده از LLVM پیادهسازی میشود و کتابخانههای مورد استفاده در جعبه ابزار اصلی پروژه Go برای پشتیبانی از زبان استفاده میشوند. برنامه کامپایل شده را می توان مستقیماً روی میکروکنترلرها اجرا کرد و به Go اجازه می دهد تا به عنوان زبانی برای نوشتن اسکریپت های اتوماسیون استفاده شود.
انگیزه ایجاد یک پروژه جدید تمایل به استفاده از زبان آشنای Go در دستگاه های فشرده بود - توسعه دهندگان استدلال کردند که اگر نسخه پایتون برای میکروکنترلرها وجود دارد، پس چرا مشابه آن را برای زبان Go ایجاد نکنید. برو
در شکل فعلی، 15 مدل میکروکنترلر پشتیبانی میشود، از جمله بردهای مختلف Adafruit، Arduino، BBC micro:bit، ST Micro، Digispark، Nordic Semiconductor، Makerdiary و Phytec. برنامه ها همچنین می توانند برای اجرا در یک مرورگر در قالب WebAssembly و به عنوان فایل های اجرایی برای لینوکس کامپایل شوند. از کنترلرهای ESP8266/ESP32 پشتیبانی می کند
اهداف کلیدی پروژه:
پشتیبانی از سیستم های چند هسته ای جزو اهداف اصلی نیست،
راه اندازی کارآمد تعداد زیادی کوروتین (راه اندازی خود کوروتین ها به طور کامل پشتیبانی می شود)، دستیابی به سطح عملکرد کامپایلر مرجع gc (بهینه سازی به LLVM واگذار شده است و در برخی از برنامه ها ممکن است Tinygo سریعتر از gc باشد) و کامل
تفاوت اصلی با یک کامپایلر مشابه
از جمله تغییرات نسخه 0.7 می توان به اجرای فرمان "Tinygo test"، ارائه پشتیبانی جمع آوری زباله برای اکثر بردهای هدف (بر اساس ARM Cortex-M) و WebAssembly، پشتیبانی از برد HiFive1 rev B بر اساس RISC- اشاره کرد. معماری V و برد آردوینو nano33،
پشتیبانی از زبان بهبود یافته (پشتیبانی از فیلدهای بیت با استفاده از گیرنده ها و تنظیم کننده ها، پشتیبانی از ساختارهای ناشناس).
منبع: opennet.ru