इंटेलिजेंस रिपोर्ट

Go 1.27 में encoding/json/v2 और jsontext प्रयोग से स्थिर संस्करण बने

एक साल पहले प्रयोग के तौर पर जारी हुए नए JSON पैकेज encoding/json की पुरानी खामियों को दूर करते हैं, जो शुद्धता, सुरक्षा और प्रदर्शन से जुड़ी थीं।

INSIGHTEX Editorial Desk

पढ़ने में 2 मिनट

Go 1.27 में encoding/json/v2 और jsontext प्रयोग से स्थिर संस्करण बनेइंटेलिजेंस रिपोर्ट

क्या हुआ

Go की रिपोर्ट के अनुसार, Go 1.27 रिलीज़ के साथ encoding/json/v2 पैकेज और उसका सहयोगी encoding/json/jsontext स्थिर स्थिति में पहुँच गए हैं और सामान्य उपयोग के लिए खुले हैं। 4 नवंबर 2026 की इस पोस्ट के सात लेखक थे, जिनमें Joe Tsai, Damien Neil, Daniel Martí और Michael Pratt शामिल हैं। यह पिछले साल पेश किए गए API के प्रायोगिक संस्करण के बाद आया है, जिसे आगे की प्रतिक्रिया के आधार पर परिष्कृत किया गया।

लेखकों ने कहा कि मूल encoding/json पैकेज लचीला साबित हुआ है, लेकिन उसमें ऐसी खामियाँ हैं जिन्हें उपयोगकर्ता वर्षों से बताते रहे हैं। यह अमान्य UTF-8 को स्वीकार कर लेता है, जबकि RFC 8259 इसे मना करता है। यह दोहराए गए सदस्य नामों वाले ऑब्जेक्ट भी स्वीकार कर लेता है, जो एक ऐसी कमज़ोरी है जिसका हमलावर पहले दुरुपयोग कर चुके हैं, उदाहरण के लिए CVE-2017-12635 में। इसके अलावा, यह फ़ील्ड नामों का मिलान अक्षरों के केस की परवाह किए बिना करता है और nil स्लाइस तथा मैप को null के रूप में एन्कोड करता है।

पोस्ट के अनुसार, Go 1 की संगतता प्रतिबद्धता तोड़े बिना इन व्यवहारों को ठीक नहीं किया जा सकता था। यही बात प्रदर्शन की सीमाओं पर भी लागू होती है, जैसे पूरे मान को मेमोरी में बफ़र करना और कस्टम मेथड के बार-बार Marshal या Unmarshal को पुनरावर्ती रूप से बुलाने पर द्विघात (quadratic) मंदी आना। नया डिज़ाइन काम को दो हिस्सों में बाँटता है: jsontext रिफ़्लेक्शन पर निर्भर हुए बिना JSON सिंटैक्स संभालता है, जबकि json/v2 JSON मानों को Go प्रकारों से जोड़ता है।

पृष्ठभूमि

Go अपनी स्टैंडर्ड लाइब्रेरी में Go 1.0 से भी पहले से JSON समर्थन देता आया है, और लेखक JSON को इंटरनेट पर सबसे ज़्यादा इस्तेमाल होने वाला डेटा फ़ॉर्मैट बताते हैं। चूँकि समस्याएँ मौजूदा API से ही उपजी हैं, इसलिए उन्होंने मूल पैकेज के भीतर MarshalV2 जैसे समानांतर फ़ंक्शन जोड़ने के बजाय एक अलग v2 नेमस्पेस चुना। पोस्ट में उद्धृत एक सर्वेक्षण में पाया गया कि ज़्यादातर Go उपयोगकर्ता चाहते हैं कि nil स्लाइस और मैप खाली ऐरे या ऑब्जेक्ट के रूप में एन्कोड हों।

स्रोतGo

ब्रीफ़िंग

टेक का पूरा सप्ताह, एक ईमेल में।

हर सप्ताह वे रिपोर्ट्स जो आपके समय के लायक हैं। कभी भी अनसब्सक्राइब करें।