Tinygo 0.7.0 хувилбар, LLVM дээр суурилсан Go хөрвүүлэгч

Боломжтой төслийн хувилбар Tinygo 0.7.0, микроконтроллер, авсаархан нэг процессорын систем гэх мэт үр дүнд бий болсон кодын авсаархан дүрслэл, нөөц бага зарцуулдаг газруудад зориулсан Go хэлний хөрвүүлэгчийг хөгжүүлж байна. Код тараасан BSD лицензийн дагуу.

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

Шинэ төсөл бий болгох сэдэл нь танил Go хэлийг авсаархан төхөөрөмж дээр ашиглах хүсэл байв - хөгжүүлэгчид микроконтроллеруудад зориулсан Python хувилбар байгаа бол Go хэлэнд ижил төстэй хувилбарыг яагаад үүсгэж болохгүй гэж хөгжүүлэгчид үзсэн. Яв сонгосон Зэвийн оронд сурахад хялбар, корутинд суурилсан параллелчлалын урсгалаас хамааралгүй дэмжлэг үзүүлж, өргөн хүрээний стандарт номын санг санал болгодог ("батарейнууд багтсан").

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

Төслийн гол зорилго:

  • Маш авсаархан гүйцэтгэх боломжтой файлуудыг үүсгэх;
  • Микроконтроллерийн хавтангийн хамгийн түгээмэл загваруудын дэмжлэг;
  • Вэб дээр өргөдөл гаргах боломж;
  • C хэл дээрх функцуудыг дуудах үед хамгийн бага зардалтай 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 самбар,
    сайжруулсан хэлний дэмжлэг (гетер болон тохируулагч ашиглан бит талбаруудыг дэмжих, нэргүй бүтцийг дэмжих).

    Эх сурвалж: opennet.ru

  • сэтгэгдэл нэмэх