diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2019-03-29 08:55:59 -0400 |
---|---|---|
committer | Fred Hebert <mononcqc@ferd.ca> | 2019-03-29 09:03:25 -0400 |
commit | 9f81a5754e0dc4d3ce968d02facdfa5c87dcea3c (patch) | |
tree | a6c7f50e7baa1484f7b059507bb0ca724cda48aa /src/rebar_prv_shell.erl | |
parent | ae0af35e8c8707ea8e60467a422d815bd549b55b (diff) |
Fix Parallel Compilation
This patch does two things:
1. it broadens the interface for the compiler module so that
non-first-file modules can possibly be parallelized. This is done by
dynamically switching on `[ListOfFiles]`, which remains sequential as
before, or `{[SeqPriority], [Parallel]}`, which divides regular files
between higher priority ones and those that can be in parallel
2. implements this mechanism in the rebar compiler, based on the erl
file digraph. If a file has an in-neighbour, it is depended on by
another file. The mechanism therefore makes it so all files that have
dependants get compiled in their strict relative sequential order
first, and then the undepended-on files get compiled together in
parallel.
By running:
./rebar3 ct --suite test/rebar_compile_SUITE.erl --case \
recompile_when_parse_transform_inline_changes --repeat 50
the previous iteration of this would rapidly fail, and this one succeeds
every time.
Diffstat (limited to 'src/rebar_prv_shell.erl')
0 files changed, 0 insertions, 0 deletions