Llançament de Tinygo 0.7.0, compilador Go basat en LLVM

Disponible llançament del projecte Tinygo 0.7.0, 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 Distribuït per 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 seleccionat 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").

En la seva forma actual, s'admeten 15 models de microcontroladors, incloses diverses plaques d'Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary i Phytec. Els programes també es poden compilar per executar-se en un navegador en format WebAssembly i com a fitxers executables per a Linux. Admet controladors ESP8266/ESP32 Encara no, 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:

  • Generació de fitxers executables molt compactes;
  • Suport per als models més comuns de plaques de microcontroladors;
  • Possibilitat d'aplicació per a la Web;
  • Suport CGo amb una sobrecàrrega mínima en cridar funcions en C;
  • Suport per a la majoria de paquets estàndard i la capacitat de compilar codi estàndard existent sense canviar-lo.

    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 compatibilitat amb totes les aplicacions Go.

    La principal diferència amb un compilador similar emgo é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

  • Afegeix comentari