Издање Тиниго 0.7.0, Го компајлера заснованог на ЛЛВМ-у

Доступан издање пројекта Тиниго 0.7.0, који развија компајлер језика Го за области које захтевају компактно представљање резултујућег кода и ниску потрошњу ресурса, као што су микроконтролери и компактни једнопроцесорски системи. Код дистрибуира под БСД лиценцом.

Компилација за различите циљне платформе се имплементира помоћу ЛЛВМ-а, а библиотеке које се користе у главном комплету алата из Го пројекта се користе за подршку језику. Преведени програм се може директно покренути на микроконтролерима, омогућавајући да се Го користи као језик за писање скрипти за аутоматизацију.

Мотивација за креирање новог пројекта била је жеља да се користи познати језик Го на компактним уређајима - програмери су закључили да ако постоји Питхон верзија за микроконтролере, зашто онда не направити сличну за језик Го. Иди изабран уместо Руста јер је лакши за учење, пружа подршку независну од нити за паралелизацију засновану на корутини и нуди опсежну стандардну библиотеку („батерије укључене“).

У свом тренутном облику, подржано је 15 модела микроконтролера, укључујући различите плоче од Адафруит, Ардуино, ББЦ мицро:бит, СТ Мицро, Дигиспарк, Нордиц Семицондуцтор, Макердиари и Пхитец. Програми се такође могу компајлирати за покретање у претраживачу у ВебАссембли формату и као извршне датотеке за Линук. Подржава контролере ЕСП8266/ЕСП32 још није, али се развија посебан пројекат за додавање подршке за Кстенса чип у ЛЛВМ, који је и даље означен као нестабилан и није спреман за интеграцију са ТиниГо.

Кључни циљеви пројекта:

  • Генерисање веома компактних извршних датотека;
  • Подршка за најчешће моделе плоча микроконтролера;
  • Могућност апликације за Веб;
  • ЦГо подршка са минималним трошковима приликом позивања функција у Ц;
  • Подршка за већину стандардних пакета и могућност компајлирања стандардног постојећег кода без његове промене.

    Подршка за системе са више језгара није међу главним циљевима,
    ефикасно покретање огромног броја корутина (само покретање корутина је у потпуности подржано), постизање нивоа перформанси референтног компајлера гц (оптимизација је препуштена ЛЛВМ-у и у неким апликацијама Тиниго може бити бржи од гц) и завршено компатибилност са свим Го апликацијама.

    Главна разлика од сличног компајлера емго је покушај да се сачува Го-ов оригинални модел управљања меморијом користећи сакупљање смећа и користи ЛЛВМ за генерисање ефикасног кода уместо да га компајлира у Ц репрезентацију. Тиниго такође нуди нову рунтиме библиотеку која имплементира планер, систем алокације меморије и обрађиваче стрингова оптимизоване за компактне системе. Неки пакети, као што су синхронизација и рефлекс, поново су креирани на основу новог времена извршавања.

    Међу променама у издању 0.7 су имплементација команде „тиниго тест“, обезбеђивање подршке за прикупљање смећа за већину циљних плоча (базираних на АРМ Цортек-М) и ВебАссембли, подршка за ХиФиве1 рев Б плочу засновану на РИСЦ-у. В архитектура и Ардуино нано33 плоча,
    побољшана језичка подршка (подршка за битна поља помоћу геттера и сеттера, подршка за анонимне структуре).

    Извор: опеннет.ру

  • Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster