发布Tinygo 0.32,一个基于LLVM的Go编译器

Tinygo 0.32 现已推出,为需要紧凑输出代码和低资源消耗的应用程序(例如微控制器和紧凑型单处理器系统)开发 Go 编译器。 使用LLVM实现对各种目标平台的编译,并使用Go项目的主工具包中使用的库来支持该语言。 该代码是在 BSD 许可证下分发的。

编译后的程序可以直接在微控制器上运行,使得Go可以用作编写自动化脚本的语言。目前支持一百多种型号的微控制器,包括各种 Adafruit、Arduino、BBC micro、ESP32、M5Stack、ST Micro、Digispark、Raspberry Pi Pico、Nordic Semiconductor、SiFive HiFive1、STM32、Makerdiary 和 Phytec 板。提供特殊驱动程序来与传感器和连接的外部设备交互,并支持 I2C、GPIO 和 SPI 等接口。

程序还可以编译成 WebAssembly 格式 (wasm/wasi),以便在浏览器中运行,并作为可执行文件运行。 Linux.

主要项目目标:

  • 能够在紧凑型设备上使用您熟悉的 Go 语言子集。 选择 Go 而不是 Rust,因为它更容易学习,为基于协程的并行化提供独立于线程的支持,并提供广泛的标准库(包括电池)。
  • 生成非常紧凑的可执行文件。
  • 支持最常见的微控制器板型号。
  • 能够将其用于 Web 并使用 WASI(WebAssembly 系统接口)接口创建独立的 WebAssembly 应用程序,以处理操作系统提供的文件、套接字和其他功能。
  • 调用 C 函数时,CGo 支持以最小的开销。
  • 支持大多数标准包,并且能够编译标准现有代码而不更改它。
  • 与废弃的类似 emgo 编译器不同,Tinygo 保留了 Go 原始的垃圾收集器内存管理模型,并且不编译为 C 表示,而是使用 LLVM 生成高效的机器代码。

新版本增加了对 Pico W、Adafruit ESP32 Feather V2、M5 Paper、PCA10059、stm32 nucleol476rg 和 Pimoroni Badger2040-W 板卡和芯片的支持。已确保与 LLVM 18 的兼容性 已实现在 UF2 格式的驱动器名称中使用空格的功能。为 esp32 平台添加了 I2C 总线支持。 WebAssembly 支持已得到扩展。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster