I can't reproduce it. I introduced a syntax error: ~/ML/livebook[jv-eval-compile]$ mix test Compiling 1 file (.ex)
== Compilation error in file lib/livebook_cli.ex == ** (ArithmeticError) bad argument in arithmetic expression lib/livebook_cli.ex:1: (module) (stdlib 3.15) erl_eval.erl:685: :erl_eval.do_apply/6 Then I fixed it: ~/ML/livebook[jv-eval-compile *]$ mix test Compiling 1 file (.ex) ................................................................................................................................................. On Mon, Jun 21, 2021 at 5:03 PM Zach Daniel <zachary.s.dan...@gmail.com> wrote: > This question may be tangentially related, but I'll bring it up here: > It seems that, even if it is just the last module that has to compile that > fails, nothing is cached/saved, and on subsequent compilations, the entire > application will need to be recompiled. I'm unsure if there are technical > limitations that cause that to be true, though. > > On Monday, June 21, 2021 at 10:01:56 AM UTC-4 Allen Madsen wrote: > >> +1 >> >> I've noticed mtime changes in some scenarios related to CI and docker, >> that causes things to be recompiled again even though there's no other >> change to the files. >> >> Allen Madsen >> http://www.allenmadsen.com >> >> >> On Mon, Jun 21, 2021 at 3:29 AM Marc-André Lafortune < >> marc-...@marc-andre.ca> wrote: >> >>> >>> >>> On Mon, Jun 21, 2021 at 2:54 AM José Valim <jose....@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-...@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-co...@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-co...@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-co...@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 >>> <https://groups.google.com/d/msgid/elixir-lang-core/CADwvmaWP%2BccDF9QRdDfL8_B8fXuFXeFSL-fV0vLgOVqFH8LiHw%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/93dc87b6-6d61-43b9-81aa-5b740a525f15n%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/93dc87b6-6d61-43b9-81aa-5b740a525f15n%40googlegroups.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/CAGnRm4J%3DXu-kR6%2BMoRgBG%2B3-HbpuYLjST6iyS3wj_80nkvamyQ%40mail.gmail.com.