การคอมไพล์สำหรับแพลตฟอร์มเป้าหมายต่างๆ ถูกนำมาใช้โดยใช้ LLVM และใช้ไลบรารีที่ใช้ในชุดเครื่องมือหลักจากโปรเจ็กต์ Go เพื่อรองรับภาษา โปรแกรมที่คอมไพล์สามารถรันบนไมโครคอนโทรลเลอร์ได้โดยตรง ทำให้ Go สามารถใช้เป็นภาษาในการเขียนสคริปต์อัตโนมัติได้
แรงจูงใจในการสร้างโครงการใหม่คือความปรารถนาที่จะใช้ภาษา Go ที่คุ้นเคยบนอุปกรณ์ขนาดกะทัดรัด - นักพัฒนาให้เหตุผลว่าหากมีเวอร์ชัน Python สำหรับไมโครคอนโทรลเลอร์ทำไมไม่สร้างเวอร์ชันที่คล้ายกันสำหรับภาษา Go ไป
ในรูปแบบปัจจุบัน รองรับไมโครคอนโทรลเลอร์ 15 รุ่น รวมถึงบอร์ดต่างๆ จาก Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary และ Phytec โปรแกรมยังสามารถคอมไพล์เพื่อทำงานในเบราว์เซอร์ในรูปแบบ WebAssembly และเป็นไฟล์ปฏิบัติการสำหรับ Linux รองรับคอนโทรลเลอร์ ESP8266/ESP32
เป้าหมายโครงการที่สำคัญ:
การสนับสนุนระบบมัลติคอร์ไม่ได้อยู่ในเป้าหมายหลัก
การเปิดตัว coroutines จำนวนมากอย่างมีประสิทธิภาพ (การสนับสนุนการเปิดตัว coroutines เองอย่างเต็มที่) ความสำเร็จของระดับประสิทธิภาพของคอมไพเลอร์อ้างอิง gc (การเพิ่มประสิทธิภาพเหลืออยู่ที่ LLVM และในบางแอปพลิเคชัน Tinygo อาจเร็วกว่า gc) และเสร็จสมบูรณ์
ความแตกต่างที่สำคัญจากคอมไพเลอร์ที่คล้ายกัน
การเปลี่ยนแปลงในรุ่น 0.7 ได้แก่ การนำคำสั่ง "tinygo test" มาใช้ การจัดเตรียมการรองรับการเก็บขยะสำหรับบอร์ดเป้าหมายส่วนใหญ่ (อิงจาก ARM Cortex-M) และ WebAssembly การรองรับบอร์ด HiFive1 rev B อิงจาก RISC- สถาปัตยกรรม V และบอร์ด Arduino nano33
การสนับสนุนภาษาที่ได้รับการปรับปรุง (การสนับสนุนสำหรับฟิลด์บิตโดยใช้ getters และ setters การสนับสนุนสำหรับโครงสร้างที่ไม่ระบุชื่อ)
ที่มา: opennet.ru