syzkaller
syzkaller copied to clipboard
prog: switch to math/rand/v2
We extensively use math/rand, but there are some performance issues with it:
https://go.dev/blog/randv2
the Go 1 generator, which is reasonably fast (about 1.8ns per number on my
M3 Mac) but maintains an internal state of almost 5 kilobytes. In contrast,
Melissa O’Neill’s PCG family of generators generates better random numbers
in about 2.1ns per number with only 16 bytes of internal state.
Perhaps if we switch all pacakges (prog, fuzzer, etc) to math/rand/v2 we can get some perf wins.
It was added in Go 1.22, so need to fix #4746 first.
If we stick to the rule that our old-env container uses a one older Go version than env/syzbot, we'd be able to make use of this new random generator only once Go 1.23 is released.
We could diverge from that rule for a short period of time. Nobody really asked us for 2 versions.
Just spotted this: https://twitter.com/val_deleplace/status/1787818710822011163
What are the potential side effects assuming we want to remove syz-old-env?
At the very least we want to make sure that newer syzkaller revisions are buildable and testable by the currently running syz-ci's in the current docker images. There's also FreeBSD (and probably something else), where we don't use docker containers at all, so we should be mindful of everything that breaks once we start using newer Go features. Otherwise, I can't think of any other benefits of the syz-old-env tests.
After #5288, everything is ready for math/rand/v2