C में लिखा गया Rust compiler
(notgull.net)C में Rust compiler क्यों लिखें?
-
हाल में गतिविधि कम होने के कई कारण रहे
- परिवार में मृत्यु जैसी निजी घटनाएँ
- नौकरी में ज़िम्मेदारियों का बढ़ना
- open source के प्रति उत्साह में कमी
- एक नए प्रोजेक्ट पर ध्यान केंद्रित करना
-
यह प्रोजेक्ट शुद्ध C में Rust compiler लिखने का है
- C++ या
flex,yacc,Makefileके बिना, पूरी तरह शुद्ध C में लिखा गया - प्रोजेक्ट का नाम Dozer है
- C++ या
ऐसा क्यों किया जा रहा है?
- bootstrapping और उसके महत्व को समझना ज़रूरी है
- Rust code चलाने के लिए compiler चाहिए
- Rust का मुख्य compiler
rustcहै rustcRust में लिखा गया है, और Rust code compile करने के लिए उसी की ज़रूरत होती हैrustcको compile करने के लिएrustcके पुराने संस्करण की आवश्यकता होती हैrustcका शुरुआती संस्करण OCaml में लिखा गया था- OCaml compiler को Guile से compile किया जा सकता है, और Guile C में लिखा गया है
अवरोही सिद्धांत
-
Bootstrappable Builds प्रोजेक्ट का परिचय
- 512-byte binary seed से शुरुआत
- साधारण compiler से धीरे-धीरे अधिक जटिल compiler तैयार करना
- अंततः TinyCC, GCC, Linux आदि को compile करना संभव
-
इस प्रक्रिया में Rust बहुत देर से आता है
mrustcका उपयोग करकेrustc1.56 संस्करण को compile किया जाता है- यदि आप C++ के आने से पहले Rust का उपयोग करना चाहते हैं, तो यह संभव नहीं है
-
Dozer का लक्ष्य C में bootstrappable Rust compiler बनाना है
- इसे TinyCC से bootstrap किया जा सकना चाहिए
योजना
-
पिछले दो महीनों से Dozer पर काम चल रहा है
- इसे TinyCC और cproc से compile किया जा सकता है
- backend के रूप में QBE का उपयोग
- फिलहाल lexer और parser का कुछ हिस्सा पूरा
- macro/module expansion को अभी टाला जा रहा है
- typecheck में केवल
i32समर्थित है - code generation अभी अपर्याप्त है
-
आगे की योजना
- Dozer को धीरे-धीरे विकसित करके बुनियादी
libcsample,libcore, औरrustcको compile करने योग्य बनाना cargoजैसा एक टूल बनाना ताकि Rust package compile किए जा सकें- auto-generated code को हटाना
rustcऔरcargoको compile करने की प्रक्रिया बनाना
- Dozer को धीरे-धीरे विकसित करके बुनियादी
GN⁺ का सार
- यह लेख शुद्ध C में Rust compiler लिखने वाले एक प्रोजेक्ट की कहानी है
- इसमें bootstrapping के महत्व और उसके माध्यम से Rust compiler बनाने की प्रक्रिया समझाई गई है
- Dozer प्रोजेक्ट का लक्ष्य C में bootstrappable Rust compiler बनाना है
- यह प्रोजेक्ट बेहद चुनौतीपूर्ण है, और इसकी सफलता अनिश्चित है, लेकिन प्रयास अपने-आप में सार्थक है
1 टिप्पणियां
Hacker News की राय
Rust को bootstrap करने के लिए, C में proto-Rust लिखने के बाद proto-Rust में पूरा Rust compiler लिखना बेहतर होगा
शौकिया तौर पर Rust में एक C compiler लिखा जा रहा है, और इसे "Small C Compiler" कहा जा रहा है
printf("Hello World!")को handle कर सकने तक इसे open source करने की योजना नहीं हैtypedefसमस्या के कारण अकादमिक जगत का समाधान क्या है, यह जानना चाहते हैंhardware में भी वही bootstrap समस्या मौजूद है
bootstrap के फायदे समझने के लिए 4 links तक जाना पड़ा
bootstrap chain में C++ आ जाने पर bootstrap लगभग समाप्त हो जाता है
target system पर नया binary बनाने के लिए rustc को उस system का support करना होगा
Scheme में C++ interpreter या compiler लिखने की कल्पना करें
पूरे stack को देखें तो यह "trusting trust" समस्या को bypass करने का एक तरीका हो सकता है
QBE को backend के रूप में उपयोग करना पसंद आया
bootstrap प्रक्रिया में toolchain के एक हिस्से के रूप में FORTH के उपयोग पर विचार किया जा सकता है