使用LLVM实现对各种目标平台的编译,并使用Go项目的主工具包中使用的库来支持该语言。 编译后的程序可以直接在微控制器上运行,使得Go可以用作编写自动化脚本的语言。
创建新项目的动机是希望在紧凑型设备上使用熟悉的 Go 语言 - 开发人员推断,如果有用于微控制器的 Python 版本,那么为什么不为 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 提供垃圾收集支持、对基于 RISC- 的 HiFive1 rev B 板的支持V 架构和 Arduino nano33 板,
改进的语言支持(支持使用 getter 和 setter 的位字段,支持匿名结构)。
来源: opennet.ru