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 форматаар болон гүйцэтгэгдэх файл болгон хөрвүүлэх боломжтой. LinuxESP8266/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

  • DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster