Pelepasan Tinygo 0.7.0, kompiler Go basis LLVM

Aya release proyék Tinygo 0.7.0, nu ngembangkeun hiji kompiler basa Go pikeun wewengkon nu merlukeun répréséntasi kompak tina kode hasilna tur konsumsi sumberdaya low, kayaning mikrokontroler jeung sistem single-processor kompak. Kodeu disebarkeun ku handapeun lisénsi BSD.

Kompilasi pikeun sagala rupa platform target dilaksanakeun nganggo LLVM, sareng perpustakaan anu dianggo dina toolkit utama tina proyék Go dianggo pikeun ngadukung basa. Program anu disusun tiasa langsung dijalankeun dina mikrokontroler, ngamungkinkeun Go dianggo salaku basa pikeun nyerat skrip otomatis.

Motivasi pikeun nyiptakeun proyék énggal nyaéta kahayang ngagunakeun basa Go anu akrab dina alat anu kompak - pamekar naroskeun yén upami aya versi Python pikeun mikrokontroler, maka naha henteu ngadamel anu sami pikeun basa Go. indit dipilih tinimbang Rust sabab leuwih gampang pikeun neuleuman, nyadiakeun rojongan thread-bebas pikeun parallelization basis coroutine, sarta nawarkeun perpustakaan baku éksténsif ("accu kaasup").

Dina bentuk ayeuna, 15 modél mikrokontroler dirojong, kalebet rupa-rupa papan tina Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary sareng Phytec. Program ogé tiasa disusun pikeun dijalankeun dina browser dina format WebAssembly sareng file anu tiasa dieksekusi pikeun Linux. Ngarojong ESP8266 / ESP32 Controllers Henteu acan, Tapi proyék misah keur dimekarkeun pikeun nambahkeun rojongan pikeun chip Xtensa di LLVM, nu masih ditandaan salaku teu stabil sarta teu siap pikeun integrasi jeung TinyGo.

Tujuan utama proyék:

  • Generasi file laksana pisan kompak;
  • Rojongan pikeun modél paling umum tina papan mikrokontroler;
  • Kamungkinan aplikasi pikeun Wéb;
  • rojongan CGo kalawan overhead minimal lamun nelepon fungsi dina C;
  • Rojongan pikeun sabagéan ageung bungkusan standar sareng kamampuan pikeun nyusun kodeu umum anu aya tanpa ngarobih.

    Rojongan pikeun sistem multi-inti sanes diantara tujuan utama,
    peluncuran éfisién sajumlah ageung coroutines (peluncuran coroutines sorangan dirojong pinuh), prestasi tingkat kinerja kompiler rujukan gc (optimasi ditinggalkeun ka LLVM sareng dina sababaraha aplikasi Tinygo tiasa langkung gancang tibatan gc) sareng lengkep. kasaluyuan sareng sadaya aplikasi Go.

    Beda utama ti compiler sarupa emgo mangrupa usaha pikeun ngawétkeun modél manajemén memori aslina Go urang ngagunakeun kempelan sampah sarta ngagunakeun LLVM pikeun ngahasilkeun kode efisien tinimbang compile ka ngagambarkeun C. Tinygo ogé nawarkeun perpustakaan runtime anyar nu implements scheduler a, sistem alokasi memori, sarta pawang string dioptimalkeun pikeun sistem kompak. Sababaraha bungkusan, sapertos singkronisasi sareng ngagambarkeun, parantos didamel deui dumasar kana runtime énggal.

    Diantara parobahan dina release 0.7 nyaéta palaksanaan paréntah "test tinygo", penyediaan rojongan kempelan sampah pikeun paling papan target (dumasar kana ARM Cortex-M) sarta WebAssembly, rojongan pikeun dewan HiFive1 rev B dumasar kana RISC- Arsitéktur V sareng papan Arduino nano33,
    rojongan basa ningkat (rojongan pikeun widang bit maké getters na setters, rojongan pikeun struktur anonim).

    sumber: opennet.ru

  • Tambahkeun komentar