The implementation is now purely based on bufio.SplitFunc and bufio.Scanner. Our custom scanner and rune buffer is gone.
Perf improvements are substantial for words & graphemes; sentences seems to have regressed. Allocations are down to single digits, and are independent of input size.
This is a breaking change — the API is smaller. However, the main use case of calling (e.g.) words.NewScanner and iterating over it should be unchanged for most consumers. The methods are the same.
So, I should increment the major version but the recommended v2 business is more than I want to deal with. Hopefully it’s OK for most.