llançament del projecte , que està desenvolupant un compilador de llenguatge Go per a àrees que requereixen una representació compacta del codi resultant i un baix consum de recursos, com ara microcontroladors i sistemes compactes d'un sol processador. Codi sota la llicència BSD.
La compilació per a diverses plataformes de destinació s'implementa mitjançant LLVM, i les biblioteques utilitzades al conjunt d'eines principal del projecte Go s'utilitzen per donar suport al llenguatge. El programa compilat es pot executar directament en microcontroladors, permetent que Go s'utilitzi com a llenguatge per escriure scripts d'automatització.
La motivació per crear un nou projecte va ser el desig d'utilitzar el llenguatge familiar Go en dispositius compactes: els desenvolupadors van raonar que si hi havia una versió de Python per a microcontroladors, per què no crear-ne una de similar per a l'idioma Go. Vés en lloc de Rust perquè és més fàcil d'aprendre, proporciona suport independent del fil per a la paral·lelització basada en corrutines i ofereix una àmplia biblioteca estàndard ("bateries incloses").
Actualment, s'admeten 15 models de microcontroladors, incloent-hi diverses plaques d'Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary i Phytec. Els programes també es poden compilar per a l'execució al navegador en format WebAssembly i com a fitxers executables per a... LinuxSuport per a controladors ESP8266/ESP32 , però s'està desenvolupant un projecte independent per afegir suport per al xip Xtensa a LLVM, que encara està marcat com a inestable i no està preparat per a la integració amb TinyGo.
Objectius clau del projecte:
El suport per a sistemes multinucli no es troba entre els objectius principals,
llançament eficient d'un gran nombre de corrutines (el llançament de corrutines en si és totalment compatible), assoliment del nivell de rendiment del compilador de referència gc (l'optimització es deixa a LLVM i en algunes aplicacions Tinygo pot ser més ràpid que gc) i completa amb totes les aplicacions Go.
La principal diferència amb un compilador similar és un intent de preservar el model de gestió de memòria original de Go mitjançant la recollida d'escombraries i utilitzar LLVM per generar codi eficient en lloc de compilar-lo en una representació C. Tinygo també ofereix una nova biblioteca de temps d'execució que implementa un programador, un sistema d'assignació de memòria i controladors de cadenes optimitzats per a sistemes compactes. Alguns paquets, com ara sync i reflect, s'han recreat en funció del nou temps d'execució.
Entre els canvis de la versió 0.7 es troben la implementació de l'ordre "tinygo test", la prestació de suport de recollida d'escombraries per a la majoria de taulers de destinació (basats en ARM Cortex-M) i WebAssembly, suport per a la placa HiFive1 rev B basat en RISC- Arquitectura V i la placa Arduino nano33,
suport d'idiomes millorat (suport per a camps de bits amb captadors i configuradors, suport per a estructures anònimes).
Font: opennet.ru
