Компіляція для різних цільових платформ реалізована за допомогою LLVM, а для підтримки мови використовуються бібліотеки, які застосовуються в основному інструментарії від проекту Go. Скомпільована програма може запускатися безпосередньо на мікроконтролерах, дозволяючи застосовувати Go в якості мови для написання сценаріїв автоматизації.
Мотивом створення нового проекту стало бажання використовувати звичну для себе мову Go на компактних пристроях — розробники розсудили, що якщо існує варіант Python для мікроконтролерів, то чому б не створити таке для мови Go. Go
У поточному вигляді підтримується 15 моделей мікроконтролерів, включаючи різні плати Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary та Phytec. Програми також можуть бути зібрані для запуску в браузері у форматі WebAssembly та у вигляді файлів, що виконуються для Linux. Підтримки контролерів ESP8266/ESP32
Ключові цілі проекту:
Не входить до основних цілей підтримка багатоядерних систем,
ефективний запуск величезної кількості співпрограм (сам по собі запуск співпрограм підтримується повною мірою), досягнення рівня продуктивності еталонного компілятора gc (оптимізація віддається на відкуп LLVM і в деяких застосуваннях Tinygo може виявитися швидше gc) та повна
Основною відмінністю від схожого компілятора
Зі змін у випуску 0.7 відзначається реалізація команди «tinygo test», забезпечення підтримки складання сміття для більшості цільових плат (на базі ARM Cortex-M) та WebAssembly, підтримка плати HiFive1 rev B на основі архітектури RISC-V та плати Arduino nano33,
покращення підтримки мови (підтримка бітових полів з використанням гетерів та сеттерів, підтримка анонімних структур).
Джерело: opennet.ru