5 ms·
Do you have any extra readings on the rationale of building their own malloc rather than integrating mimalloc or jemalloc?
by liuliu 6y ago
Do you have any extra readings on the rationale of building their own malloc rather than integrating mimalloc or jemalloc?
- The_rationalist 6y agoThe NIH syndrome obviously, otherwise it would have been addressed at the start of the Readme
- harrygeez 6y agowell one of the stated goals of musl is to be simple and correct, and all those mallocs are anything but simple
- littlestymaar 6y agoThat's true for jemalloc, but mimalloc is pretty simple. The reference paper is pretty short and really accessible and IIRC the implementation is around 5klocs. I doubt musl's implementation would much simpler than this.
- dalias 6y ago5kloc is about 10x larger than musl's existing (old) malloc in source lines. I suspect lots of that is low code density, comments, etc. I have to lookup what exactly mimalloc is/does every time someone mentions it, because the readme/documentation isn't very descriptive except discussing extensions outside the normal API. I didn't have time to dig through this again today. But I did look at it in some depth on several occasions in the past and it really wasn't suitable for or comparable to what we're doing in musl.
- littlestymaar 6y agoThanks for clarification, didn't imagine that musl's malloc was that minimalist. You should definitely have a look at the paper [1] it's only ten page long! (Excluding benchmarks and references) [1]: https://www.microsoft.com/en-us/research/uploads/prod/2019/06/mimalloc-tr-v1.pdf https://www.microsoft.com/en-us/research/uploads/prod/2019/0...
- jessermeyer 6y agoNot any first hand, but reading their principles suggests that simplicity and ease of deployment are probably relevant. https://musl.libc.org/about.html https://musl.libc.org/about.html
- liuliu 6y agoThanks. Taking on malloc and being competitive with much less code (mimalloc is around 6k, and it is the smallest I know that is still competitive) would be a great feat. Would be interesting to follow the development.
- AndyKelley 6y agoThis is a libc implementation. The null hypothesis is that it implements libc, rather than porting a different libc implementation.