Those are both for incremental compilation times. One of the big improvements in 0.19.1 is that it checks if the public API of a module has changed. If it has not changed, there is no need to recompile any of the modules that import it.
So @Birowsky is seeing it go from 197 modules to 1 module as a result of this change. There are still 196 modules that depend on the API of this one critical module, but the compiler can skip them for most edits!
Note 1: You will be able to increase the benefits of this optimization by using an explicit
exposing in your modules. That way you can add new helper functions internally without changing the public API, thereby getting the faster compiles in more cases.
Note 2: This optimization also means that the worst case is improved. When an public API is changed, you must check modules that import it directly. Maybe they are broken. But you do not need to check on any modules that import it indirectly. So if your project was like:
/ \ / \
C D E F
/ \ / \ / \ / \
When you change the public API of
BigModule you only need to check on
B. Their API stays the same, so you can skip compiling
F, and everything else. So even in the worst case, it is unlikely that @Birowsky could trigger a 197 module recompile when using the new compiler.