how to make your cross-platform audio engine bloat free in 5 easy steps: https://garten.salat.dev/135-clang-wasm-audio/ (i almost fell off the chair when i saw step 4). shoutout to @sqx
🌱 clang wasm audio

@froos i've since found simple replacements for the remaining stuff i usually miss from libc:

qsort: i turned this macrofied qsort back into a stdlib.h-compatible one: https://github.com/nothings/stb/blob/31c1ad37456438565541f4919958214b6e762fb4/deprecated/stb.h#L8721-L8846

malloc/free: turns out the original K&R book ("The C Programming Language") chapter 8.7 has an elegant malloc, meant as a teaching example, but it works: https://github.com/noncombatant/kr-malloc/blob/main/original_kr_malloc.c

stb/deprecated/stb.h at 31c1ad37456438565541f4919958214b6e762fb4 · nothings/stb

stb single-file public domain libraries for C/C++. Contribute to nothings/stb development by creating an account on GitHub.

GitHub
@froos probably best to avoid malloc/free as much as you can, like the static mem stuff in dough.c, but in audio engines you have samples and delay buffers as these things that can have any size, and may come and go… i'm thinking k&r malloc might be fine for those
@sqx @froos im curious, would it not be possible to use something like wasi-libc here? or is it considered bloat 😅
@ahihi @froos ooh, i'm not familiar with it, but C dependencies tend to be a pain unless they can be vendored. we used to compile with emscripten which provides libc/libm/etc, but ended up doing the nostdlib clang thing because it felt better i guess :) (also, a personal excuse is that emscripten works poorly on freebsd)
@ahihi @sqx thanks for the tip, could be a good option as well! i have almost no idea what i'm doing. will check it out.