عن المشروع

# mimalloc-pprof تفرع من [microsoft/mimalloc](https://github.com/microsoft/mimalloc) يضيف **تنميط كومة معاين متوافق مع pprof**، مع دعم ويندوز الأصلي كهدف من الدرجة الأولى إلى جانب لينكس وماك. كما يستورد ويعيد التحقق من جميع ميزات إعادة الذاكرة الخاصة بـ Bun (المعروفة بـ "hole punch"). ## الميزات الرئيسية - **تنميط كومة متوافق مع pprof**: يتتبع التخصيصات الحية المعاينة ويكتب إما تنسيق gperftools `heap_v2` النصي أو ملف pprof `profile.proto` غير المضغوط. يفتح كلاهما مباشرة في [google/pprof](https://github.com/google/pprof) لرسوم اللهب، ورسوم الاستدعاء، والتقارير العلوية، وفروقات الملفات. - **ويندوز من الدرجة الأولى**: منمّط كومة mimalloc الوحيد الذي ينتج ملفات ويندوز قابلة للاستخدام. لا يحتوي mimalloc الأصلي على منمّط؛ تفرع Bun يلتقط مكدسات Win32 لكنه لا يصدر تعيينات الوحدات. هذا التفرع يعدّد الوحدات المحمّلة صراحةً. - **إعادة الذاكرة**: يتضمن ميزات إعادة الذاكرة الخاصة بـ Bun (تنظيف الثقوب، خيط التنظيف الخلفي، التنظيف المؤجل زمنياً) ويضيف تنظيفاً حريصاً على مستوى العملية من أي خيط (مقيّد، متوقف افتراضياً)، وتنظيف ثقوب الصفحات الفرعية، واستعادة صريحة للساحات الفارغة. - **إحصاءات دقيقة**: `mi_stats_get`، `mi_stats_get_json`، تفريغ JSON لكل كومة، تنميط DHAT الدقيق (تنسيق Valgrind)، ردود نداء أحداث التخصيص، ولقطة كومة حية مع عارض. - **المتانة**: معالجات fork() بترتيب أقفال موثّق، مدقق ترتيب الأقفال وقت التشغيل، بروتوكول مطالبة ABA لتفكيك الكومة مع اختبارات حقن الأعطال، تخصيصات صفحات الحماية، وضع بناء معزّز/آمن، تتبع ASan/Valgrind/ETW. - **دعم المنصات**: ويندوز MSVC وMinGW، تداخل منطقة malloc والاستبطان في ماك، لينكس. حزمة Rust من الطرف الأول مع واجهة C كاملة. - **الأداء**: قياسات موسعة مقابل TCMalloc وjemalloc وMicrosoft mimalloc وBun mimalloc عبر توسع الخيوط، وتوزيعات الأحجام المطلوبة، والخيوط قصيرة العمر، وإعادة الذاكرة بعد الخمول. ## التكامل التنميط اختياري مرتين: وقت الترجمة (cargo `features = ["pprof"]` أو CMake `-DMI_PPROF=ON`) ووقت التشغيل (واجهة البدء أو `MIMALLOC_PROF=1`). البناء الافتراضي هو مخصص سريع بسيط. ## الإصدار يتتبع خط `dev3` الخاص بـ mimalloc الأصلي (حزمة `mimalloc-pprof` 1.x). خط v2 القديم (0.8.x) محفوظ على فرع `v2` لكنه غير مُصان. ## التوثيق - [مقارنة الميزات](#feature-comparison): جنباً إلى جنب مع Microsoft MiMalloc-V3 وتفرع Bun وjemalloc، مع توثيق كل خلية. - [توسع الخيوط](#thread-scaling-by-allocation-pattern): الإنتاجية الإجمالية عند 1-8 عمال لستة أنماط تخصيص. - [الذاكرة المُعادة بعد الخمول](#memory-returned-after-idle): ما يعيده كل مخصص عندما تنضب دفعة من العمل. - [الأداء](#performance): المنهجية الكاملة، جداول لكل خلية، وعائلات القياس. - [لماذا استخدام هذا التفرع](#why-use-this-fork): أكثر تفرع mimalloc اختباراً في الوجود. - [ميزات Bun](#bun-features): كل ميزة منقولة من oven-sh/mimalloc، وما تم استبعاده عمداً. - [التنميط والمراقبة](#profiling-and-observability): pprof المعاين، الإحصاءات الدقيقة، DHAT، أحداث الذاكرة. - [أخطاء المنبع المكتشفة والمُصلحة](#upstream-bugs-found-and-fixed): بما في ذلك تسربان غير محدودين للذاكرة. - [أسئلة وأجوبة](#qa)