As of the 14th of May the Generics milestone is now completed. This was a big goal for the compiler as it forms a basis to move forward with substitutions in general which are required for Traits since Traits can also be generic. Please note that the compiler explorer version of GCC Rust is several weeks out of date, leading bug reports for things that are already fixed/implemented.
Rust allows for the impl block to be generic like we have already seen in previous status reports, but it also allows for the impl items which inherit those generic parameters to also then be generic. This was a great test for the generics implementation since it required a cleanup of existing code rather than rewriting or changing the implementation to fit. The compiler in this instance is performing 2 substitutions in order to support this.
V0 is used in the Rust Linux project but as it is unstable/incomplete it seems prudent to wait for that to stabilise before implementing this but the goal is that GCC Rust should implement both Legacy and V0. The Issue with the legacy symbol mangling is that it uses characters such as $ and has an unstable SIP128 has at the end of the symbol. We now support the legacy symbol mangling but the hash is an FNV-128 hash for now as FNV is simpler to implement than SIP-128.