1 पॉइंट द्वारा GN⁺ 2023-07-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • .NET मॉड्यूल फ़ाइल फ़ॉर्मैट की सीमाओं को खोजते हुए, मानक आउटपुट पर "Hello, World!" प्रिंट करने वाली सबसे छोटी executable फ़ाइल बनाई जाती है.
  • प्रयोग के लिए, लेखक कुछ मनमाने नियम तय करता है: C# या CIL में implemented managed entry point का उपयोग, .NET Framework 4.x.x पर चलना, और किसी third-party dependency का न होना.
  • executable फ़ाइल का आकार धीरे-धीरे घटाने के लिए nullable reference annotations को disable किया जाता है, .NET मॉड्यूल को हाथ से लिखा जाता है, imports और base relocations हटाए जाते हैं, अनावश्यक metadata हटाया जाता है, और ASCII strings के उपयोग को optimize किया जाता है.
  • अंतिम परिणाम 889 bytes की executable फ़ाइल है, जो एक वैध .NET PE फ़ाइल के सैद्धांतिक रूप से संभव न्यूनतम आकार के बराबर है.
  • लेख में executable फ़ाइल का आकार घटाने के लिए किए गए हर चरण के code examples और explanations दिए गए हैं.
  • लेखक फ़ाइल फ़ॉर्मैट को समझने और executable फ़ाइल का आकार optimize करने के लिए रणनीतिक निर्णय लेने के महत्व पर ज़ोर देता है.
  • string को अप्रयुक्त padding segment में ले जाने से फ़ाइल 13 bytes और छोटी हो जाती है.
  • mscorlib के reference को हटाने से binary में जगह बचाई जा सकती है.
  • .NET metadata directory के VersionString को काटने से कुछ और bytes बचते हैं.
  • binary का अंतिम आकार 834 bytes है, और compress करने पर इसे 476 bytes तक और घटाया जा सकता है.
  • भले ही यह एक निरर्थक project हो, मौजूदा systems की सीमाओं को खोजना मज़ेदार हो सकता है.
  • लेखक संदर्भ के लिए पूरा source code GitHub पर उपलब्ध कराता है.
  • लेख में reverse engineering, code golf, और PE फ़ाइल optimization पर चर्चा की गई है.
  • लेखक अपना अनुभव साझा करता है और फ़ाइल का आकार घटाने पर आगे और खोजबीन को प्रोत्साहित करता है.
  • इस लेख को लेखक ने CC BY 4.0 के तहत लाइसेंस किया है.

1 टिप्पणियां

 
GN⁺ 2023-07-10
Hacker News की राय
  • Michal Strehovský ने .NET का उपयोग करके 8KB से छोटी एक Snake गेम बनाई।
  • यह लेख लोगों को भ्रमित कर सकता है, क्योंकि executable फ़ाइल को सिस्टम पर इंस्टॉल किए गए runtime की आवश्यकता होती है।
  • वास्तविक executable के लिए भरोसेमंद स्रोत Native AOT binary है।
  • लेखक का स्थान दिलचस्प Antarctic McMurdo Station है।
  • section alignment 0x200 bytes होने के कारण फ़ाइल का आकार बढ़ जाता है।
  • demoscene ने 1k binaries बनाई हैं।
  • binary की बारीकियों में गहराई से जाने पर गहरी समझ मिल सकती है और ज्ञान समृद्ध हो सकता है।
  • पूरी तरह standalone compile किया गया C# Hello World लगभग 440 kB के आकार में संभव है।
  • .NET classic framework अब अप्रचलित हो चुका है, और नए apps इसे आधार बनाकर नहीं बनाए जाने चाहिए।
  • C compiler का उपयोग करके compile करना .NET इस्तेमाल करने से आसान हो सकता है।
  • कुछ रायों में native compiled .NET executables में रुचि व्यक्त की गई है।
  • Oberon+ IDE का Hello.dll module केवल 2048 bytes का है।
  • TurboPascal v1 का उपयोग करके 1k से छोटे आकार का Hello World com बनाया गया था।