[racket-dev] Compile cache being incorrect

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Fri Apr 4 10:15:39 EDT 2014

If I understand the question:

 * With 34c3eed615, "pr12644.rkt" can compile and run.

 * With d29df205f7, "pr12644.rkt" fails to compile.

 * A bytecode form of "pr12644.rkt" compiled with 34c3eed615 can still
   run in d29df205f7, because run-time support for "pr12644.rkt" didn't

 * When you tell `racket` to run "pr12644.rkt", it will use a ".zo" for
   each of "pr12644.rkt" and its dependencies as long each individual
   ".zo" file has a newer timestamp than its ".rkt" file. That is, the
   only timestamp comparisons are on individual ".rkt" and ".zo" pairs.

 * When you tell `raco make` to build "pr12644.rkt", it checks
   dependencies (via ".dep" file) and compares a ".rkt" file's
   timestamp against the times of all of its dependencies, instead of
   just checking individual ".rkt" and ".zo" pairs. That's why a `raco
   make` in d29df205f7 tries to recompile "pr12644.rkt".

At Thu, 3 Apr 2014 09:41:19 -0700, Eric Dobson wrote:
> I have seen multiple times changes in TR not getting properly
> propogated to TR programs in my debugging, and I finally have found a
> repeatable example.
> I am under the impression that if I compile a file and then change a
> (transitive) dependency of it, then it should have to be recompiled,
> but I am not seeing that.
> Steps to reproduce:
> git checkout 34c3eed6155765a1e457f69194786575128a13a5
> raco setup -D typed-racket typed
> raco make 
> pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr12644.rkt
> racket -l tests/typed-racket/succeed/pr12644
> The test should run successfully and output '(6 7 8 9)
> Now make the change (rolling forward one commit):
> git checkout d29df205f7bb8347f60c82206b74e3e167e2de24
> racket -l tests/typed-racket/succeed/pr12644
> raco make 
> pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr12644.rkt
> The test runs the first time successfully but fails if you try to
> compile it again. Can someone explain why this is not working like I
> expect?
> _________________________
>   Racket Developers list:
>   http://lists.racket-lang.org/dev

Posted on the dev mailing list.