On Mon, Jun 21, 2021 at 2:54 AM José Valim <jose.va...@dashbit.co> wrote:

> Hi Marc-André!
>
> There is no particular reason, this is a functionality that could be
> added. In particular we can continue checking the mtime and file size but
> compare the contents if the mtime changed but the file size is the same.
>

Yep 👍


> I also think we should update the mtime anyway, even if the hash is the
> same. WDYT?
>

Yes, otherwise we might keep re-hashing the file over and over again.


> Feel free to open up an issue or, if you want to tackle it, even send a PR!
>

Awesome. I'll check if I can come up with a PR in the next few days, and if
not I'll create an issue.

Thanks. It's so awesome to get such quick feedback 💛


>
> Thanks!
>
> On Mon, Jun 21, 2021 at 8:20 AM Marc-André Lafortune <
> marc-an...@marc-andre.ca> wrote:
>
>> I'm a newbie, sorry if this has been asked before but I couldn't find
>> anything.
>>
>> Currently, elixir uses last modification dates to determine files that
>> need to be recompiled.
>>
>> ```
>> $ mix compile
>> # ...
>> $ touch lib/some/file.ex
>> $ mix compile
>> Compiling <n> files (.ex)
>> ```
>>
>> Could Elixir not verify that in addition to a modification time change,
>> that the actual text content has changed by comparing a hash of it? In the
>> example above, the file `lib/some/file.ex` would be hashed a second time,
>> but no recompilation would occur.
>>
>> Currently, many operations may change the last modification date even if
>> no content at all has changed:
>> * switch to a different branch, switch back
>> * do an interactive rebase:
>>   - to rewrite a commit message,
>>   - to reorder some commits
>>   - to squash some commits together
>>   - etc.
>>
>> While the content of the files does not change (at all) in these
>> examples, some very long recompilations may occur because elixir only
>> relies only on modification times and not on file hashes.
>> Hashing a file is orders of magnitude faster than compiling it, and
>> realizing that the potentially large number of compile-time dependencies of
>> a given file do not need to be recompiled is infinitely faster than
>> recompiling them all for nothing.
>>
>> I am presuming that hash collisions are deemed so incredible unlikely to
>> be acceptable, but if not, then I'd ask the same question but with using
>> the complete content of the source file instead of a hash of it. Copying a
>> source file is again an order of magnitude faster than the time it takes to
>> recompile it.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to elixir-lang-core+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elixir-lang-core/e7a68d8d-0102-483d-a4ec-58849eb88ef6n%40googlegroups.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/e7a68d8d-0102-483d-a4ec-58849eb88ef6n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "elixir-lang-core" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/elixir-lang-core/8-30JVn_8M0/unsubscribe
> .
> To unsubscribe from this group and all its topics, send an email to
> elixir-lang-core+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4L-_BRhadhXVckZ5TX4wLqgmxm-iuGHQr4M5Kdq4xM_1w%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4L-_BRhadhXVckZ5TX4wLqgmxm-iuGHQr4M5Kdq4xM_1w%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CADwvmaWP%2BccDF9QRdDfL8_B8fXuFXeFSL-fV0vLgOVqFH8LiHw%40mail.gmail.com.

Reply via email to