- Anthropic के Claude Opus 4.6 द्वारा पूरी तरह लिखा गया CCC(Claude’s C Compiler) यह दावा करते हुए सार्वजनिक किया गया कि यह Linux kernel को compile कर सकता है
- Rust में लिखा गया standalone compiler, जिसमें frontend से linker तक सभी components सीधे implement किए गए हैं, लेकिन GCC की तुलना में performance और optimization quality काफी कम है
- SQLite और Linux kernel पर किए गए benchmark में CCC ने सभी C files को बिना error compile किया, लेकिन linker चरण में 40 हज़ार से अधिक reference errors के कारण build असफल रहा
- SQLite की execution performance अधिकतम 158,000 गुना धीमी थी, binary size 3 गुना से अधिक बड़ी थी, और optimization options (
-O2 आदि) प्रभावहीन थे
- AI ने एक पूर्ण C compiler बनाया, यह तकनीकी रूप से महत्वपूर्ण है, लेकिन वास्तविक उपयोग के लिए आवश्यक efficiency और compatibility अभी भी अपर्याप्त है
CCC का अवलोकन और संरचना
- CCC, Anthropic द्वारा Claude का उपयोग करके बनाया गया पूरी तरह AI-लिखित C compiler है, जो x86-64, i686, AArch64, RISC-V 64 को support करता है
- Rust में लिखा गया, इसमें SSA-आधारित IR, optimizer, code generator, assembler, linker, और DWARF debug information generation तक शामिल है
- इसमें compiler, assembler और linker की भूमिकाओं को अलग-अलग समझाया गया है, और linker को सबसे जटिल तथा error-प्रवण हिस्सा बताया गया है
- Linux kernel, GCC extensions और जटिल linker scripts का उपयोग करता है, इसलिए उसे शुरुआती test target के रूप में अनुपयुक्त माना गया; इसके बजाय SQLite को मुख्य benchmark चुना गया
टेस्ट वातावरण और विधि
- दो Debian-आधारित VM (6 vCPU, 16GB RAM) पर समान परिस्थितियों में GCC 14.2.0 और CCC की तुलना की गई
- तुलना के बिंदु: compile time, binary size, execution speed, memory usage, stability
- CCC ने gcc_m16 feature के जरिए केवल 16-bit boot code GCC को सौंपा, बाकी सब CCC ने संभाला
- SQLite benchmark CPU-केंद्रित रूप से डिज़ाइन किया गया था, जिसमें 42 SQL operations को 10 चरणों में चलाया गया
प्रमुख परिणामों का सार
- Linux kernel 6.9: CCC ने 2,844 C files सभी compile कर दीं, लेकिन linker चरण में 40,784 undefined reference errors के कारण असफल रहा
- error का कारण:
__jump_table, __ksymtab sections में गलत relocation और symbol generation
- SQLite compile: CCC, GCC से 1.3 गुना धीमा था, binary size 2.7~3 गुना, और memory usage 5.9 गुना थी
- SQLite execution performance: GCC
-O0 की तुलना में 737 गुना, और -O2 की तुलना में 1,242 गुना धीमी
- साधारण queries 1~7 गुना धीमी थीं, जबकि nested-loop queries अधिकतम 158,000 गुना धीमी थीं
- Crash tests के सभी 5 प्रकार पास हुए, यानी functional correctness सुनिश्चित हुई
प्रदर्शन गिरावट के कारण
- अत्यधिक register spilling: अधिकांश local variables को stack में store करने से memory access बहुत बढ़ गया
sqlite3VdbeExec function में 100 से अधिक variables stack पर संभाले गए, जिससे code length 3 गुना बढ़ गई
- Optimization options प्रभावहीन:
-O0 और -O2 के परिणाम पूरी तरह समान थे; सभी levels पर 15 SSA passes एक जैसे चले
- Frame pointer corruption के कारण GDB debugging संभव नहीं थी
- Code size inflation: SQLite binary 4.27MB रही, जो GCC की तुलना में 2.78 गुना बड़ी थी, जिससे instruction cache misses बढ़ीं
- Symbol table का अभाव: internal function symbols न होने से profiling संभव नहीं थी
CCC की ताकत और सीमाएँ
- ताकत
- Linux kernel की सभी C files को बिना error compile किया
- SQLite के परिणामों में correctness और stability सुनिश्चित रही, segfault नहीं हुआ
- GCC-compatible command-line interface support करता है
- सीमाएँ
- execution speed में अत्यधिक गिरावट (अधिकतम 158,000 गुना)
- linker incompatibility के कारण kernel build विफल
- binary size और memory usage बहुत अधिक
- optimization और debug information का अभाव,
-O options प्रभावहीन
- compile speed भी GCC से 25% धीमी
“Hello World” समस्या
- सार्वजनिक होने के तुरंत बाद “Hello world does not compile” issue सामने आया
stddef.h, stdarg.h नहीं मिलने के कारण preprocessing चरण में विफलता हुई
- GitHub पर 288 से अधिक प्रतिक्रियाएँ और लगभग 200 comments आए, जिससे यह चर्चा का विषय बन गया
- कुछ users ने इसे “undergraduate-level compiler assignment” जैसा बताया
निष्कर्ष
- CCC, इस बात का प्रमाण है कि AI एक पूर्ण C compiler बना सकता है
- इसने Linux kernel की सभी C files को बिना error संभाला और SQLite को functional रूप से सही चलाया
- लेकिन वास्तविक उपयोग के लिए यह उपयुक्त नहीं है
- execution performance बहुत खराब है, और linker, optimization, debugging features अधूरे हैं
- शोध उपलब्धि के रूप में यह महत्वपूर्ण है, लेकिन production-grade compiler के रूप में GCC, Clang जैसे मौजूदा tools अभी भी अनिवार्य हैं
अभी कोई टिप्पणी नहीं है.