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

माइक्रोफैट एक Go-आधारित टूलचेन है जो "फैट" Linux निष्पादन योग्य फ़ाइलें बनाने और चलाने के लिए है, जो एक ही प्रोग्राम के कई CPU माइक्रोआर्किटेक्चर-विशिष्ट बिल्ड को बंडल करती हैं। रनटाइम पर लॉन्चर होस्ट CPU को निर्देश-सेट एक्सटेंशन (AVX2, FMA, BMI2, AVX-512, SVE, SVE2) के लिए प्रोब करता है और कॉन्फ़िगर करने योग्य नीति के अनुसार संगत वेरिएंट चुनता है। यह कैसे काम करता है: वेरिएंट Go माइक्रोआर्किटेक्चर टार्गेट (GOAMD64=v1/v3/v4, GOARM64=v8.0–v9.5) के साथ संकलित किए जाते हैं और `microfat pack` कमांड द्वारा लॉन्चर स्टब के साथ संयोजित किए जाते हैं। प्रेषण Linux memfd_create और syscall.Exec का उपयोग करता है, इसलिए पेलोड बिना किसी स्थायी रैपर प्रक्रिया के अनाम RAM से चलता है; एक सत्यापित डिस्क कैश फ़ॉलबैक के रूप में उपलब्ध है। एक 56-बाइट ट्रेलर पेलोड अखंडता सत्यापन के लिए SHA-256 इंडेक्स हैश और प्रति-वेरिएंट चेकसम संग्रहीत करता है। मल्टी-वेरिएंट संपीड़न प्रशिक्षित Zstandard शब्दकोशों का उपयोग करता है, जिसमें लेटेंसी/संतुलित/आकार प्रोफ़ाइल हैं। कंटेनर ट्यूनिंग: लॉन्चर cgroup v1 और v2 सीमाओं को पार्स करता है और एक सॉफ्ट Go मेमोरी बजट (GOMEMLIMIT) और CPU समानांतरता (GOMAXPROCS) सेट करता है, जब तक कि उपयोगकर्ता ने उन्हें पहले से सेट न किया हो। एक स्टैंडअलोन `runtimeinit` पैकेज बिना फैट-बाइनरी रैपर के Go सेवाओं के लिए समान ट्यूनिंग प्रदान करता है, जिसमें एक ज़ीरो-कोड ब्लैंक-इम्पोर्ट ऑटोलोड और एक ड्राई-रन मोड शामिल है। लाइफसाइकल मोड: एक यूनिवर्सल फैट बाइनरी, एक ट्रिम्ड फैट बाइनरी जो ऑटो-ट्यूनिंग रखते हुए अनावश्यक वेरिएंट हटा देती है, और एक रॉ नेटिव ELF मोड जो स्थायी रूप से असंपीड़ित मशीन कोड में विशेषज्ञता प्राप्त करता है। रनटाइम मेटा-कमांड में --microfat:info, prewarm, trim, trim-to, optimize और optimize-to शामिल हैं। पर्यावरण चर ऑटोट्यूनिंग, मेमोरी अनुपात, GC प्रोफ़ाइल, फोर्स्ड/कैप्ड वेरिएंट स्तर, AVX-512 डाउनक्लॉक सुरक्षा, निष्पादन मोड और कैश निर्देशिका को नियंत्रित करते हैं। डायग्नोस्टिक्स: `microfat detect` होस्ट माइक्रोआर्किटेक्चर स्तर की रिपोर्ट करता है, और `microfat doctor` (--json के साथ) CPU विशेषताओं, memfd समर्थन, कैश अनुमतियों और cgroup सीमाओं की जाँच करता है। पैकेजिंग को एक डिक्लेरेटिव PGO मैनिफेस्ट (`microfat pgo-pack`) या GoReleaser मैट्रिक्स बिल्ड द्वारा भी संचालित किया जा सकता है। यह प्रोजेक्ट Apache 2.0 लाइसेंस के अंतर्गत है और docs/ के अंतर्गत अपनी आर्किटेक्चर, CLI, बेंचमार्क और समस्या निवारण का दस्तावेज़ीकरण करता है।