इस प्रोजेक्ट के बारे में

TinyGo Go में लिखे गए प्रोग्रामों के लिए एक वैकल्पिक संकलन टूलचेन प्रदान करता है। यह Go भाषा टूल्स के पुस्तकालयों को LLVM के साथ जोड़ता है, उन उपयोग मामलों को लक्षित करता है जहां बाइनरी आकार, तैनाती वातावरण, या हार्डवेयर बाधाएं मानक कंपाइलर को कम उपयुक्त बनाती हैं। एम्बेडेड विकास के लिए, TinyGo में हार्डवेयर एक्सेस के लिए एक `machine` पैकेज शामिल है और यह एक लक्ष्य चुनकर समर्थित माइक्रोकंट्रोलर बोर्डों पर उसी प्रोग्राम को संकलित और फ्लैश कर सकता है, जैसे Arduino Uno, Adafruit Circuit Playground Express, या Seeed Studio XIAO-ESP32S3। परियोजना 150 से अधिक माइक्रोकंट्रोलर बोर्डों के लिए समर्थन सूचीबद्ध करती है। WebAssembly के लिए, TinyGo ब्राउज़र-उन्मुख WASM मॉड्यूल और सर्वर, एज वातावरण, और Fastly Compute, Fermyon Spin, और wazero जैसे होस्ट के लिए WASI प्रोग्राम बना सकता है। यह WASI प्रीव्यू 1 लक्ष्यों और निर्यातित WASM फ़ंक्शनों का समर्थन करता है। यह Linux, macOS और Windows के लिए कमांड-लाइन प्रोग्राम भी बना सकता है। इंस्टॉलेशन विकल्पों में मूल सेटअप और एक Docker कंटेनर शामिल है, जिसमें TinyGo वेबसाइट पर प्रलेखन और आरंभिक सामग्री प्रकाशित की गई है। परियोजना के बताए गए लक्ष्यों में छोटे बाइनरी, व्यापक माइक्रोकंट्रोलर समर्थन, WebAssembly उपयोगिता, कुशल CGo अंतर-संचालन, और सामान्य मानक-पुस्तकालय पैकेजों के साथ संगतता शामिल है ताकि कई Go प्रोग्राम बिना संशोधन के संकलित हो सकें। इसका उद्देश्य हर Go प्रोग्राम को संकलित करना, हर प्रदर्शन परिदृश्य में मानक `gc` कंपाइलर से मेल खाना, या मुख्य रूप से अत्यधिक बड़ी संख्या में गोरूटीन के लिए अनुकूलन करना नहीं है। TinyGo मुख्य रूप से BSD 3-क्लॉज लाइसेंस के तहत लाइसेंस प्राप्त है। कुछ आयातित LLVM कोड Apache 2.0 वेरिएंट का उपयोग करता है, और Teensy पुस्तकालयों से प्राप्त कोड PJRC के लाइसेंस का उपयोग करता है, जैसा कि प्रासंगिक फ़ाइल हेडर में इंगित किया गया है। सामुदायिक समर्थन Gophers Slack #TinyGo चैनल के माध्यम से उपलब्ध है, और योगदान परियोजना वेबसाइट पर प्रलेखित हैं।