Tinygo 0.7.0 чыгаруу, LLVM негизиндеги Go компилятору

Жеткиликтүү долбоор чыгаруу Tinygo 0.7.0, микроконтроллерлор жана компакт бир процессордук системалар сыяктуу натыйжада коддун компакттуу өкүлчүлүгүн жана ресурстун аз сарпталышын талап кылган аймактар ​​үчүн Go тилинин компиляторун иштеп чыгууда. Code жайылуу BSD лицензиясы боюнча.

Ар кандай максаттуу платформалар үчүн компиляция LLVM аркылуу ишке ашырылат, ал эми Go долбоорунан негизги инструменттер топтомунда колдонулган китепканалар тилди колдоо үчүн колдонулат. Түзүлгөн программаны түздөн-түз микроконтроллерлерде иштетсе болот, бул Go программасын автоматташтыруу сценарийлерин жазуу тили катары колдонууга мүмкүндүк берет.

Жаңы долбоорду түзүүгө мотивация катары тааныш Go тилин компакттуу түзүлүштөрдө колдонуу каалоосу болгон - иштеп чыгуучулар эгерде микроконтроллерлор үчүн Python версиясы бар болсо, анда Go тили үчүн да окшошун түзүүгө эмне үчүн болбосун деп ойлошкон. Go тандалган Rust ордуна, анткени аны үйрөнүү оңой, корутинге негизделген параллелизация үчүн жиптен көз карандысыз колдоо көрсөтөт жана кеңири стандарттуу китепкананы сунуштайт («батареялар камтылган»).

Учурдагы түрүндө 15 микроконтроллердин моделдери колдоого алынат, анын ичинде Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary жана Phytecтин ар кандай такталары. Программаларды WebAssembly форматындагы браузерде жана Linux үчүн аткарылуучу файлдар катары иштетүү үчүн да түзсө болот. ESP8266/ESP32 контроллерлорун колдойт азырынча жок, бирок LLVMдеги Xtensa чипине колдоо кошуу үчүн өзүнчө долбоор иштелип жатат, ал дагы эле туруксуз деп белгиленген жана TinyGo менен интеграцияга даяр эмес.

Долбоордун негизги максаттары:

  • Өтө компакттуу аткарылуучу файлдарды түзүү;
  • Микроконтроллердик такталардын кеңири таралган моделдерин колдоо;
  • Web үчүн колдонуу мүмкүнчүлүгү;
  • С тилиндеги функцияларды чакырганда минималдуу чыгымдар менен CGo колдоосу;
  • Көпчүлүк стандарттуу пакеттерди колдоо жана аны өзгөртпөстөн стандарттык учурдагы кодду түзүү мүмкүнчүлүгү.

    Көп ядролуу системаларды колдоо негизги максаттардын арасында эмес,
    көп сандагы корутиндерди эффективдүү ишке киргизүү (корутиндердин өзүн ишке киргизүү толугу менен колдоого алынат), gc шилтеме компиляторунун иштөө деңгээлине жетишүү (оптималдаштыруу LLVMге калтырылган жана кээ бир тиркемелерде Tinygo gcге караганда тезирээк болушу мүмкүн) жана толук шайкештик бардык Go колдонмолору менен.

    Окшош компилятордон негизги айырмачылык эмго таштанды чогултуу аркылуу Go'нун эстутум башкаруусунун баштапкы моделин сактап калуу аракети жана аны C өкүлчүлүгүнө компиляциялоонун ордуна эффективдүү кодду түзүү үчүн LLVMди колдонуу. Tinygo ошондой эле компакт системалар үчүн оптималдаштырылган пландоочу, эстутум бөлүштүрүү системасын жана сап иштеткичтерин ишке ашырган жаңы иштөө убактысы китепканасын сунуштайт. Шайкештештирүү жана чагылдыруу сыяктуу айрым пакеттер жаңы иштөө убактысынын негизинде кайра түзүлдү.

    0.7 релизиндеги өзгөрүүлөрдүн арасында "tinygo test" буйругун ишке ашыруу, көпчүлүк максаттуу такталар үчүн таштанды чогултууну колдоо (ARM Cortex-M негизинде) жана WebAssembly, RISC-ге негизделген HiFive1 rev B тактасын колдоо. V архитектурасы жана Arduino nano33 тактасы,
    жакшыртылган тилди колдоо (гетерлерди жана орнотууларды колдонуу менен бит талааларын колдоо, анонимдүү структураларды колдоо).

    Source: opennet.ru

  • Комментарий кошуу