$ cd /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula
$ grep depends_on.*nasm * | sed 's,:.*,,' | xargs grep desc
dav1d.rb: desc "AV1 decoder targeted to be small and fast"
dssim.rb: desc "RGBA Structural Similarity Rust implementation"
ffmpeg.rb: desc "Play, record, convert, and stream audio and video"
handbrake.rb: desc "Open-source video transcoder available for Linux, Mac, and Windows"
isa-l.rb: desc "Intelligent Storage Acceleration Library"
jpeg-turbo.rb: desc "JPEG image codec that aids compression and decompression"
libass.rb: desc "Subtitle renderer for the ASS/SSA subtitle format"
libavif.rb: desc "Library for encoding and decoding .avif files"
libvmaf.rb: desc "Perceptual video quality assessment based on multi-method fusion"
lrzip.rb: desc "Compression program with a very high compression ratio"
mozjpeg.rb: desc "Improved JPEG encoder"
mvtools.rb: desc "Filters for motion estimation and compensation"
openh264.rb: desc "H.264 codec from Cisco"
openj9.rb: desc "High performance, scalable, Java virtual machine"
pce.rb: desc "PC emulator"
ppsspp.rb: desc "PlayStation Portable emulator"
rav1e.rb: desc "Fastest and safest AV1 video encoder"
vapoursynth.rb: desc "Video processing framework with simplicity in mind"
x264.rb: desc "H.264/AVC encoder"
x265.rb: desc "H.265/HEVC encoderEmulators make sense I suppose.
I’ve only ever seen modern assembly in the wild in small parts, in say a kernel or something like coreboot. I’ve been told by graphics programmers and game devs that’s its not uncommon to hand roll assembly code in those domains, which was suprising to me
Look at it like melting your own metal piece. Sometimes the screws that you find in the shop are not the exact shape you need and it's better to build your own.
I bet most of the things you code with Nasm are not entire binaries. You can write functions entirely in assembly and link the compiled outputs to any binary file once you know the calling convention
There's nothing NASM can do to produce faster binaries than any other assembler - as it doesn't control which instructions to generate - they're specified entirely by the user.