这个项目能做什么
TinyGo为用Go编写的程序提供了一种替代编译工具链。它将Go语言工具中的库与LLVM相结合,针对二进制大小、部署环境或硬件限制使标准编译器不太适用的使用场景。
对于嵌入式开发,TinyGo包含一个用于硬件访问的`machine`包,并可通过选择目标(如Arduino Uno、Adafruit Circuit Playground Express或Seeed Studio XIAO-ESP32S3)将同一程序编译并烧录到支持的微控制器板上。该项目列出了对超过150块微控制器板的支持。
对于WebAssembly,TinyGo可以构建面向浏览器的WASM模块以及用于服务器、边缘环境和主机(如Fastly Compute、Fermyon Spin和wazero)的WASI程序。它支持WASI Preview 1目标和导出的WASM函数。
它还可以为Linux、macOS和Windows构建命令行程序。安装选项包括原生安装和Docker容器,TinyGo网站上发布了文档和入门材料。
该项目的既定目标包括小型二进制文件、广泛的微控制器支持、WebAssembly可用性、高效的CGo互操作性,以及与常见标准库包的兼容性,以便许多Go程序无需修改即可编译。它并不旨在编译每个Go程序、在每个性能场景下匹配标准`gc`编译器,或主要针对极大量goroutine进行优化。
TinyGo主要根据BSD 3-clause许可证授权。一些导入的LLVM代码使用Apache 2.0变体,源自Teensy库的代码使用PJRC的许可证,如相关文件头所示。社区支持可通过Gophers Slack #TinyGo频道获得,贡献在项目网站上有文档说明。
评论
0 评分人数达到10人后显示
登录后参与讨论。