Open bradfitz opened 6 years ago
CC @mpvl
Going to take a crack at this!
Change https://golang.org/cl/127924 mentions this issue: unicode/norm: lazy load decomps table
Change https://golang.org/cl/127926 mentions this issue: make recompMap a string
Is there a way to generate the tables for all unicode versions ? If I run "go generate", it only generates the tables for the current Go version.
Also, how are you checking the memory allocation of the init function ? If I just do a blank import and run a mem profile, nothing gets caught.
@agnivade, see the top comment on #26775 and https://twitter.com/bradfitz/status/1024726819725950976
Change https://golang.org/cl/207017 mentions this issue: unicode/norm: make decomps to a const string
The golang.org/x/text/unicode/norm package allocs 21.47kB in its init function, regardless of whether the package is ever used.
We should do it lazily, as done in e.g. https://go-review.googlesource.com/c/net/+/127275 and https://go-review.googlesource.com/c/go/+/127075
This would help people who explicitly import it (or import it via golang.org/x/net/http2), as then the std-vendored copy would not need to also allocate the 20KB.
Perhaps some of those tables should be const strings, too, so the linker can put it in read-only sections. Then we can slice into it at runtime to get integers out.
/cc @mpvl