TOML कॉन्फ़िगरेशन (.toml)

TOML मानक

टॉम्स ऑब्वियस मिनिमल लैंग्वेज (TOML) एक स्पष्ट, मानव-केंद्रित कॉन्फ़िगरेशन प्रारूप है, जिसे GitHub के सह-संस्थापक Tom Preston-Werner ने बनाया था। इसे Rust (Cargo) और Python (pyproject.toml) सहित आधुनिक प्रोग्रामिंग इकोसिस्टम में व्यापक रूप से अपनाया गया है।

TOML को JSON में कन्वर्ट करें

मुफ्त इन-ब्राउज़र TOML से JSON कन्वर्टर। अपने डिवाइस पर तुरंत फ़ाइलें कन्वर्ट करें।

निरीक्षण और मेटाडेटा

ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके TOML फ़ाइलों की पहचान करते हैं:

फ़ाइलें यहाँ चुनें या छोड़ें

निजी - फ़ाइलें कभी आपके डिवाइस से बाहर नहीं जातीं

या पेस्ट करें Ctrl+V
नेटवर्क पर कोई डेटा भेजे बिना गोपनीयता की गारंटी: बाहरी सर्वर पर 0 बाइट अपलोड किए गए। सारी प्रोसेसिंग आपके ब्राउज़र सैन्डबॉक्स में स्थानीय रूप से हुई।

बाइट-स्तरीय हेडर हस्ताक्षर (मैजिक बाइट्स)

ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके TOML फ़ाइलों की पहचान करते हैं:

HEX हस्ताक्षर (ऑफ़सेट 0):

5B ... 5D

ASCII निरूपण: [...]

मानकीकरण: TOML v1.0.0 विनिर्देश

तकनीकी विनिर्देश

कंटेनर आर्किटेक्चरमानव-पठनीय कॉन्फ़िगरेशन फ़ाइल, जो स्पष्ट रूप से हैश टेबल से मेल खाती है और [tables] तथा key = value युग्मों में संरचित होती है
कंप्रेशनअसंपीड़ित पाठ स्ट्रीम
बाइट एंडियानेसUTF-8 पाठ स्ट्रीम
कलर स्पेसलागू नहीं (कॉन्फ़िगरेशन फ़ाइल)
चैनल और संरचनाटेबल, टेबलों की एरे, इनलाइन टेबल, स्ट्रिंग, पूर्णांक, फ़्लोट, बूलियन और RFC 3339 दिनांक-समय
अधिकतम आयामअसीमित पाठ लंबाई
पारदर्शिताकोई नहीं
स्ट्रीमिंग और प्रोग्रेसिवक्रमिक पंक्ति-दर-पंक्ति कॉन्फ़िगरेशन पार्सिंग

तकनीकी तुलना मैट्रिक्स: TOML बनाम प्रतियोगी

