The Go 1.10 source is frozen now and I have some updates on Power architecture support.
In addition to the updates I’ve already given here regarding performance and POWER9 support, I also added:
- New implementations for bytes.IndexByte and string.IndexByte that use vector registers and instructions in commit be943df. The performance improvement can be up to 2.75x, depending on the slice size. I will probably look for more basic function loops that may be optimized using vector instructions for Go 1.11.
- Fixed the implementation of Data Cache instructions in the Go assembler.
- Updated the syscall package to use newselect.
- Fixed a very bad performance regression in both bytes.Compare and runtime.cmpstring introduced in Go 1.8.
Also, Go should be almost fully functional on ppc64le / Alpine Linux in 1.10. There are some timeout (hanging) problems when C code is linked with Go code, but pure Go programs should work properly now.