- लेखक ने Python कोड की 500 लाइनों में C compiler लिखने की कठिन चुनौती पूरी की
- compiler single-pass है और आम two-pass compilers से अलग parsing के दौरान ही code generate करता है, बजाय इसके कि पहले syntax tree बनाया जाए और फिर उसे machine code में बदला जाए
- compiler का target WebAssembly है, और यह फैसला व्यावहारिकता से ज़्यादा जिज्ञासा से प्रेरित था। WebAssembly की अनोखी चुनौतियों पर ज़ोर दिया गया है, जैसे registers का न होना और stack machine का उपयोग
- 500 लाइनों की सीमा के कारण compiler कुछ C features को support नहीं करता, जैसे structs, enums, unions, preprocessor directives, floating point, और 8-byte types
- compiler c-testsuite के 220 test cases में से 34 पास करता है, और Fibonacci sequence की गणना करने वाले प्रोग्राम को सफलतापूर्वक compile और run कर सकता है
- इसमें compiler के code का विस्तृत विश्लेषण दिया गया है और समझाया गया है कि यह C syntax के विभिन्न पहलुओं को कैसे संभालता है, साथ ही WebAssembly के साथ काम करने में क्या कठिनाइयाँ आती हैं
- compiler की जटिलता के बावजूद, यह दिखाता है कि अगर code quality पर समझौता किया जाए और सब कुछ single pass में किया जाए, तो चीज़ें हैरान करने वाली हद तक संक्षिप्त हो सकती हैं
- सुझाव दिया गया है कि इस तरह के single-pass compilers अपनी संक्षिप्तता के कारण self-hosting language के stage0 के रूप में बेहतरीन हो सकते हैं
- sloccount tool का उपयोग करके code की lines गिनी गईं, जिसमें comments, docstrings और blank space शामिल नहीं थे
1 टिप्पणियां
Hacker News राय