There's also maps, select and goroutines in general. Funnily enough I blogged about this some years ago, for fun <https://blog.merovius.de/posts/2018-01-15-generating_entropy_without_imports_in_go/> .
On Sat, Jan 14, 2023 at 11:52 PM Stan Srednyak <stan.sr...@gmail.com> wrote: > How much of Golang functionality must be excluded in order to guarantee > deterministic execution on a fixed system? > > There are typical sources of nondeterminism > > 1. /dev/urandom > > 2. time > > We should include system variables here, but lets suppose we fix the > system. > > One more source could be system files. Lets say we use chroot to jail the > process. This should be done carefully: naive use does not exclude > /dev/urandom , and as a result e.g. RSA key generation has access to > randomness. But lets assume that we dealt with this issue. > > > Also, the stack can be a source of randomness. In Golang, it is possible > to get info about the stack. But lets say, we blocked these possibilities > by forbidding the access to runtime. > > What else is there? > > At the moment it seems that to guarantee deterministic execution it is > necessary to block access to modules: > runtime > syscall > time > crypto -- the parts that have to do with key generation > os -- parts that get system variables and process information > math/rand > > Which other standard modules can give rise to nondeterminism? > > It seems that modules > -ioutil > -bufio > -most of os > -strings > -bytes > > are "nondeterminism safe". > > File info can be a source of nondeterminism - the last access time in > nanoseconds. > > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/731a9430-6c0d-4f9f-87ec-75f833cc544fn%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/731a9430-6c0d-4f9f-87ec-75f833cc544fn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfHQ-Vga3dq2KcrQ-o-RjJg%2By6nBaSwc9bw6FoQwcSRuCA%40mail.gmail.com.