Ludovic Courtès skribis: > ludo@ribbon ~/src/guix$ ./pre-inst-env guix environment --pure --ad-hoc guile-next guile3.0-hashing -- guile ~/tmp/sha256.scm > > ;;; (hash "b33576331465a60b003573541bf3b1c205936a16c407bc69f8419a527bf5c988") > clock utime stime cutime cstime gctime > 65.17 89.75 0.45 0.00 0.00 35.63 The patch below gives us: --8<---------------cut here---------------start------------->8--- ludo@ribbon /tmp/hashing$ guile --r6rs -L .. ~/tmp/sha256.scm ;;; (hash "b33576331465a60b003573541bf3b1c205936a16c407bc69f8419a527bf5c988") clock utime stime cutime cstime gctime 59.31 80.65 0.39 0.00 0.00 30.73 --8<---------------cut here---------------end--------------->8--- It’s a disappointingly small improvement. The reason is that (hashing fixnums) adds another layer of opacity, where it ends up doing essentially: (define fx32xor fxxor) … Thus, no inlining, and no easy trick to solve that. :-/ Anyhow, I think the patch is probably a good idea. WDYT? Thanks, Ludo’.