I love that this Lisp version from a comment at lobste.rs (https://lobste.rs/s/xz5l8t/one_program_written_python_go_rus...) runs in less than half the time of Rust, and is more readable to boot:
(declaim (ftype (function (string string) double-float) img-diff))
(defun img-diff (first-file-name second-file-name)
(declare (optimize (speed 3) (safety 0) (debug 0) (space 0)))
(let ((im1 (png:decode-file first-file-name))
(im2 (png:decode-file second-file-name)))
(declare ((SIMPLE-ARRAY (UNSIGNED-BYTE 8) (* * *)) im1 im2))
(/ (loop
for i fixnum below (array-total-size im1)
summing (abs (- (row-major-aref im1 i)
(row-major-aref im2 i))) fixnum)
(* (ash 1 (png:image-bit-depth im1)) (array-total-size im1))
1.0))) ; Convert rational to float
(img-diff "file1.png" "file2.png")