تهيئة TOML (.toml)

TOML قياسي

تنسيق لغة توم الواضحة البسيطة (TOML) هو تنسيق تكوين واضح وموجه للمستخدم، صممه المؤسس المشارك لـ GitHub توم بريستون-ورنر، وقد تم اعتماده على نطاق واسع عبر أنظمة البرمجة الحديثة بما في ذلك Rust (Cargo) وPython (pyproject.toml).

تحويل TOML إلى JSON

محول مجاني داخل المتصفح للتحويل من TOML إلى JSON. قم بتحويل الملفات فوراً على جهازك.

فحص البيانات الوصفية

تتعرف أنظمة التشغيل ومحللات الملفات على ملفات TOML من خلال فحص تسلسل البايت الثنائي البادئ:

اختر أو أقطِف الملفات هنا

تحويل خاص بنسبة 100% داخل المتصفح - لا تغادر الملفات جهازك أبداً

أو الصق Ctrl+V
ضمان الخصوصية وعدم الإرسال عبر الشبكة: صفر بايت يتم رفعه إلى خوادم خارجية. تمت كل عمليات المعالجة محلياً في صندوق الحماية (Sandbox) الخاص بمتصفحك.

توقيع رأس الملف على مستوى البايت (Magic Bytes)

تتعرف أنظمة التشغيل ومحللات الملفات على ملفات TOML من خلال فحص تسلسل البايت الثنائي البادئ:

التوقيع الست عشري (الإزاحة 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
ترتيب البايتات (Endianness)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
الشفافيةNone
البث والتحميل التدرجيSequential line-by-line configuration parsing

مصفوفة المقارنة التقنية: TOML مقابل المنافسين

السمة التقنيةTOML (الحالي)YAMLJSONINI
خطر الغموضصفر (مواصفات دقيقة خالية من الغموض)مرتفع (أخطاء القيم المنطقية لمشكلة 'النرويج' في YAML)صفر (أنواع بيانات صارمة)معتدل (لا يوجد معيار رسمى)
أنواع التاريخ والوقت الأصليةدعم أصلي لتاريخ ووقت RFC 3339تحليل ضمني للنصوص / التواريخلا يوجد (نصوص فقط)لا يوجد (نصوص فقط)
دعم التعليقاتأصلي (تعليقات #)أصلي (تعليقات #)غير مسموح بالتعليقاتأصلي (تعليقات ; و #)
النظام البيئي الأساسيRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, خطوط أنابيب CI/CDواجهات برمجة تطبيقات الويب، الاتصال عبر المتصفحنظام ويندوز القديم، تكوين Git

أنماط التلف الشائعة ودليل استرداد النظام السداسي

خطأ في المُحلل: 'Duplicate key in table' أو 'Invalid table header'.

السبب الجذري: محاولة إعادة تعريف مفتاح موجود أو نطاق جدول داخل المستند.

الاسترداد: التحقق من صحة وإعادة تنسيق بنية TOML باستخدام مُنسق TOML من File2File.

تحليل الأمان وناقلات هجوم المحلل اللغوي

يجب أن تحمي محللات TOML نفسها ضد تلوث النماذج الأولي واستنفاد وحدة المعالجة المركزية الناتج عن التداخل المرضي لصفوف الجداول.

ناقلات الهجوم المعروفة

  • تلوث النماذج الأولية في محللات TOML للغة JavaScript عن طريق حقن خصائص في Object.prototype.
  • هجمات حجب الخدمة عبر إعلانات صفوف الجداول المتداخلة بعمق.
  • تخصيص الذاكرة غير المحدود أثناء تحليل المصفوفات الضمنية الهائلة.

أفضل الممارسات الدفاعية:

الأصول التاريخية والمحطات الرئيسية

2021إطلاق TOML v1.0.0 بشكل رسمي، مما أدى إلى تثبيت مواصفات البنية الأساسية.
2018بايثون تعتمد 'pyproject.toml' (PEP 518) كمعيار حديث لتكوين البناء.
2013توم بريستون-ورنر ينشر TOML لتوفير تنسيق تكوين نظيف بدون تعقيدات YAML.

المزايا الرئيسية والإيجابيات

  • واضح تماماً: يترابق بشكل نظيف ومستنبئ مع جدول تجزئة بدون أي تحويل أنواع مفاجئ.
  • دعم أصلي ممتاز للتواريخ والأوقات (طوابع زمنية بتنسيق RFC 3339، التواريخ، الأوقات) دون الحاجة للهروب النصي.
  • تم اعتماده كمعيار رسمي لتكوين أدوات البرمجة الحديثة (Rust Cargo.toml، Python pyproject.toml).

القيود الفنية والسلبيات

  • شجيرات الكائنات المتداخلة بعمق متعدد المستويات يمكن أن تصبح مطولة مقارنة بـ YAML.
  • بنية صفوف الجداول ([[table.array]]) قد تكون غير بديهية للمبتدئين.
  • أقل إحكاماً من JSON لتبادل بيانات واجهات برمجة التطبيقات ذات الإنتاجية العالية بين الآلات.

معلومات تقنية طريفة

  • تم إنشاء TOML بواسطة توم بريستون-ورنر، الذي شارك أيضاً في تأسيس GitHub وابتكر Gravatar وSemVer (الإصدار الدلالي).
  • ملف 'Cargo.toml' في كل مشروع Rust يحدد كافة تبعيات الحزمة وأعلام المترجم بتنسيق TOML.
  • على عكس JSON، يدعم TOML التعليقات بشكل أصلي (باستخدام الحرف '#') والنصوص المتعددة الأسطر.

الأسئلة التقنية المتكررة

ما هو الغرض من استخدام TOML؟

تُستخدم تنسيقية TOML لإعدادات البرمجيات، وأبرزها في ملف Cargo.toml بلغة Rust، و pyproject.toml بلغة Python، وإعدادات Go Hugo، وأدوات الحاويات (Containers).

لماذا يُفضل استخدام TOML على YAML في إعدادات البرامج؟

تتجنب TOML أخطاء التحليل الشهيرة في الحالات الحدية لملفات YAML (مثل تحويل كلمة 'NO' غير المحاطة بعلامات تنصيص إلى القيمة المنطقية false)، مع الحفاظ على سهولة القراءة للبشر بفضل دعم التعليقات والجداول الواضحة.

كيف يمكنني تحويل ملفات TOML إلى JSON أو YAML؟

يمكنك تحويل ملفات TOML إلى JSON أو YAML فوراً باستخدام موقع File2File.app مباشرة من متصفح الويب الخاص بك.