Sobre o projeto

# mimalloc-pprof Um fork do [microsoft/mimalloc](https://github.com/microsoft/mimalloc) que adiciona **perfilamento de heap amostrado compatível com pprof**, com o Windows nativo como alvo de primeira classe ao lado de Linux e macOS. Ele também importa e reverifica todos os recursos de devolução de memória do Bun (também conhecidos como "hole punch"). ## Principais Recursos - **Perfilamento de heap compatível com pprof**: Rastreia alocações vivas amostradas e grava tanto o formato de texto `heap_v2` do gperftools quanto um `profile.proto` pprof não comprimido. Ambos abrem diretamente no [google/pprof](https://github.com/google/pprof) para flame graphs, call graphs, relatórios top e diffs de perfil. - **Windows de primeira classe**: O único perfilador de heap do mimalloc que produz perfis utilizáveis no Windows. O mimalloc upstream não tem perfilador; o fork do Bun captura stacks Win32 mas não emite mapeamentos de módulos. Este fork enumera os módulos carregados explicitamente. - **Devolução de memória**: Inclui os recursos de devolução de memória do Bun (hole purging, thread de purge em segundo plano, purge com atraso de tempo) e adiciona purge antecipado em todo o processo a partir de qualquer thread (controlado, padrão estacionado), hole purging de subpágina e recuperação explícita de arena vazia. - **Estatísticas exatas**: `mi_stats_get`, `mi_stats_get_json`, dump JSON por heap, perfilamento exato DHAT (formato Valgrind), callbacks de eventos de alocação e snapshot de heap ao vivo com um visualizador. - **Robustez**: handlers de fork() com ordem de locks documentada, verificador de ordem de locks em tempo de execução, protocolo de reivindicação ABA de desmontagem de heap com testes de injeção de falhas, alocações com guard-page, modo de build hardened/secure, rastreamento ASan/Valgrind/ETW. - **Suporte de plataforma**: Windows MSVC e MinGW, interposição de malloc-zone e introspecção de zone no macOS, Linux. Crate Rust de primeira linha com API C completa. - **Desempenho**: Benchmarking extensivo contra TCMalloc, jemalloc, Microsoft mimalloc e Bun mimalloc em escalonamento de threads, distribuições de tamanho solicitado, threads de curta duração e devolução de memória após ociosidade. ## Integração O perfilamento é opt-in duas vezes: em tempo de compilação (cargo `features = ["pprof"]` ou CMake `-DMI_PPROF=ON`) e em tempo de execução (API de start ou `MIMALLOC_PROF=1`). O build padrão é um alocador rápido simples. ## Versão Acompanha a linha `dev3` do mimalloc upstream (crate `mimalloc-pprof` 1.x). A linha legada v2 (0.8.x) é preservada no branch `v2`, mas não é mantida. ## Documentação - [Comparação de recursos](#feature-comparison): lado a lado com Microsoft MiMalloc-V3, o fork do Bun e jemalloc, com cada célula referenciada. - [Escalonamento de threads](#thread-scaling-by-allocation-pattern): throughput agregado com 1-8 workers para seis padrões de alocação. - [Memória devolvida após ociosidade](#memory-returned-after-idle): o que cada alocador devolve quando uma rajada de trabalho termina. - [Desempenho](#performance): metodologia completa, tabelas por célula e famílias de benchmarks. - [Por que usar este fork](#why-use-this-fork): o fork do mimalloc mais testado que existe. - [Recursos do Bun](#bun-features): cada recurso portado do oven-sh/mimalloc, e o que foi deliberadamente deixado de fora. - [Perfilamento e observabilidade](#profiling-and-observability): pprof amostrado, estatísticas exatas, DHAT, eventos de memória. - [Bugs upstream encontrados e corrigidos](#upstream-bugs-found-and-fixed): incluindo dois vazamentos de memória ilimitados. - [Perguntas e Respostas](#qa)