तकनीकी विशेषताTOML (वर्तमान)YAMLJSONINI
अस्पष्टता का जोखिमशून्य (कड़ाई से असंदिग्ध विनिर्देश)उच्च (YAML 'नॉरवे समस्या' बूलियन बग)शून्य (सख्त डेटा प्रकार)मध्यम (कोई औपचारिक मानक नहीं)
अंतर्निहित दिनांक-समय प्रकारRFC 3339 दिनांक और समय के लिए अंतर्निहित समर्थननिहित स्ट्रिंग / दिनांक पार्सिंगकोई नहीं (केवल स्ट्रिंग्स)कोई नहीं (केवल स्ट्रिंग्स)
टिप्पणी समर्थनअंतर्निहित (# टिप्पणियों का समर्थन)अंतर्निहित (# टिप्पणियों का समर्थन)टिप्पणियों की अनुमति नहींअंतर्निहित (; और # टिप्पणियों का समर्थन)
प्राथमिक इकोसिस्टमRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD पाइपलाइनWeb APIs, ब्राउज़र संचारलिगेसी विंडोज, Git कॉन्फ़िगरेशन

सामान्य करप्शन मोड और हेक्स रिकवरी गाइड

पार्सर त्रुटि: 'Duplicate key in table' या 'Invalid table header'।

मूल कारण: दस्तावेज़ के भीतर किसी मौजूदा कुंजी या तालिका नेमस्पेस को फिर से परिभाषित करने का प्रयास करना।

रिकवरी: File2File.app TOML फ़ॉर्मेटर का उपयोग करके TOML सिंटैक्स को सत्यापित और पुनः स्वरूपित करें।

सुरक्षा विश्लेषण और पार्सर अटैक वेक्टर्स

TOML पार्सर्स को प्रोटोटाइप प्रदूषण और पैथोलॉजिकल टेबल सरणी नेस्टिंग से सीपीयू संसाधनों की अत्यधिक खपत से बचाव करना चाहिए।

ज्ञात अटैक वेक्टर्स

  • JavaScript TOML पार्सर्स में प्रोटोटाइप प्रदूषण जो Object.prototype में प्रॉपर्टीज जोड़ता है।
  • गहरे नेस्टेड टेबल सरणी घोषणाओं के माध्यम से सेवा बाधित करना।
  • बड़े पैमाने पर इनलाइन सरणी पार्सिंग के दौरान असीमित मेमोरी आवंटन।

सुरक्षात्मक सर्वोत्तम प्रथाएँ: टेबल नेस्टिंग सीमाओं को सत्यापित करें और प्रोटोटाइप प्रदूषण से सुरक्षित डिक्शनरी ऑब्जेक्ट्स का उपयोग करें।

ऐतिहासिक मूल और मील के पत्थर

2021TOML v1.0.0 औपचारिक रूप से जारी किया गया, जिसने मुख्य सिंटैक्स विनिर्देश को स्थिर कर दिया।
2018पायथन ने आधुनिक बिल्ड कॉन्फ़िगरेशन मानक के रूप में 'pyproject.toml' (PEP 518) को मानकीकृत किया।
2013टॉम प्रेस्टन-वर्नर ने YAML की जटिलता के बिना एक साफ कॉन्फ़िगरेशन प्रारूप प्रदान करने के लिए TOML प्रकाशित किया।

मुख्य लाभ और खूबियाँ

  • पूरी तरह से स्पष्ट: बिना किसी आश्चर्यजनक प्रकार के रूपांतरण के एक हैश टेबल पर स्पष्ट और अनुमानित रूप से मैप करता है।
  • स्ट्रिंग एस्केपिंग के बिना दिनांक-समय के लिए अंतर्निहित प्रथम श्रेणी का समर्थन (RFC 3339 टाइमस्टैम्प, तिथियां, समय)।
  • आधुनिक भाषा टूलिंग (Rust Cargo.toml, Python pyproject.toml) के लिए आधिकारिक मानक कॉन्फ़िगरेशन प्रारूप के रूप में अपनाया गया।

तकनीकी सीमाएँ और कमियाँ

  • YAML की तुलना में गहरे नेस्टेड मल्टी-लेवल ऑब्जेक्ट ट्री विस्तृत और शब्दाडंबरपूर्ण हो सकते हैं।
  • टेबल की सरणी के लिए सिंटैक्स ([[table.array]]) शुरुआती लोगों के लिए सहज न लगने वाला हो सकता है।
  • उच्च-थ्रूपुट मशीन-से-मशीन API डेटा एक्सचेंज के लिए JSON की तुलना में कम कॉम्पैक्ट।

रोचक तकनीकी जानकारी

  • TOML को Tom Preston-Werner द्वारा बनाया गया था, जिन्होंने GitHub की सह-स्थापना भी की थी और Gravatar तथा SemVer (सिमैंटिक वर्ज़निंग) बनाए थे।
  • Cargo पैकेज मेटाडेटा, निर्भरताएँ और लक्ष्य घोषित करने के लिए Cargo.toml का उपयोग करते हैं; अन्य बिल्ड सिस्टम वाले Rust प्रोजेक्ट अलग फ़ाइलें इस्तेमाल कर सकते हैं।
  • JSON के विपरीत, TOML मूल रूप से टिप्पणियों ('#' वर्ण का उपयोग करके) और मल्टीलाइन स्ट्रिंग्स का समर्थन करता है।

अक्सर पूछे जाने वाले तकनीकी प्रश्न

TOML का उपयोग किस लिए किया जाता है?

TOML का उपयोग सॉफ़्टवेयर कॉन्फ़िगरेशन के लिए किया जाता है, जो मुख्य रूप से Rust के Cargo.toml, Python के pyproject.toml, Go Hugo कॉन्फ़िगरेशन और कंटेनर टूल में उपयोग होता है।

कॉन्फ़िगरेशन के लिए YAML की तुलना में TOML को क्यों प्राथमिकता दी जाती है?

TOML, YAML की कुख्यात एज-केस पार्सिंग त्रुटियों (जैसे अनकोटेड 'NO' का बूलियन फ़ॉल्स में बदल जाना) से बचाता है, जबकि टिप्पणियों और स्पष्ट टेबल के साथ मानव-अनुकूल बना रहता है।

मैं TOML को JSON या YAML में कैसे बदल सकता हूँ?

आप अपने वेब ब्राउज़र में सीधे File2File.app का उपयोग करके TOML फ़ाइलों को तुरंत JSON या YAML में बदल सकते हैं।