EngineeringDone

42cursus-libft — إعادة بناء مكتبة C القياسية

إعادة بناء لدوال مكتبة C القياسية مع أدوات للقوائم المترابطة، تُبنى كمكتبة ساكنة

٢٢ يوليو ٢٠٢٦
2 التقنيات
English
42cursus-libft — إعادة بناء مكتبة C القياسية

عن هذا المشروع

إعادة بناء دوال مكتبة C القياسية من الصفر مع أدوات للقوائم المترابطة، تُجمّع في مكتبة ساكنة تُعاد في كل مشاريع 42 المكتوبة بلغة C.

التقنيات

CSystems Programming

i99dev_project_42cursus-libft_cover_1200x630_v1.0.0.svg

مشروع ضمن مسار 42 أبوظبي — وهو أوّل مشاريع المسار والأساس الذي تُبنى فوقه بقية مشاريع C.

نظرة عامة

libft مكتبة مكتوبة بلغة C تُعيد بناء مجموعة من دوال المكتبة القياسية من الصفر، وتضيف إليها أدوات للتعامل مع القوائم المترابطة. الناتج مكتبة ساكنة (libft.a) تُربط مع أي مشروع لاحق في المسار.

ملف README في المستودع مقتضب جداً، لذلك تقتصر هذه الصفحة على نطاق المشروع الموثّق دون تفاصيل إضافية.

المشكلة

مشاريع 42 المكتوبة بلغة C تمنع استخدام معظم دوال المكتبة القياسية، فينشأ قيدان واضحان:

  • كل مشروع يحتاج إلى أدوات أساسية للنصوص والذاكرة، وإعادة كتابتها في كل مرة إهدار مزدوج للوقت ومصدر لتباين السلوك.
  • محاكاة دالة قياسية تعني محاكاة سلوكها الحدّي أيضاً: ما الذي تفعله عند مؤشر NULL؟ وماذا تُرجِع عند طول صفري؟ الفرق بين دالة تعمل ودالة مطابقة يظهر دائماً في هذه الحالات.

التخطيط

تنقسم المكتبة إلى مجموعات مستقلة يمكن إنجاز كل منها واختبارها بمعزل عن الأخرى:

المجموعة المحتوى
الذاكرة نسخ وملء ومقارنة كتل الذاكرة وتخصيصها
النصوص الطول والنسخ والبحث والمقارنة والتقطيع
المحارف والتحويل تصنيف المحارف والتحويل بين النص والعدد
الإخراج كتابة محارف ونصوص وأعداد إلى واصف ملف
القوائم المترابطة إنشاء العقد والإضافة والحذف والتكرار والتحويل

القرارات المعمارية

مكتبة ساكنة لا مجرد ملفات تُنسخ. الطريقة الأسرع في المشروع التالي أن تُنسخ ملفات .c المطلوبة فقط، لكن ذلك يولّد نسخاً متباينة من الدالة نفسها عبر المشاريع. بناؤها كـ libft.a يجعل مصدر الحقيقة واحداً، ويجعل أي إصلاح يصل إلى كل من يعتمد عليها.

الالتزام بتوقيعات الدوال القياسية. كان يمكن تبسيط بعض التوقيعات أو تغيير قيم الإرجاع، لكن المطابقة تعني أن التبديل بين ft_ والدالة القياسية لا يتطلّب إعادة تفكير في الشيفرة المستخدِمة.

التنفيذ

كل دالة تعيش في ملفها الخاص، ويجمعها Makefile في أرشيف واحد، مع ملف ترويسة مشترك يعلن التوقيعات وبنية عقدة القائمة. المشروع لا يعتمد على أي مكتبة خارجية، ويلتزم بمعيار الكتابة Norme المعتمد في 42.

النتيجة والدروس

المكتبة أصبحت الطبقة الأولى في كل مشروع C لاحق في المسار، وهذا بذاته اختبار طويل المدى لجودتها.

  1. الحالات الحدّية هي المواصفة. كتابة ft_strlcpy تستغرق دقائق؛ مطابقة سلوكها عند الأحجام الصفرية هي الجزء الذي يستغرق الوقت الفعلي.
  2. الأساس يُكتب مرّة ويُستخدم سنوات. أي تساهل في إدارة الذاكرة هنا يظهر لاحقاً كتسرّب في مشروع مختلف تماماً، وهو أسوأ مكان لاكتشافه.

الروابط

روابط المشروع

تاريخ البداية٢٢ يوليو ٢٠٢٦
الحالةDone

مشاركة المشروع