@lispi314@Makura@ipg it's also needed when you gotta go fast and the compiler doesn't know how to use the fancy special case CPU instructions that are only useful for FFT
@ipg nah fuck c lmfao, there's absolutely no reason to cling to it other than sentimentality
asm makes sense as a direct representation of machine code, it's not like there's any other way to do it, but C is just another high level language (albeit a very old and influential one)
@halva@ipg There's a lot of reasons why people would still cling to C, specially for things like ffmpeg where a lot of it is directly interfacing with the rest of the system where the only API you have is C. Which is why the core of your favorite Java/Go/Rust/… stuff is still C, and ffmpeg is pretty much a core library.
@lispi314@halva@ipg If you target Linux yeah it's somewhat doable (although like strace does you'd need to parse C headers at one point, good luck). But if you want portability… nope.
And sadly the Linux kernel isn't the only ABI you need to care about, like if you do OpenGL/Vulkan/… you'll end up with having to deal with C. (And there's core system libraries that are very security-sensitive like the nsswitch.conf stuff and pam where it's stuck to C)
@lanodan@ipg@halva You don't have to make the core in C and there are quite a few self-hosted languages that don't.
Linux has a stable ABI for userspace (mostly), so it is possible to even do the whole thing from scratch and communicating directly with the system that way, skipping C entirely. In general instead such languages deem it simpler to make a C wrapper which can communicate with their own ABI instead.