The design of generics in this one seems rather well balanced in simplicity vs power.
The part about interface-typed values [1] is interesting. They do dynamic dispatch as a fallback when the function is too polymorphic to be be specialized.
In Rust terms it's as if it picks between `dyn` and `impl` automatically. It looks convenient, but also a bit of a non-obvious performance pitfall.
[1] https://shader-slang.com/slang/user-guide/interfaces-generic...