Liberasyon Tinygo 0.7.0, Go du ki baze sou LLVM

Disponib lage pwojè Tinygo 0.7.0, ki ap devlope yon du langaj Go pou zòn ki mande pou reprezantasyon kontra enfòmèl ant kòd la ki kapab lakòz ak konsomasyon resous ki ba, tankou mikrokontwolè ak sistèm kontra enfòmèl ant yon sèl-prosesè. Kòd distribiye pa anba lisans BSD.

Konpilasyon pou plizyè platfòm sib aplike lè l sèvi avèk LLVM, epi yo itilize bibliyotèk yo itilize nan bwat zouti prensipal pwojè Go a pou sipòte langaj la. Pwogram konpile a ka dirèkteman kouri sou mikrokontwolè, sa ki pèmèt Go yo dwe itilize kòm yon lang pou ekri Scripts automatisation.

Motivasyon pou kreye yon nouvo pwojè se te dezi a sèvi ak lang Go abitye sou aparèy kontra enfòmèl ant - devlopè yo te rezone ke si te gen yon vèsyon Python pou mikrokontroleur, Lè sa a, poukisa yo pa kreye yon sèl menm jan an pou lang Go a. Ale chwazi olye de Rust paske li pi fasil pou aprann, li bay sipò endepandan fil pou paralelizasyon ki baze sou koroutin, epi li ofri yon bibliyotèk estanda anpil ("pil enkli").

Nan fòm aktyèl li yo, 15 modèl mikrokontwolè yo sipòte, ki gen ladan divès kalite ankadreman soti nan Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nòdik Semiconductor, Makerdiary ak Phytec. Pwogram yo kapab tou konpile pou yo kouri nan yon navigatè nan fòma WebAssembly ak kòm dosye ègzèkutabl pou Linux. Sipòte contrôleur ESP8266/ESP32 Poko, men yon pwojè separe ap devlope pou ajoute sipò pou chip Xtensa nan LLVM, ki toujou make kòm enstab epi li pa pare pou entegrasyon ak TinyGo.

Objektif kle pwojè yo:

  • Jenerasyon dosye ègzèkutabl trè kontra enfòmèl ant;
  • Sipò pou modèl ki pi komen nan tablo mikro;
  • Posiblite aplikasyon pou entènèt la;
  • Sipò CGo ak minimòm sou tèt lè w ap rele fonksyon nan C;
  • Sipò pou pifò pakè estanda ak kapasite pou konpile kòd estanda ki egziste deja san yo pa chanje li.

    Sipò pou sistèm milti-debaz se pa nan mitan objektif prensipal yo,
    lansman efikas nan yon gwo kantite coroutines (lansman de coroutines tèt li konplètman sipòte), reyalizasyon nan nivo pèfòmans nan referans a du gc (optimizasyon kite LLVM ak nan kèk aplikasyon Tinygo ka pi vit pase gc) ak konplè. konpatibilite ak tout aplikasyon Go.

    Diferans prensipal la soti nan yon du menm jan an emgo se yon tantativ pou konsève modèl jesyon memwa orijinal Go a lè l sèvi avèk koleksyon fatra epi sèvi ak LLVM pou jenere kòd efikas olye pou yo konpile li nan yon reprezantasyon C. Tinygo ofri tou yon nouvo bibliyotèk ekzekite ki aplike yon pwogramasyon, sistèm alokasyon memwa, ak moun kap okipe kòd optimize pou sistèm kontra enfòmèl ant. Gen kèk pakè, tankou senkronize ak reflete, yo te rkree ki baze sou nouvo ègzekutabl la.

    Pami chanjman ki fèt nan lage 0.7 yo genyen aplikasyon kòmand "tinygo test", dispozisyon sipò pou koleksyon fatra pou pifò tablo sib (ki baze sou ARM Cortex-M) ak WebAssembly, sipò pou tablo HiFive1 rev B ki baze sou RISC-. V achitekti ak tablo Arduino nano33 la,
    sipò lang amelyore (sipò pou jaden bit lè l sèvi avèk getters ak setters, sipò pou estrikti anonim).

    Sous: opennet.ru

  • Add nouvo kòmantè