A deep dive on ABI design tradeoffs, and how Swift approached the problems in this space;
https://gankra.github.io/blah/swift-abi/
(Compared with C++/Rust, it avoids monomorphisation and does more boxing, with attention to details that affect performance)
miniblog.
Related Posts
A deep dive on how Go generics are implemented, with monomorphisation of call sites with primitive types for performance: https://eli.thegreenplace.net/2022/faster-sorting-with-go-generics/
The Go proposals call this 'stenciling', but I've not heard that term before. AFAICT it's monomorphisation.
Superb deep dive on rust compile optimisation with CI caching, examining usage of monomorphisation, and graphing the build tree: https://matklad.github.io/2021/09/04/fast-rust-builds.html
Rust is doing constant propagation on its internal IR before monomorphisation. This can give faster compiles because LLVM is given less code!
