• Zig भाषा libc functionality को सीधे Zig standard library में implement करने की दिशा में बढ़ रही है, और मौजूदा C source code को धीरे-धीरे हटा रही है
  • अब तक लगभग 250 C source files हटाई जा चुकी हैं, और 2032 बाकी हैं
  • इस बदलाव से compile speed में सुधार, installation size में कमी, और static linking के समय binary size में कमी जैसे प्रभाव मिल रहे हैं
  • हालिया सुधार के कारण zig libc अब अलग static archive नहीं, बल्कि Zig Compilation Unit (ZCU) के भीतर दूसरे code के साथ optimize होती है, जिससे duplicate code removal और LTO-स्तर के optimization संभव होते हैं
  • Zig के अपने static libc provider में बदलने के साथ, संबंधित समस्या होने पर सीधे Zig project में bug report submit करना ज़रूरी है

Zig libc प्रोजेक्ट का अवलोकन

  • कई contributors zig libc subproject में शामिल होकर मौजूदा C-आधारित libc implementation को Zig standard library wrappers से बदल रहे हैं
    • लक्ष्य है duplicated C code को हटाना, और memcpy, atan2 जैसे simple mapping functions या strnlen जैसे सामान्य function wrapping के रूप में उपलब्ध कराना
    • उदाहरण के तौर पर strnlen function को Zig के std.mem.findScalar का उपयोग करके implement किया गया है
  • अब तक लगभग 250 C source files हटाई जा चुकी हैं, और 2032 बाकी हैं

प्रदर्शन और संरचनात्मक सुधार

  • हर function के Zig में बदले जाने के साथ external projects और C language dependencies कम हो रही हैं
    • इससे compile speed बेहतर, installation size सरल और छोटी, और statically linked user applications की binary size कम हो रही है
  • हालिया बदलाव के कारण zig libc को Zig Compilation Unit (ZCU) के भीतर दूसरे Zig code के साथ compile किया जाता है
    • इसे अलग static archive के रूप में link नहीं किया जाता, बल्कि compiler और linker की integrated architecture का उपयोग किया जाता है
    • इससे duplicate code removal और functions के बीच optimization संभव होती है
    • यह link time optimization (LTO) जैसा है, लेकिन linker stage के बजाय frontend stage में किया जाता है

भविष्य के विस्तार की संभावना

  • हालिया std.Io changes के साथ मिलकर libc के I/O behavior को user द्वारा control करने की संभावना है
    • उदाहरण: read, write calls को io_uring event loop में integrate करना
    • resource leak detection features को third-party C code पर भी लागू करना संभव हो सकता है
    • हालांकि, फिलहाल यह अभी परखा नहीं गया, केवल idea stage में है

टेस्टिंग और गुणवत्ता आश्वासन

  • Szabolcs Nagy का libc-test project math functions में regression रोकने में बहुत मददगार रहा है
    • इसी test set से Zig libc की correctness verify की जाती है

उपयोगकर्ता मार्गदर्शन

  • Zig musl, mingw-w64, wasi-libc functionality को खुद provide करने के चरण में है
    • संबंधित समस्या होने पर सीधे Zig project में bug report submit करनी चाहिए
    • इसका उद्देश्य मौजूदा independent libc project maintainers तक गलत issue पहुँचने से रोकना है

समापन

  • लेख की आखिरी पंक्ति “Abolish ICE” से समाप्त होती है (कोई अतिरिक्त व्याख्या नहीं)

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.