On 08/11/2023 16.38, Pol Dellaiera wrote:

you define functions doing I/O as Impure functions.
But without I/O, no build output can be written, so all builds must use impure functions.


In practice we see non-determinism from approx 10 sources, such as documented in https://github.com/bmwiedemann/theunreproduciblepackage/

e.g.
https://github.com/bmwiedemann/theunreproduciblepackage/blob/master/race/race.2.sh

#!/bin/sh
racepart()
{
    input=$1
    sleep 0.1
    echo $input
}
for i in $(seq 1 10) ; do
    # & backgrounds the process to do parallel processing
    racepart $i &
done

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to