TinyGo是一个适用于小型环境(如微控制器、WebAssembly (Wasm) 和命令行工具)的Go编译器。它重用Go语言工具库和LLVM,提供另一种编译Go程序的方式,旨在生成小型二进制文件并支持资源受限的设备。
gc一样快(但LLVM可能在某些优化上更优,如数值计算)TinyGo可编译程序至微控制器、WebAssembly和Linux。目前支持以下62种微控制器板:
更多信息请参见支持的开发板列表。欢迎提交拉取请求以支持更多开发板!
有关安装TinyGo以及使用Docker容器运行TinyGo编译器的信息,请参见入门指南。
以下是一个控制内置LED闪烁的示例程序,可直接在任何支持的带内置LED的开发板上运行:
gopackage main import ( "machine" "time" ) func main() { led := machine.LED led.Configure(machine.PinConfig{Mode: machine.PinOutput}) for { led.Low() time.Sleep(time.Millisecond * 1000) led.High() time.Sleep(time.Millisecond * 1000) } }
上述程序无需修改即可在Arduino Uno、Adafruit ItsyBitsy M0或任何其他支持的带内置LED的开发板上编译和运行,只需设置正确的TinyGo编译器目标。例如,编译并烧录到Arduino Uno:
shelltinygo flash -target arduino examples/blinky1
有关当前支持的Go语言特性的描述,请参见语言支持。
文档位于网站:[]
网站代码托管在[***]
如果您需要更互动的方式讨论TinyGo的使用或开发,可加入Gophers Slack上的#TinyGo频道。
如需Gophers Slack邀请,可通过此处生成,通常会很快(1分钟内)收到。
欢迎您的贡献!
详情请参见CONTRIBUTING.md文档。
我们从未期望Go成为嵌入式语言,因此它存在一些严重问题……
—— Rob Pike,GopherCon 2014开幕主题演讲
TinyGo旨在将Go引入微控制器和单处理器核心的小型系统。它与emgo类似,但主要区别在于TinyGo希望保留Go内存模型(这意味着需要某种垃圾回收)。另一个区别是TinyGo内部使用LLVM而非生成C代码,这有望生成更小、更高效的代码,并提供更大的灵活性。
最初的想法是:如果Python可以在微控制器上运行,那么Go当然也能在更低级的微控制器上运行。
本项目采用BSD 3条款许可证,与Go项目相同。
部分代码从LLVM项目复制而来,因此采用Apache 2.0许可证变体。这些文件的头部已明确注明。
部分代码从Paul Stoffregen的Teensy库复制和/或移植而来,因此采用PJRC许可证。这些文件的头部已明确注明。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429