Re:When to use generics
by staticassertion on Tuesday April 12, 2022 @09:25PM
(#31010217)
> This means that a time.Time pointer has the same GCShape as an uint64, a bytes.Buffer and a strings.Builder.
> In the current implementation of Generics in 1.18, every runtime invocation of a generic function will transparently receive as its first argument a static dictionary with metadata about the arguments being passed to the function.
> That’s right, after the monomorphization step, the generated function shape needs to take as a runtime input the virtual method tables for all its generic arguments.
What an odd design. I'm curious to read the justification for this. I assume it's faster compile times.
Yeah, exactly that. Faster compile times.
And also smaller binaries.
For comparison, our templates-heavy C++ project's binary is 1 GB in debug mode and 200 MB in release mode. It takes 10-20 seconds just to link.
Re:When to use generics
by staticassertion on Wednesday April 13, 2022 @02:03AM
(#31011648)
All of that gets removed though
Also, based on the recent blog post[0] a method-based approach will be a tiny bit slower than the function-based approach. Not that it matters for most code though.
[0]: https://planetscale.com/blog/generics-can-make-your-go-code-...