منصوبے کے بارے میں
rucc ایک ابتدائی مرحلے کا آپٹیمائزنگ C کمپائلر ہے جو Rust میں لکھا گیا ہے۔ README کے مطابق، پروجیکٹ کی ہدائیسی لڑیاریSQLite، پھر مشہور C پروجیکٹس کا درمیانی طبقہ، پھر PostgreSQL، اور آخر کار Linux kernel ہے، جس پر source patches کی اجازت نہیں۔ README واضح طور پر کہتا ہے کہ ابھی تک کوئی بھی C کمپائل نہیں کرتا۔ M0 اور M1 مکمل ہیں، v0.1.0 اور v0.2.0 ٹیگ ہوئے۔ M0 میں workspace، checked layer rule، driver کا argument parsing اور phase plan، job scheduler، اور Linux، macOS اور Windows پر CI شامل تھی۔ M1 preprocessor ہے، جسے مکمل بتایا گیا ہے: translation phases، hide set macro expansion، directives بشمول _Pragma اور #embed، include resolution with #include_next اور #pragma once، __has_* خاندان، اور target description سے پیدا کردہ predefined macros۔ rucc -E a.c ایک اصلی preprocessor ہے جس کی آؤٹ پٹ glibc اور musl header sets پر reference compiler کے ساتھ diff کی جاتی ہے۔ rucc a.c فی الحال phase plan دکھاتا ہے اور اطلاع دیتا ہے کہ preprocessing کے بعد کے phases نافذ نہیں ہوئے۔
ڈیزائن سیکشن متعدد منصوبہ بند یا جاری انتخابوں کا تفصیل بیان کرتا ہے۔ Rewrite rules اور instruction selection patterns ایک DSL میں لکھے جاتے ہیں؛ ایک ہی rule text matcher کے لیے کمپائل ہوتا ہے اور CI میں SMT solver کو سونپا جاتا ہے، اور وہ قواعد جو solver ثابت نہیں کر سکتا rule set میں داخل نہیں ہوتے۔ IR کو poison اور undef سے پاک بنایا جانے والا ہے۔ Acyclic e-graphs rewriting، constant folding اور global code motion کے لیے منصوبہ بند ہیں، جہاں e-graph rewriter اور روایتی pass pipeline دونوں بنا کر ناپے جائیں گے تاکہ فاتح کا انتخاب کیا جا سکے۔ Layer rule کو cargo xtask layers سے چیک کیا جاتا ہے، crates کو ranks تفویض کر کے ایک crate صرف سختی سے کم rank والے crates پر انحصار کر سکتا ہے۔ compile path کا مقصد external assembler یا linker سے پاک ہونا ہے: instructions bytes میں encode کی جاتی ہیں، ELF، Mach-O اور COFF in-project لکھے جاتے ہیں، اور DWARF in-project خارج کیا جاتا ہے۔ README کہتا ہے کہ 1.0 سے پہلے linking اب بھی real linker کو شیل آؤٹ کرتا ہے، اور کیا یہ سچ رہے گا ایک کھلا سوال ہے۔
README مقاصد کو correctness، compile throughput، code quality اور portability پر قابل پیمائش دعویٰ کے طور پر پیش کرتا ہے، methodology اور reporting rules نتائج موجود ہونے سے قبل spec/16-performance.md میں رکھے جاتے ہیں۔ README کے مطابق repository layout میں compiler کے لیے crates، rule DSL compiler اور SMT verifier کے لیے build-tools، target کے لیے compiled runtime crates، بیسٹن(spec) دستاویزات، سترہ cross-compilation دستاویزات، generated docs، xtask build automation، اور tests شامل ہیں۔ انسٹالیشن کے اختیارات میں Linux، macOS اور Windows کے لیے prebuilt binaries SHA-256 فائلوں اور build provenance attestations کے ساتھ، نیز cargo install rucc شامل ہیں۔ build کا طریقہ git clone، cargo build --release بتایا گیا ہے، build میں configure، CMake، Python نہیں، نہ ہی build.rs اور xtask کے باہر code generation۔ tasks میں cargo xtask layers، cargo xtask style، اور cargo xtask ci شامل ہیں۔ README out-of-scope اشیاء میں C++، MSVC dialect extensions، JIT، MSan، اور CompCert-style verified compiler شامل ہیں۔ license Apache-2.0 ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.