Circular dependencies with parallel build cause the compiler get stuck
Key details
Description
If you have circular dependencies between namespaces, 😛arallel-build is enabled and :optimizations is something other than :none, the compiler won't show an error message about the circular dependencies and the compilation never finishes.
Looking at the code, I think that this happens because the parallel builder threads wait for their dependencies to be built before they proceed. With circular dependencies, this never happens. I suspect that commit 9ad6d5d61c introduced this problem, as it disabled the circularity-checking code that was run before the parallel compilation.
If you have circular dependencies between namespaces, 😛
arallel-buildis enabled and:optimizationsis something other than:none, the compiler won't show an error message about the circular dependencies and the compilation never finishes.Reproduction: https://github.com/miikka/cljs-circular-deps-repro
Looking at the code, I think that this happens because the parallel builder threads wait for their dependencies to be built before they proceed. With circular dependencies, this never happens. I suspect that commit
9ad6d5d61cintroduced this problem, as it disabled the circularity-checking code that was run before the parallel compilation.