Quá trình biên dịch cho các nền tảng mục tiêu khác nhau được triển khai bằng LLVM và các thư viện được sử dụng trong bộ công cụ chính của dự án Go được sử dụng để hỗ trợ ngôn ngữ. Chương trình được biên dịch có thể chạy trực tiếp trên bộ vi điều khiển, cho phép sử dụng Go làm ngôn ngữ để viết các tập lệnh tự động hóa.
Động lực tạo ra một dự án mới là mong muốn sử dụng ngôn ngữ Go quen thuộc trên các thiết bị nhỏ gọn - các nhà phát triển lý luận rằng nếu có phiên bản Python dành cho bộ vi điều khiển thì tại sao không tạo một phiên bản tương tự cho ngôn ngữ Go. Đi
Ở dạng hiện tại, 15 mẫu vi điều khiển được hỗ trợ, bao gồm nhiều bo mạch khác nhau từ Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary và Phytec. Các chương trình cũng có thể được biên dịch để chạy trong trình duyệt ở định dạng WebAssugging và dưới dạng tệp thực thi cho Linux. Hỗ trợ bộ điều khiển ESP8266/ESP32
Mục tiêu chính của dự án:
Hỗ trợ cho các hệ thống đa lõi không phải là một trong những mục tiêu chính,
Khởi chạy hiệu quả một số lượng lớn coroutine (bản thân việc khởi chạy coroutine được hỗ trợ đầy đủ), đạt được mức hiệu suất của trình biên dịch tham chiếu gc (việc tối ưu hóa được giao cho LLVM và trong một số ứng dụng Tinygo có thể nhanh hơn gc) và hoàn tất
Sự khác biệt chính từ một trình biên dịch tương tự
Trong số những thay đổi trong bản phát hành 0.7 là việc triển khai lệnh “tinygo test”, cung cấp hỗ trợ thu gom rác cho hầu hết các bo mạch mục tiêu (dựa trên ARM Cortex-M) và WebAssembly, hỗ trợ cho bo mạch HiFive1 rev B dựa trên RISC- Kiến trúc V và bo mạch Arduino nano33,
hỗ trợ ngôn ngữ được cải thiện (hỗ trợ cho các trường bit sử dụng getters và setters, hỗ trợ cho các cấu trúc ẩn danh).
Nguồn: opennet.ru