تهيئة TOML (.toml)

مواصفات قياسي

لغة توم الواضحة البسيطة (TOML) تنسيق إعدادات واضح لا يحتمل اللبس، ابتكره المؤسس المشارك لـ GitHub، Tom Preston-Werner. واعتمدته بيئات برمجة حديثة، منها Rust (Cargo) وPython (pyproject.toml).

تحويل TOML إلى JSON

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

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

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

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

خاص - لا تغادر الملفات جهازك أبدًا

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

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

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

التوقيع الست عشري (الإزاحة 0):

5B ... 5D

تمثيل ASCII: [...]

التوحيد القياسي: مواصفات TOML v1.0.0

المواصفات الفنية

هيكلية الحاويةملف إعدادات مقروء بوضوح، يتحول دون لبس إلى جدول تجزئة، وبنيته جداول [tables] وأزواج key = value
الضغطتدفق نصي غير مضغوط
ترتيب البايتات (Endianness)تدفق نصي بترميز UTF-8
مساحات الألوانلا ينطبق (ملف إعدادات)
القنوات والبنيةجداول ومصفوفات جداول وجداول مضمنة ونصوص وأعداد صحيحة وعشرية وقيم منطقية وتواريخ وأوقات وفق RFC 3339
الحد الأقصى للأبعادطول النص غير محدود
الشفافيةلا ينطبق
البث والتحميل التدرجيتحليل الإعدادات سطرًا تلو الآخر وبالتتابع

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

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

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

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

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

الاسترداد: تحقق من صحة صياغة TOML وأعد تنسيقها باستخدام أداة تنسيق TOML من File2File.app.

تحليل الأمان ومتجهات الهجوم على المحلّل

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

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

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

أفضل الممارسات الدفاعية: تحقق من حدود تداخل الجداول واستخدم كائنات قواميس آمنة من تلوث النماذج الأولية.

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

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

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

  • لا تحتمل اللبس: تتحول مباشرةً وبطريقة متوقعة إلى جدول تجزئة، من دون تحويل مفاجئ لأنواع البيانات.
  • دعم أصلي للتاريخ والوقت (طوابع زمنية بتنسيق 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 مباشرة من متصفح الويب الخاص بك.