- C++26 आधिकारिक रूप से तकनीकी रूप से पूरा हो गया है. इसमें reflection, memory safety सुधार, contracts, std::execution जैसी चार प्रमुख क्षमताएँ शामिल हैं
- compile-time reflection को templates के आने के बाद C++ इतिहास का सबसे शक्तिशाली abstraction engine बताया जा रहा है, जिससे भाषा खुद को वर्णित कर सकती है और code generate कर सकती है
- मौजूदा C++ code को C++26 में सिर्फ recompile करने भर से uninitialized local variables के undefined behavior (UB) की पूरी श्रेणी हट जाती है, और मजबूत standard library के साथ bounds safety सुनिश्चित होती है
- Google में तैनाती के नतीजों के अनुसार, 1,000 से अधिक bugs ठीक हुए और production environment में segfaults 30% कम हुए
- GCC ने reflection और contracts को पहले ही trunk में merge कर दिया है, इसलिए compiler implementations द्वारा तेज़ adoption की उम्मीद है
C++26 पूरा: C++11 के बाद सबसे महत्वपूर्ण रिलीज़
- UK के London Croydon में हुई ISO C++ committee meeting में C++26 पर तकनीकी काम अंतिम रूप से पूरा हो गया
- लगभग 210 लोग शामिल हुए (130 प्रत्यक्ष, 80 Zoom से), और 24 देशों के आधिकारिक प्रतिनिधियों ने भाग लिया
- गर्मियों में प्राप्त 411 international comments (CD चरण) को संभालने में बैठक का अधिकांश समय लगा
- नई सुविधाएँ जोड़ने या हटाने के बजाय अंतिम polishing और quality पर ध्यान दिया गया
- इस बैठक में पूरा हुआ C++26 अब international approval ballot (DIS) के लिए अंतिम दस्तावेज़ीकरण चरण में प्रवेश कर चुका है
C++26 की 4 प्रमुख क्षमताएँ
(1) reflection
- templates के आविष्कार के बाद से इसे C++ विकास इतिहास का सबसे बड़ा अपग्रेड कहा जा रहा है; यह भाषा को खुद का वर्णन करने और code generate करने की क्षमता देता है
- जून 2025 में C++ committee ने compile-time reflection को C++26 draft में शामिल कर भाषा के इतिहास में एक बड़ा मोड़ दर्ज किया
- इसे "efficient abstractions को व्यक्त करने के लिए सबसे शक्तिशाली नया engine" कहा गया, और यह भी कि इस रॉकेट से क्या-क्या संभव है, यह खोजने में अगले 10 साल लग सकते हैं
(2) memory safety सुधार
- सिर्फ recompile करने से मौजूदा C++ code में uninitialized local variables को पढ़ने से जुड़ी UB (undefined behavior) की पूरी श्रेणी C++26 में हट जाती है
- Hardened Standard Library को standardize किया गया है, जो vector, span, string, string_view जैसे प्रमुख types के लिए bounds safety सुनिश्चित करती है
- performance overhead औसतन 0.3% (1% से कम) मापा गया
- Apple platforms और Google services में इसे पहले ही सैकड़ों मिलियन lines of code पर तैनात किया जा चुका है
- Google deployment के परिणाम:
- 1,000 से अधिक bugs ठीक किए गए
- सालाना 1,000~2,000 bugs की रोकथाम की संभावना
- पूरे production में segfault दर 30% कम
- Google के कुल C++ codebase में पूरी तरह opt-out करने वाली services सिर्फ 5, और unsafe access API के उपयोग के मामले केवल 7
(3) contracts: pre, post, contract_assert
- C++26 में language-level contracts जोड़े गए — function declarations में precondition, postcondition और assertion statements का समर्थन
- इसे C के assert macro से कहीं अधिक शक्तिशाली माना जा रहा है
- contracts अपनाने पर मतदान के नतीजे:
- फ़रवरी 2025 (working draft merge): समर्थन 100, विरोध 14, निरपेक्ष 12
- मार्च 2026 (C++26 अंतिम स्वीकृति): समर्थन 114, विरोध 12, निरपेक्ष 3
- committee के कुछ विशेषज्ञों की तकनीकी चिंताएँ बनी रहीं, लेकिन तीन बैठकों और कई conference calls में इस पर पर्याप्त चर्चा हुई
- नवंबर 2025 से पहले की बैठकों में feedback के आधार पर contracts specification की 2 bugs ठीक की गईं
(4) std::execution (Sender/Receiver)
- यह C++ का asynchronous model है, जो concurrency और parallelism को व्यक्त और नियंत्रित करने के लिए एक unified framework देता है
- structured concurrency (जहाँ lifecycle सख्ती से nested होता है) को आसानी से लिखने योग्य बनाकर यह data races को संरचनात्मक रूप से रोकने वाली safety विशेषता देता है
- ध्यान दें: फिलहाल documentation कम है और "fingers-and-toes" libraries पर्याप्त नहीं हैं, इसलिए इसका adoption अन्य C++ features की तुलना में कठिन हो सकता है
- किसी अनुभवी विशेषज्ञ की मदद और मौजूदा asynchronous code के साथ integration के लिए adapter libraries लिखने की ज़रूरत पड़ सकती है
C++26 के तेज़ adoption की उम्मीद क्यों है
- यह C++11 के बाद सबसे अधिक मांग वाला feature set है, क्योंकि इसमें reflection और safety improvements शामिल हैं जिन्हें अधिकांश C++ developers रोज़मर्रा में इस्तेमाल करेंगे
- C++17, C++20, C++23 के parallel STL, concepts, coroutines, modules आदि को सभी C++ developers पर C++11 जितना व्यापक प्रभाव डालने वाला नहीं माना गया
- GCC और Clang ने C++26 के विकास के दौरान लगभग दो-तिहाई features पहले ही pre-implement कर रखे थे
- GCC ने reflection और contracts को trunk में merge कर दिया है और release की तैयारी में है
C++29 पर काम शुरू: memory safety को और गहरा करना
- इस बैठक में C++29 schedule भी अपनाया गया, जिससे 3-वर्षीय release cycle जारी रहेगी
- C++29 का मुख्य फोकस type और memory safety को और मज़बूत करना तय किया गया
- undefined behavior (UB) को और कम करने वाले प्रस्तावों की समीक्षा चल रही है
- SG23 (safety/security subgroup) में Bjarne Stroustrup की P3984 type safety profile और Gabriel Dos Reis के general profile framework के आधार पर काम चल रहा है
- Apple के Oliver Hunt ने P4158R0 "C++ Subsetting and Restriction for Memory Safety" प्रस्तुत किया
- WebKit के 40 लाख से अधिक lines of code पर subset-of-superset approach लागू की गई
- रिपोर्ट के अनुसार यह "कई vulnerability classes को रोकती है, और मौजूदा policy अतीत के अधिकांश exploits को रोक सकती थी"
- memory safety विषय पर committee के आधे से अधिक सदस्यों की मौजूदगी वाले बुधवार शाम सत्र और लगभग 90 लोगों वाले शुक्रवार दोपहर EWG-only सत्र में गहन चर्चा हुई
- quantities and units library (P3045R7 "Quantities and units library") SG6 और SG18 से आगे बढ़कर LEWG (main library evolution subgroup) तक पहुँची
आगे की समय-सारिणी
- अगली दो बैठकें Brno, Czech Republic (जून) और Búzios, Rio de Janeiro, Brazil (नवंबर) में होंगी
- इन दोनों बैठकों में C++29 working draft में features जोड़ने का काम शुरू होगा
- अभी से अगली बैठक तक कई subgroup telecons (वीडियो मीटिंग्स) पहले ही schedule में शामिल हैं
अभी कोई टिप्पणी नहीं है.