Files
lix/doc/manual/rl-next/mimalloc.md
T
Seth FlynnandBernardo Meurer Costa c1370bc81c build: use mimalloc
mimalloc is a compact general purpose allocator from Microsoft. It
consistently outperforms glibc's `malloc()` in allocation-heavy
workloads, such as Lix's evaluator

It's currently only linked in the main `nix` executable, as Boehm's GC
uses its own allocator. Other allocations that *do* go through glibc's
`malloc()` are still much faster, though

Benchmarked on x86_64-linux against Nixpkgs `bd07873`:

| attribute         | thunks  | lix@`1396012` | mimalloc | uplift |
|-------------------|---------|---------------|----------|--------|
| hello             | 206444  | 0.726s        | 0.620s   | 1.17x  |
| chromium          | 1177382 | 2.273s        | 2.136s   | 1.06x  |
| firefox-unwrapped | 1394797 | 2.521s        | 2.378s   | 1.06x  |
| texliveFull       | 3186440 | 4.992s        | 4.672s   | 1.07x  |
| nixosTests.gnome  | 7905808 | 6.115s        | 5.723s   | 1.07x  |

Based-on: https://github.com/NixOS/nix/pull/15596
Co-authored-by: Bernardo Meurer Costa <beme@anthropic.com>
Change-Id: I3ad92eacc075efeaf3d9f7730ada7b29835536a4
2026-07-04 10:39:30 +00:00

564 B
Raw Blame History

synopsis, cls, category, credits
synopsis cls category credits
Use mimalloc for faster evaluation
5645
Features
getchoo
lovesegfault

Lix now links with mimalloc, replacing the system's default malloc() for all non-GC allocations.

This yields a 512% wall-clock improvement on evaluation workloads, ranging from nix-instantiate hello to nix-env -qa and full NixOS configurations.

The allocator can be disabled at build time with -Dmimalloc=disabled, or by passing the useMimalloc = false override to the lix package.