مصرف سي الصغير

**مترجم سي الصغير** (بالإنجليزية: Tiny C Compiler) ويُعرف اختصارًا بـ **TCC** أو **tCc** أو **TinyCC**، هو مترجم للغة سي مخصص لمعالجات x86 (32-بت)، إكس86-64 وأرم. كتبه في البداية فابريس بيلار. صُمم ليعمل على الحواسيب البطيئة ذات المساحة المحدودة (مثل قرص إنقاذ). تمت إضافة دعم ويندوز في الإصدار 0.9.23 (17 يونيو 2005). يُوزّع TCC تحت رخصة جنو العمومية الصغرى.

يدّعي TCC أنه يُنفّذ كامل مواصفات أنسي سي (C89/C90)، ومعظم مواصفات C99، بالإضافة إلى العديد من امتدادات GNU C بما في ذلك التجميع المضمّن.

## المميزات
يتميز TCC بعدد من الخصائص مقارنةً بالمترجمات الأخرى:
* حجمه الصغير (حوالي 100 كيلوبايت لملف التنفيذ x86) وبصمة الذاكرة المحدودة تسمح باستخدامه مباشرة من قرص مرن 1.44 ميغابايت.
* يُنتج شيفرة أصلية بسرعة كبيرة؛ وفقًا لبيلار، يترجم ويربط البرامج أسرع بحوالي تسع مرات من GCC. اعتبارًا من 2023، فرع التطوير "mob" يتضمن دعم ريسك-فايف وTMS320C67xx (شريحة معالج الإشارة الرقمية).
* يحتوي على ميزات خاصة مثل فاحص الذاكرة والحدود لتحسين استقرار الشيفرة.
* يسمح بتشغيل البرامج مباشرة أثناء الترجمة باستخدام خيار في سطر الأوامر، مما يمكّن من استخدامه كسكربت صدفة عبر سطر الشيبانغ في أنظمة يونكس.

### توضيح إضافي
* **السرعة**: بفضل تصميمه البسيط، يمكن استخدامه في بيئات التطوير السريعة أو عند الحاجة إلى بناء تجريبي دون انتظار طويل.
* **الاستخدام** التعليمي: نظرًا لبساطته، يُستخدم أحيانًا في تعليم أساسيات المترجمات أو لغة سي.
* **التوافق**: يدعم معظم مواصفات C99، بما في ذلك المصفوفات ذات الطول المتغير (VLAs) التي أضيفت في الإصدار 0.9.26.

## أداء البرامج المترجمة
يركّز TCC على الصغر والسرعة أكثر من الأداء الأمثل للشيفرة الناتجة. فهو يُترجم في مرور واحد دون معظم التحسينات التي تقوم بها المترجمات الأخرى. يقوم بكتابة القيم إلى المكدس بعد كل تعليمة، مما يؤدي إلى عمليات حفظ/تحميل إضافية. كما يستخدم عددًا محدودًا من المسجلات.

مع ذلك، يُنفّذ بعض التحسينات البسيطة مثل طي الثوابت، تحويل الضرب/القسمة إلى إزاحة حسابية، وتحسين المقارنات عبر تخزين أعلام المعالج.

### أمثلة على الاختبارات
# خوارزمية متتالية فيبوناتشي على حاسوب محمول 1.8 غيغاهرتز أظهرت أن برنامج مترجم بـ TCC كان أسرع بحوالي 18% من برنامج مترجم بـ مايكروسوفت فيجوال سي++.
# اختبار ترجمة GCC باستخدام TCC أظهر أن TCC أسرع بعشر مرات في عملية الترجمة، لكن الشيفرة الناتجة كانت أكبر بنسبة 57% وأبطأ بحوالي 2.2 مرة عند إعادة ترجمة GCC.

## الاستخدامات
* **TCCBOOT**: مشروع تجريبي حيث يقوم TCC بتحميل وبناء نواة لينكس من المصدر في حوالي 10 ثوانٍ.
* استُخدم TCC لترجمة GCC نفسه بعد تطبيق بعض التصحيحات.
* استُخدم لإظهار دفاع ضد هجوم "الثقة" (Trusting Trust).
* يُستخدم في مشروع جنو جيكس لتقليل الاعتماد على الثنائيات الجاهزة وجعل النظام قابلًا للبناء الذاتي.
* **Cinpy**: مكتبة بايثون تسمح بكتابة دوال بلغة سي وتشغيلها مباشرة عبر TCC.
* يأتي مثبتًا في مشروع جافاسكريبت لينكس الذي أنشأه بيلار.
* **Bun**: بيئة تشغيل جافاسكريبت تستخدم TCC لتوفير واجهة برمجية تسمح بترجمة وتشغيل برامج سي مباشرة من جافاسكريبت.

## التاريخ
نشأ TCC من مشروع "مترجم سي الصغير المموّه" (OTCC) الذي كتبه بيلار وفاز به في مسابقة الأكواد المموّهة الدولية عام 2001. بعد ذلك قام بتوسيع البرنامج وإزالة التمويه ليصبح TCC.

في فبراير 2012 أعلن بيلار أنه لم يعد يعمل على المشروع. منذ ذلك الحين، تولى مطورون آخرون صيانته عبر تصحيحات وفروع مختلفة، مثل تصحيحات Dave Dodge، وحزم ديبيان، وفرع "mob" الذي أضاف دعمًا لمترجمات مشتركة ومتوافقة مع SELinux.

## الوضع الحالي
اعتبارًا من ديسمبر 2017، أُعلن عن الإصدار 0.9.27 عبر القائمة البريدية الرسمية. لا يزال المشروع نشطًا عبر مستودع غيت (برنامج) الرسمي، مع مساهمات من عدة مطورين ومستخدمين.

## انظر أيضًا
* مجموعة مترجمات جنو
* PicoC، مفسر للغة شبيهة بسي.

## وصلات خارجية
* القائمة البريدية النشطة لـ TCC
* منصة PTSource IDE — بيئة تطوير متكاملة تتضمن TCC.

تصنيف:برمجيات تستخدم رخصة جنو العمومية الصغرى
تصنيف:برمجيات حرة بلغة سي
تصنيف:برمجيات مكتوبة بلغة التجميع
تصنيف:مصرفات مجانية ومفتوحة المصدر