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

TOML मानक

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

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

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

इंस्पेक्ट और मेटाडेटा

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

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

100% प्राइवेट इन-ब्राउज़र कन्वर्शन - फ़ाइलें कभी आपका डिवाइस नहीं छोड़तीं

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

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

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

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

5B ... 5D

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

मानकीकरण: TOML v1.0.0 Specification

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

कंटेनर आर्किटेक्चरHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
कंप्रेशनUncompressed text stream
बाइट एंडियानेसUTF-8 text stream
कलर स्पेसN/A (Configuration File)
चैनल और संरचनाTables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
अधिकतम आयामUnbounded text length
पारदर्शिता (Transparency)None
स्ट्रीमिंग और प्रोग्रेसिवSequential line-by-line configuration parsing

तकनीकी तुलना मैट्रिक्स: 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 TOML फ़ॉर्मेटर का उपयोग करके TOML सिंटैक्स को सत्यापित और पुनः स्वरूपित करें।

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

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

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

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

सुरक्षात्मक सर्वोत्तम प्रथाएँ:

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

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 (सेमींटिक वर्ज़निंग) बनाए थे।
  • प्रत्येक Rust प्रोजेक्ट में 'Cargo.toml' फ़ाइल TOML प्रारूप में सभी पैकेज निर्भरता और कंपाइलर फ़्लैग को निर्दिष्ट करती है।
  • 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 में बदल सकते हैं।