4 ms·
> I wonder if we could reduce binary size with a dead-simple scheduler and GC For many CLIs I think even a brain-dead bump allocator would work
by chrfrasco 5y ago
> I wonder if we could reduce binary size with a dead-simple scheduler and GC
For many CLIs I think even a brain-dead bump allocator would work
- Hello71 5y agomusl automatically uses a bump allocator if free is not referenced in the program.
- KMag 5y agoThat's really cool! Though, I'm curious... don't a lot of malloc implementations use a bump allocator if a simple fragmentation heuristic is below some limit? Presumably musl down inside malloc() has a static bool (or a static function pointer) it uses to keep track if dlsym() has ever returned the address of free(). How much faster is the musl implementation than an implementation using a simple fragmentation heuristic? Presumably, they're both well-predicted conditional branches (and/or indirect branch targets well predicted by the BTB).
- saagarjha 5y agoMusl's implementation only works for statically linked programs.
- benhoyt 5y agoInteresting. I couldn't find any documentation for how this happens (does it need compiler/linker support to know whether free is used?), but I did find the source code for this __simple_malloc: https://git.musl-libc.org/cgit/musl/tree/src/malloc/lite_malloc.c https://git.musl-libc.org/cgit/musl/tree/src/malloc/lite_mal...
- tetha 5y agoA programming language professor working on interpreters once said - for short-living processes the most effective and efficient garbage processing might be... not to and terminating the process. The OS will collect all garbage at once very quickly. So why bother time spending being smart?