What does HackerNews think of ffmpeg?

ffmpeg with the build system replaced by zig

Language: C

It's a bit more nuanced than that, as detailed by AndyKelley (andrewrk@) on github[1].

As I understand it, C/C++ interop and support in the build system is not going away; instead it might be accomplished via a separately maintained clang package. (Aside: for an example of this kind of thing can work, see ffmpeg[2] converted to use the Zig build system which pulls in nasm[3] as a Zig package; presumably the clang solution would be a bit more integrated than that, but it serves to show that it can be done).

Zig will still support compilation using LLVM, but instead of directly linking to LLVM and using LLVM's IRBuilder API, it will directly output LLVM bitcode instead[4]. The build system will then handle linking this into an executable, possibly by calling out to the LLVM linker.

The idea seems to be to reduce dependencies of the main executable, while keeping the build system flexible enough that it does not impact existing use cases.

I'm not affiliated with the Zig project in any way, so my understanding of this may be off. I'd recommend reading the GH issues and comments I've linked below to get a better idea of it.

[1]: https://github.com/ziglang/zig/issues/16270#issuecomment-161...

[2]: https://github.com/andrewrk/ffmpeg

[3]: https://github.com/andrewrk/nasm

[4]: https://github.com/ziglang/zig/issues/13265

I am not entirely sure with were you are going with this comment but FYI here is an ffmpeg fork with the build system replaced with a "build.zig" file and the Zig build environment: https://github.com/andrewrk/ffmpeg I would assume that a C implementation of WebRTC would not differ much from other libraries and should be compatible.
If you want to see a fun example of this build system in action, have a look at my ffmpeg fork which has the build system ported to zig build:

https://github.com/andrewrk/ffmpeg

Particularly interesting is the use of nasm as a package dependency, which is executed to compile many assembly files into object files, which are then linked into the ffmpeg static library.

I'm using this package in a work-in-progress reboot of Groove Basin (a music player server) in Zig:

https://github.com/andrewrk/groovebasin/tree/zig-pkg

Point being that if you want to collaborate on the music player project, you don't need to screw around with a million system dependencies, it's just `zig build` and you're off to the races - no matter whether you are using Windows, macOS, or Linux.

The zig build system is under heavy construction during this release cycle of Zig. I recommend to check it out at the end of May when Zig 0.11.0 is released, and a few more issues will be smoothed over. Of course, if you want to get your hands dirty and help work on a bleeding-edge build system & package manager, come on over and give master branch a try.