تهيئة TOML (.toml)
مواصفات قياسيلغة توم الواضحة البسيطة (TOML) تنسيق إعدادات واضح لا يحتمل اللبس، ابتكره المؤسس المشارك لـ GitHub، Tom Preston-Werner. واعتمدته بيئات برمجة حديثة، منها Rust (Cargo) وPython (pyproject.toml).
تحويل TOML إلى JSON
محول مجاني داخل المتصفح للتحويل من TOML إلى JSON. قم بتحويل الملفات فوراً على جهازك.
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات TOML من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (Magic Bytes)
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات TOML من خلال فحص تسلسل البايت الثنائي البادئ:
التوقيع الست عشري (الإزاحة 0):
5B ... 5Dتمثيل ASCII: [...]
التوحيد القياسي: مواصفات TOML v1.0.0
المواصفات الفنية
| هيكلية الحاوية | ملف إعدادات مقروء بوضوح، يتحول دون لبس إلى جدول تجزئة، وبنيته جداول [tables] وأزواج key = value |
| الضغط | تدفق نصي غير مضغوط |
| ترتيب البايتات (Endianness) | تدفق نصي بترميز UTF-8 |
| مساحات الألوان | لا ينطبق (ملف إعدادات) |
| القنوات والبنية | جداول ومصفوفات جداول وجداول مضمنة ونصوص وأعداد صحيحة وعشرية وقيم منطقية وتواريخ وأوقات وفق RFC 3339 |
| الحد الأقصى للأبعاد | طول النص غير محدود |
| الشفافية | لا ينطبق |
| البث والتحميل التدرجي | تحليل الإعدادات سطرًا تلو الآخر وبالتتابع |
مصفوفة المقارنة التقنية: TOML مقابل المنافسين
| السمة التقنية | TOML (الحالي) | YAML | JSON | INI |
|---|---|---|---|---|
| خطر الغموض | صفر (مواصفات دقيقة خالية من الغموض) | مرتفع (أخطاء في القيم المنطقية المرتبطة بمشكلة «النرويج» في YAML) | صفر (أنواع بيانات صارمة) | معتدل (لا يوجد معيار رسمي) |
| أنواع التاريخ والوقت الأصلية | دعم أصلي للتاريخ والوقت وفق RFC 3339 | استنتاج ضمني لنوع النص أو التاريخ | لا يوجد (نصوص فقط) | لا يوجد (نصوص فقط) |
| دعم التعليقات | مدعوم مباشرةً (تعليقات #) | مدعوم مباشرةً (تعليقات #) | غير مسموح بالتعليقات | مدعوم مباشرةً (تعليقات ; و#) |
| أبرز مجالات الاستخدام | Rust (Cargo)، Python (PEP 518)، Go | Kubernetes وAnsible وخطوط CI/CD | واجهات برمجة تطبيقات الويب، الاتصال عبر المتصفح | أنظمة Windows القديمة، وملفات إعداد Git |
أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري
خطأ في المُحلل: 'Duplicate key in table' أو 'Invalid table header'.
السبب الجذري: محاولة إعادة تعريف مفتاح موجود أو نطاق جدول داخل المستند.
الاسترداد: تحقق من صحة صياغة TOML وأعد تنسيقها باستخدام أداة تنسيق TOML من File2File.app.
تحليل الأمان ومتجهات الهجوم على المحلّل
يجب أن تتصدى محللات TOML لهجمات تلويث النماذج الأولية واستنزاف وحدة المعالجة المركزية الناتج عن تداخلات مرضية لمصفوفات الجداول.
ناقلات الهجوم المعروفة
- تلوث النماذج الأولية في محللات TOML للغة JavaScript عن طريق حقن خصائص في Object.prototype.
- هجمات حجب الخدمة عبر تعريفات متداخلة بعمق لمصفوفات الجداول.
- تخصيص الذاكرة غير المحدود أثناء تحليل المصفوفات الضمنية الهائلة.
أفضل الممارسات الدفاعية: تحقق من حدود تداخل الجداول واستخدم كائنات قواميس آمنة من تلوث النماذج الأولية.
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- لا تحتمل اللبس: تتحول مباشرةً وبطريقة متوقعة إلى جدول تجزئة، من دون تحويل مفاجئ لأنواع البيانات.
- دعم أصلي للتاريخ والوقت (طوابع زمنية بتنسيق RFC 3339، وتواريخ، وأوقات) دون الحاجة إلى تهريب السلاسل النصية.
- اعتُمد تنسيقًا رسميًا لإعداد أدوات لغات البرمجة الحديثة (Rust Cargo.toml، Python pyproject.toml).
القيود الفنية والسلبيات
- يمكن أن تصبح أشجار الكائنات المتداخلة بعمق وعلى مستويات متعددة مطولة مقارنة بـ YAML.
- قد تكون صياغة مصفوفات الجداول ([[table.array]]) غير بديهية للمبتدئين.
- أقل اختصارًا من JSON عند تبادل بيانات واجهات برمجة التطبيقات بين الأنظمة ذات معدل النقل العالي.
معلومات تقنية طريفة
- أنشأ TOML Tom Preston-Werner، الذي شارك أيضًا في تأسيس GitHub وابتكر Gravatar وSemVer (الإصدار الدلالي).
- تستخدم حزم Cargo الملف Cargo.toml للإعلان عن بيانات الحزمة الوصفية والاعتماديات والأهداف؛ وقد تستخدم مشاريع Rust التي تعتمد أدوات بناء أخرى ملفات مختلفة.
- على عكس JSON، يدعم TOML التعليقات بشكل أصلي (باستخدام الحرف '#') والنصوص المتعددة الأسطر.
الأسئلة التقنية المتكررة
فيما يُستخدم TOML؟
يُستخدم TOML لإعداد البرمجيات، وأبرزها ملف Cargo.toml في Rust وpyproject.toml في Python وإعدادات Hugo المكتوب بلغة Go وأدوات الحاويات.
لماذا يُفضل استخدام TOML على YAML في إعدادات البرامج؟
تتجنب TOML أخطاء التحليل الشهيرة في الحالات الخاصة بملفات YAML (مثل تفسير 'NO' غير المحاطة بعلامات اقتباس على أنها القيمة المنطقية false)، مع سهولة قراءتها للبشر بفضل دعم التعليقات والجداول الواضحة.
كيف يمكنني تحويل ملفات TOML إلى JSON أو YAML؟
يمكنك تحويل ملفات TOML إلى JSON أو YAML فوراً باستخدام موقع File2File.app مباشرة من متصفح الويب الخاص بك.