Rilaxx ta' Tinygo 0.7.0, kompilatur Go bbażat fuq LLVM

Disponibbli rilaxx tal-proġett Tinygo 0.7.0, li qed tiżviluppa kompilatur tal-lingwa Go għal oqsma li jeħtieġu rappreżentazzjoni kompatta tal-kodiċi li tirriżulta u konsum baxx ta 'riżorsi, bħal mikrokontrolluri u sistemi kompatti ta' proċessur wieħed. Kodiċi imqassma minn taħt liċenzja BSD.

Il-kumpilazzjoni għal diversi pjattaformi fil-mira hija implimentata bl-użu tal-LLVM, u l-libreriji użati fil-għodda prinċipali mill-proġett Go jintużaw biex jappoġġjaw il-lingwa. Il-programm ikkumpilat jista 'jitħaddem direttament fuq mikrokontrolluri, li jippermetti lil Go jintuża bħala lingwa għall-kitba ta' skripts ta 'awtomazzjoni.

Il-motivazzjoni għall-ħolqien ta 'proġett ġdid kienet ix-xewqa li tuża l-lingwa Go familjari fuq apparati kompatti - l-iżviluppaturi rraġunaw li jekk kien hemm verżjoni Python għal mikrokontrolluri, allura għaliex ma toħloqx waħda simili għal-lingwa Go. Mur magħżula minflok Rust minħabba li huwa aktar faċli biex titgħallem, jipprovdi appoġġ indipendenti mill-ħajt għal parallelizzazzjoni bbażata fuq il-koroutine, u joffri librerija standard estensiva ("batteriji inklużi").

Fil-forma attwali tiegħu, 15-il mudell ta 'mikrokontrollur huma appoġġjati, inklużi diversi bordijiet minn Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary u Phytec. Il-programmi jistgħu wkoll jiġu kkompilati biex jaħdmu f'browser fil-format WebAssembly u bħala fajls eżekutibbli għal Linux. Jappoġġja l-kontrolluri ESP8266/ESP32 Mhux għal issa, iżda qed jiġi żviluppat proġett separat biex iżżid l-appoġġ għaċ-ċippa Xtensa f'LLVM, li għadha mmarkata bħala instabbli u mhux lesta għall-integrazzjoni ma' TinyGo.

Għanijiet ewlenin tal-proġett:

  • Ġenerazzjoni ta 'fajls eżekutibbli kompatti ħafna;
  • Appoġġ għall-aktar mudelli komuni ta 'bordijiet tal-mikrokontrolluri;
  • Possibbiltà ta' applikazzjoni għall-Web;
  • Appoġġ CGo b'overhead minimu meta ssejjaħ funzjonijiet f'C;
  • Appoġġ għall-biċċa l-kbira tal-pakketti standard u l-abbiltà li tiġbor kodiċi eżistenti standard mingħajr ma tinbidel.

    L-appoġġ għal sistemi multi-core mhuwiex fost l-għanijiet ewlenin,
    tnedija effiċjenti ta 'numru kbir ta' coroutines (it-tnedija ta 'coroutines innifsu huwa appoġġjat bis-sħiħ), kisba tal-livell ta' prestazzjoni tal-kompilatur ta 'referenza gc (l-ottimizzazzjoni titħalla f'idejn LLVM u f'xi applikazzjonijiet Tinygo jista' jkun aktar mgħaġġel minn gc) u kompluta kompatibilità bl-applikazzjonijiet kollha tal-Go.

    Id-differenza ewlenija minn kompilatur simili emgo huwa tentattiv biex jippreserva l-mudell oriġinali ta 'ġestjoni tal-memorja ta' Go billi juża l-ġbir taż-żibel u juża LLVM biex jiġġenera kodiċi effiċjenti minflok jikkompilah għal rappreżentazzjoni C. Tinygo joffri wkoll librerija ta' runtime ġdida li timplimenta scheduler, sistema ta' allokazzjoni tal-memorja, u string handlers ottimizzati għal sistemi kompatti. Xi pakketti, bħal sinkronizzazzjoni u riflessjoni, ġew ikkreati mill-ġdid abbażi tar-runtime il-ġdid.

    Fost il-bidliet fir-rilaxx 0.7 hemm l-implimentazzjoni tal-kmand "tinygo test", il-provvista ta 'appoġġ għall-ġbir taż-żibel għall-biċċa l-kbira tal-bordijiet fil-mira (ibbażat fuq ARM Cortex-M) u WebAssembly, appoġġ għall-bord HiFive1 rev B ibbażat fuq RISC- L-arkitettura V u l-bord Arduino nano33,
    appoġġ imtejjeb tal-lingwa (appoġġ għall-oqsma tal-bit bl-użu ta 'getters u setters, appoġġ għal strutturi anonimi).

    Sors: opennet.ru

  • Żid kumment