منصوبے کے بارے میں

Quill ایک غیر مطابقت پذیر لاگنگ اور میٹرکس لائبریری ہے جو C++17 اور بعد کے ورژنز کے لیے ہے، جس کا مقصد کارکردگی کے لحاظ سے اہم اور تاخیر سے حساس ایپلی کیشنز ہیں۔ اس کا بنیادی ڈیزائن فارمیٹنگ اور I/O کو کالنگ تھریڈ سے دور رکھتا ہے: لاگ آرگیومنٹس فرنٹ اینڈ پر انکوڈ کیے جاتے ہیں اور ایک مخصوص بیک اینڈ ورکر کے ذریعے پروسیس کیے جاتے ہیں، تاکہ مہنگی فارمیٹنگ ہاٹ پاتھز سے دور ہو۔ README میں بیان کردہ اہم صلاحیتیں: - غیر مطابقت پذیر پروسیسنگ: ایک بیک گراؤنڈ تھریڈ فارمیٹنگ اور I/O کو سنبھالتا ہے، جس سے ایپلی کیشن تھریڈز ریسپانسیو رہتے ہیں۔ - میٹرکس پبلشنگ: پہلے سے رجسٹرڈ میٹرک نمونے اسی غیر مطابقت پذیر بیک اینڈ کے ذریعے بھیجے جا سکتے ہیں۔ ایک شامل Prometheus سنک کاؤنٹرز، گیجز، ہسٹوگرامز اور سمریز کو سنبھالتا ہے، اور حسب ضرورت سنک نمونوں کو StatsD، OpenTelemetry یا دیگر ان پروسیس کلیکٹرز تک روٹ کر سکتے ہیں۔ - کم سے کم ہیڈر فٹ پرنٹ: فرنٹ اینڈ کو صرف Logger.h اور LogMacros.h کی ضرورت ہوتی ہے، جبکہ بیک اینڈ ایک ہی .cpp فائل کے ذریعے شامل کیا جاتا ہے، جس سے بیک اینڈ کوڈ دوسرے ٹرانسلیشن یونٹس میں داخل ہونے سے بچتا ہے۔ - کمپائل ٹائم آپشنز: لاگ لیولز کو کمپائل ٹائم پر ختم کیا جا سکتا ہے، اور فرنٹ اینڈ کیوز اور میموری پالیسی کو کمپائل ٹائم پر ٹیون کیا جا سکتا ہے۔ - رن ٹائم کنفیگریشن: بیک اینڈ آئیڈل رویہ، CPU افینیٹی، بفرنگ، ٹائم اسٹیمپ ہینڈلنگ، فلشنگ اور کال بیکس کو کنفیگر کیا جا سکتا ہے، اور لاگرز کو بلٹ ان یا حسب ضرورت سنکس سے فی سنک فلٹرز کے ساتھ تشکیل دیا جا سکتا ہے۔ - ٹائم اسٹیمپس: rdtsc، chrono یا حسب ضرورت کلاکس کے لیے سپورٹ، کراس تھریڈ ٹائم اسٹیمپ موازنہ اور تاخیر سے آنے والے پروڈیوسرز کے لیے قابل ترتیب گریس ونڈو کے ساتھ۔ - سنکس اور آؤٹ پٹ: کنسول (رنگوں کے ساتھ)، فائلیں (روٹیشن کے ساتھ)، JSON، نیز حسب ضرورت سنکس۔ - اضافی خصوصیات: رِنگ بفر کے ذریعے بیک ٹریس لاگنگ، لاگ فلٹرنگ، JSON اسٹرکچرڈ لاگنگ، میپڈ ڈائیگنوسٹک کنٹیکسٹ (MDC)، ریٹ لمیٹڈ میکروز، قابل ترتیب باؤنڈڈ/ان باؤنڈڈ اور بلاکنگ/ڈراپنگ کیو موڈز مانیٹرنگ کے ساتھ، سگنل ہینڈلر کے ذریعے کریش ہینڈلنگ، لینکس پر ہیوج پیجز سپورٹ، ونڈوز پر وائیڈ کریکٹر سپورٹ، اور ایکسپشن فری بلڈ آپشن۔ - {fmt} لائبریری پر مبنی ٹائپ سیف API۔ انسٹالیشن متعدد پیکیج مینیجرز کے ذریعے دستیاب ہے، جن میں vcpkg، Conan، Homebrew، Meson WrapDB، Conda، Bzlmod، xmake، nix اور build2 شامل ہیں۔ ایک فوری آغاز کا راستہ کنسول یا فائل آؤٹ پٹ کے لیے simple_logger() استعمال کرتا ہے، جبکہ تفصیلی سیٹ اپ سنکس، لاگرز اور فارمیٹرز پر واضح کنٹرول کے لیے Backend اور Frontend APIs کو ظاہر کرتا ہے۔ ایک میکرو فری فنکشن API بھی پیش کیا گیا ہے، جسے میکرو API سے قدرے سست قرار دیا گیا ہے۔ README میں بینچ مارک ٹیبلز شامل ہیں جو Quill کا دیگر C++ لاگنگ لائبریریوں سے موازنہ کرتی ہیں، جیسے نمبرز، بڑی اسٹرنگز اور پیچیدہ اقسام کی لاگنگ، ایک اور چار تھریڈز کے ساتھ۔ یہ نتائج ایک مخصوص سسٹم کنفیگریشن اور بینچ مارک طریقہ کار کے ساتھ پیش کیے گئے ہیں، اور انہیں آزاد تصدیق کے بجائے پروجیکٹ کی اپنی پیمائش کے طور پر پڑھا جانا چاہیے۔