Hi all, just catching up on this thread. FWIW I agree with Apollon; as rlb pointed out on IRC, we introduce a potential race condition when we don't recompile when the timestamps are equal. Quoting him...
The scenario I was thinking of is "clock ticks over to 1001s, I compile foo.clj -> foo.class, then I edit foo.clj, then clock ticks over to 1002s, and we make a jar", but the filesystem says both the .clj and the .class are mtime 1001s even though foo.clj is different. This example assumes a filesystem with 1s mtime resolution. Unlikely for a human editing files, of course, but could be problematic with e.g. automated build processes. As such I don't actually know if Clojure upstream would be willing to accept the patch. I can submit just to see what they say? I'm honestly not sure they'll consider this a bug. Having chatted with Phil Hagelberg (author of leiningen) as well, he suggests we go for solution b) or something similar, as he believes this to be a packaging concern as opposed to a core language problem. - e