┐─ تحليل الملف ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ┌
│ المطور : Tom Preston-Werner
│ الفئة : بيانات
│ نوع MIME : application/toml
┘ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── └
ما هو ملف TOML؟
TOML (Tom’s Obvious, Minimal Language — لغة تُوم الواضحة والبسيطة) هي صيغة ملف تكوين أنشأها Tom Preston-Werner، المؤسس المشارك لـ GitHub، عام 2013. صُمِّمت لتكون بديلاً أوضح من YAML وأبسط من JSON في سياق ملفات التكوين.
المزية الرئيسية لـ TOML أنها تُعيَّن بشكل لا غموض فيه إلى جدول هاش (قاموس)، مما يجعل كل قيمة محددة الموضع والنوع. أنواع البيانات المدعومة: نص، عدد صحيح، عشري، منطقي، تاريخ/وقت، مصفوفة، وجدول.
اعتُمدت TOML كصيغة تكوين رسمية لعدة بيئات بارزة: Cargo.toml لإدارة حزم Rust، وpyproject.toml لمشاريع Python، مما أعطاها قاعدة مستخدمين واسعة في مجتمع المطورين.
كيفية فتح ملفات TOML
- VS Code مع إضافة “Even Better TOML” — تلوين وتحقق من الصحة
- Zed Editor — دعم TOML مدمج
- IntelliJ IDEA / CLion (ويندوز، ماك، لينكس) — دعم Rust وCargo كامل
- أي محرر نصوص — ملفات TOML نص عادي تقرؤها بـ Notepad أو Vim
- Python:
import tomllib(مدمج منذ Python 3.11) - Rust: مكتبة
tomlعبر Cargo
المواصفات التقنية
| الخاصية | القيمة |
|---|---|
| الإصدار الحالي | TOML v1.0.0 (2021) |
| الترميز | UTF-8 حصراً |
| أنواع البيانات | نص، عدد، عشري، منطقي، تاريخ، مصفوفة، جدول |
| التعليقات | يبدأ بـ # |
| نوع MIME | application/toml |
| حساسية الحالة | الأسماء حساسة لحالة الأحرف |
| الترتيب | الجداول غير مرتبة |
الاستخدامات الشائعة
- Cargo.toml لمشاريع Rust: تعريف الاسم والإصدار والتبعيات والميزات لكل مشروع Rust
- pyproject.toml لمشاريع Python: تكوين أدوات البناء كـ Poetry وHatch وFlit بدلاً من setup.py
- Hugo للمواقع الثابتة: ملف
config.tomlالرئيسي لإعدادات موقع Hugo - إعدادات Cargo الشاملة: إدارة المرايا والسجلات وإعدادات البناء
- Gitea وForge: كثير من تطبيقات Go تستخدم TOML للإعدادات
TOML مقابل YAML مقابل JSON
| الميزة | TOML | YAML | JSON |
|---|---|---|---|
| سهولة القراءة | ✅ ممتازة | جيدة | متوسطة |
| التعليقات | ✅ | ✅ | ❌ |
| الغموض | ✅ لا غموض | كثير | لا غموض |
| التداخل | محدود | ✅ عميق | ✅ عميق |
| شائع في | Rust، Python | DevOps، Kubernetes | APIs |
مثال عملي
# Cargo.toml لمشروع Rust
[package]
name = "my-app"
version = "0.1.0"
edition = "2021"
description = "تطبيق نموذجي"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
[dev-dependencies]
assert_cmd = "2.0"
[[bin]]
name = "my-app"
path = "src/main.rs"