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

# mimalloc-pprof [microsoft/mimalloc](https://github.com/microsoft/mimalloc) کا ایک فورک جو **pprof کے ساتھ مطابقت رکھنے والی نمونہ شدہ ہیپ پروفائلنگ** شامل کرتا ہے، جس میں Linux اور macOS کے ساتھ ساتھ Windows کو بھی بنیادی ہدف کے طور پر شامل کیا گیا ہے۔ یہ Bun کی میموری واپس کرنے کی تمام خصوصیات (المعروف "hole punch") بھی درآمد اور دوبارہ تصدیق کرتا ہے۔ ## اہم خصوصیات - **pprof کے ساتھ مطابقت رکھنے والی ہیپ پروفائلنگ**: نمونہ شدہ فعال ایلوکیشنز کو ٹریک کرتا ہے اور gperftools کے `heap_v2` ٹیکسٹ فارمیٹ یا غیر کمپریسڈ pprof `profile.proto` میں لکھتا ہے۔ دونوں براہ راست [google/pprof](https://github.com/google/pprof) میں کھلتے ہیں، جہاں فلیم گراف، کال گراف، ٹاپ رپورٹس اور پروفائل ڈفز دیکھے جا سکتے ہیں۔ - **Windows بنیادی ہدف**: واحد mimalloc ہیپ پروفائلر جو Windows پر قابل استعمال پروفائلز بناتا ہے۔ اپ اسٹریم mimalloc میں کوئی پروفائلر نہیں ہے؛ Bun کا فورک Win32 اسٹیکس تو حاصل کرتا ہے مگر ماڈیول میپنگز جاری نہیں کرتا۔ یہ فورک لوڈ شدہ ماڈیولز کو واضح طور پر شمار کرتا ہے۔ - **میموری کی واپسی**: Bun کی میموری واپس کرنے کی خصوصیات (hole purging، بیک گراؤنڈ purge تھریڈ، وقت میں تاخیر والا purge) شامل ہیں، اور اس کے علاوہ کسی بھی تھریڈ سے پورے پروسیس کے لیے eager purge (گیٹڈ، بطور ڈیفالٹ پارکڈ)، ذیلی صفحے کی hole purging، اور واضح empty-arena reclaim شامل کیا گیا ہے۔ - **درست اعداد و شمار**: `mi_stats_get`، `mi_stats_get_json`، فی ہیپ JSON ڈمپ، DHAT درست پروفائلنگ (Valgrind فارمیٹ)، ایلوکیشن ایونٹ کال بیکس، اور ویور کے ساتھ لائیو ہیپ اسنیپ شاٹ۔ - **مضبوطی**: fork() ہینڈلرز مع دستاویزی لاک آرڈر، رن ٹائم لاک آرڈر چیکر، ہیپ ٹیئر ڈاؤن ABA کلیم پروٹوکول مع فالٹ انجیکشن ٹیسٹس، گارڈ پیج ایلوکیشنز، ہارڈنڈ/سیکیور بلڈ موڈ، ASan/Valgrind/ETW ٹریکنگ۔ - **پلیٹ فارم سپورٹ**: Windows MSVC اور MinGW، macOS malloc-zone interpose اور zone introspection، Linux۔ فرسٹ پارٹی Rust crate مکمل C API کے ساتھ۔ - **کارکردگی**: TCMalloc، jemalloc، Microsoft mimalloc اور Bun mimalloc کے مقابلے میں تھریڈ اسکیلنگ، درخواست شدہ سائز کی تقسیم، قلیل المدتی تھریڈز، اور بیکار ہونے کے بعد میموری کی واپسی پر وسیع بینچ مارکنگ۔ ## انٹیگریشن پروفائلنگ دو بار آپٹ اِن ہے: کمپائل ٹائم پر (cargo `features = ["pprof"]` یا CMake `-DMI_PPROF=ON`) اور رن ٹائم پر (start API یا `MIMALLOC_PROF=1`)۔ ڈیفالٹ بلڈ ایک سادہ تیز ایلوکیٹر ہے۔ ## ورژن اپ اسٹریم mimalloc کی `dev3` لائن کو ٹریک کرتا ہے (crate `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)