Here are some performance numbers for MLton on md5.sml. Quite, impressive. Computing 100000 rounds on a 1000 byte block. 500 mhz Celeron with 128kb cache 33333333 bytes/second (reference C version gcc -O2) 33333333 bytes/second (reference C version gcc -O4) 14285714 bytes/second (mlton safe = true) 16666666 bytes/second (mlton safe = false) 1470588 bytes/second (sml 110.33) 609756 bytes/second (sml 110.0.7)