Нашри Tinygo 0.7.0, компилятори Go дар асоси LLVM

Дастрас нашри лоиҳа Tinygo 0.7.0, ки компилятори забони Go-ро барои минтақаҳое таҳия мекунад, ки муаррифии паймоне аз коди натиҷавӣ ва истеъмоли ками захираҳо, ба монанди микроконтроллерҳо ва системаҳои паймонҳои як-протсессорро талаб мекунанд. Кодекс паҳн мекунад таҳти иҷозатномаи BSD.

Ҷамъоварӣ барои платформаҳои гуногуни мақсаднок бо истифода аз LLVM амалӣ карда мешавад ва китобхонаҳое, ки дар абзори асосии лоиҳаи Go истифода мешаванд, барои дастгирии забон истифода мешаванд. Барномаи тартибдодашуда метавонад мустақиман дар микроконтроллерҳо иҷро карда шавад, ки имкон медиҳад Go ҳамчун забон барои навиштани скриптҳои автоматикунонӣ истифода шавад.

Ҳавасмандии эҷоди лоиҳаи нав хоҳиши истифодаи забони шиноси Go дар дастгоҳҳои паймон буд - таҳиягарон бар он ақидаанд, ки агар версияи Python барои микроконтроллерҳо мавҷуд бошад, пас чаро барои забони Go версияи шабеҳро эҷод накунед. Бирав интихобшуда ба ҷои Rust, зеро омӯхтан осонтар аст, барои параллелизатсия дар асоси корутин дастгирии мустақили ришта таъмин мекунад ва китобхонаи васеи стандартиро пешниҳод мекунад (батареяҳо дохил карда шудаанд).

Дар шакли кунунии худ, 15 модели микроконтроллерҳо дастгирӣ карда мешаванд, аз ҷумла тахтаҳои гуногун аз Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ва Phytec. Барномаҳоро инчунин барои кор кардан дар браузер дар формати WebAssembly ва ҳамчун файлҳои иҷрошаванда барои Linux тартиб додан мумкин аст. Контроллерҳои ESP8266/ESP32 -ро дастгирӣ мекунад Ҳоло не, аммо лоиҳаи алоҳида барои илова кардани дастгирии чипи Xtensa дар LLVM таҳия карда мешавад, ки он то ҳол ҳамчун ноустувор қайд карда мешавад ва барои ҳамгироӣ бо TinyGo омода нест.

Ҳадафҳои асосии лоиҳа:

  • Эҷоди файлҳои иҷрошавандаи хеле паймон;
  • Дастгирии моделҳои маъмултарини тахтаҳои микроконтроллерӣ;
  • Имконияти дархост барои веб;
  • Дастгирии CGo бо хароҷоти ҳадди ақал ҳангоми занг задан ба функсияҳо дар C;
  • Дастгирии аксари бастаҳои стандартӣ ва қобилияти тартиб додани коди стандартии мавҷуда бидуни тағир додани он.

    Дастгирии системаҳои бисёрсоҳавӣ аз ҷумлаи ҳадафҳои асосӣ нест,
    оғози самараноки шумораи зиёди корутинҳо (ифтитоҳи худи корутинҳо пурра дастгирӣ карда мешавад), ноил шудан ба сатҳи кори компилятори истинод gc (оптимизатсия ба LLVM гузошта шудааст ва дар баъзе барномаҳо Tinygo метавонад аз gc тезтар бошад) ва пурра мутобиқат бо ҳама барномаҳои Go.

    Фарқи асосӣ аз як компилятори шабеҳ эмго кӯшиши нигоҳ доштани модели идоракунии хотираи аслии Go бо истифода аз ҷамъоварии ахлот ва истифодаи LLVM барои тавлиди коди муассир ба ҷои тартиб додани он ба намояндагии C мебошад. Tinygo инчунин як китобхонаи нави вақти корӣ пешниҳод мекунад, ки нақшакаш, системаи тақсимоти хотира ва коркардкунандагони сатрро барои системаҳои паймон оптимизатсияшуда амалӣ мекунад. Баъзе бастаҳо, аз қабили синхронизатсия ва инъикос, дар асоси вақти нав аз нав сохта шудаанд.

    Дар байни тағиротҳо дар версияи 0.7 иҷрои фармони "tinygo test", таъмини дастгирии ҷамъоварии ахлот барои аксари тахтаҳои мақсаднок (дар асоси ARM Cortex-M) ва WebAssembly, дастгирии тахтаи HiFive1 rev B дар асоси RISC- V меъморӣ ва тахтаи Arduino nano33,
    дастгирии мукаммали забон (дастгирии майдонҳои бит бо истифода аз гетерҳо ва танзимкунандагон, дастгирии сохторҳои номаълум).

    Манбаъ: opennet.ru

  • Илова Эзоҳ