عن المشروع

Quill هي مكتبة تسجيل ومقاييس غير متزامنة للغة C++17 والإصدارات الأحدث، موجهة للتطبيقات الحرجة من حيث الأداء والحساسة لزمن الاستجابة. تصميمها الأساسي يبقي التنسيق والإدخال/الإخراج بعيدًا عن مؤشر الترابط الاستدعائي: يتم ترميز وسائط السجل في الواجهة الأمامية ومعالجتها بواسطة عامل خلفي مخصص، بحيث يحدث التنسيق المكلف بعيدًا عن المسارات الساخنة. القدرات الرئيسية الموصوفة في ملف README: - المعالجة غير المتزامنة: مؤشر ترابط خلفي يتعامل مع التنسيق والإدخال/الإخراج، مما يحافظ على استجابة مؤشرات ترابط التطبيق. - نشر المقاييس: يمكن إرسال عينات المقاييس المسجلة مسبقًا عبر نفس الخلفية غير المتزامنة. يتعامل مصدر Prometheus المضمن مع العدادات والمقاييس والرسوم البيانية والملخصات، ويمكن للمصادر المخصصة توجيه العينات إلى StatsD أو OpenTelemetry أو مجمعات أخرى داخل العملية. - بصمة رأس ملفات ضئيلة: تحتاج الواجهة الأمامية فقط إلى Logger.h و LogMacros.h، بينما يتم تضمين الخلفية عبر ملف .cpp واحد، مما يتجنب حقن كود الخلفية في وحدات ترجمة أخرى. - خيارات وقت الترجمة: يمكن إزالة مستويات السجل في وقت الترجمة، ويمكن ضبط قوائم انتظار الواجهة الأمامية وسياسة الذاكرة في وقت الترجمة. - التكوين في وقت التشغيل: يمكن تكوين سلوك الخمول للخلفية، وتقارب وحدة المعالجة المركزية، والتخزين المؤقت، ومعالجة الطوابع الزمنية، والتدفق، والاستدعاءات، ويمكن تكوين المسجلات من مصادر مدمجة أو مخصصة مع مرشحات لكل مصدر. - الطوابع الزمنية: دعم لـ rdtsc أو chrono أو ساعات مخصصة، مع مقارنة الطوابع الزمنية عبر مؤشرات الترابط ونافذة سماح قابلة للتكوين للمنتجين المتأخرين. - المصادر والإخراج: وحدة التحكم (مع الألوان)، والملفات (مع التدوير)، وJSON، بالإضافة إلى مصادر مخصصة. - ميزات إضافية: تسجيل التتبع الخلفي عبر مخزن مؤقت حلقي، وتصفية السجلات، وتسجيل JSON المنظم، وسياق التشخيص المعين (MDC)، ووحدات ماكرو محدودة المعدل، وأوضاع قائمة انتظار قابلة للتكوين محدودة/غير محدودة وحظر/إسقاط مع المراقبة، ومعالجة الأعطال عبر معالج إشارات، ودعم الصفحات الضخمة على Linux، ودعم الأحرف الواسعة على Windows، وخيار بناء خالٍ من الاستثناءات. - واجهة برمجة تطبيقات آمنة من حيث الأنواع مبنية على مكتبة {fmt}. التثبيت متاح عبر عدة مديري حزم، بما في ذلك vcpkg و Conan و Homebrew و Meson WrapDB و Conda و Bzlmod و xmake و nix و build2. يوفر مسار البدء السريع استخدام simple_logger() لإخراج وحدة التحكم أو الملف، بينما يكشف الإعداد التفصيلي عن واجهات برمجة تطبيقات Backend و Frontend للتحكم الصريح في المصادر والمسجلات والمُنسقات. كما يتم تقديم واجهة برمجة تطبيقات دالة خالية من وحدات الماكرو، توصف بأنها أبطأ قليلاً من واجهة الماكرو. يتضمن ملف README جداول معايير تقارن Quill بمكتبات تسجيل C++ أخرى عبر سيناريوهات مثل تسجيل الأرقام والسلاسل الكبيرة والأنواع المعقدة، مع مؤشر ترابط واحد وأربعة مؤشرات ترابط. تُعرض هذه النتائج مع تكوين نظام محدد ومنهجية معايير، ويجب قراءتها كقياسات المشروع نفسه وليس كتحقق مستقل.