Regarding growth the repo size:
However, this approach does result in a slight increase in overall repository size. Comparing repo growth on commits over the past 90 days, the difference between the actual commits and the same commits with stencils added amounts to a difference of 0.03 MB per stencil file. This is a small increase in the context of the overall repository size, which has grown by 2.55 MB in the same time period. For six stencil files, this amounts to an upper bound of 0.18 MB. The current total size of the stencil files for all six platforms is 7.2 MB.
This growth is my main concern with putting the stencil files directly in the repo. If it was a one time 7.2 MB cost, I’d say fine, do it. However, it’s not. The JIT_DEPS in the Makefile are:
JIT_DEPS = \
$(srcdir)/Tools/jit/*.c \
$(srcdir)/Tools/jit/*.py \
$(srcdir)/Python/executor_cases.c.h \
pyconfig.h
Any time one of those files changes, the stencils need to be regenerated. Because they are output from the compiler, a one line change in one of those input files could potentially cause a lot of changes to the stencils. Over the past few weeks, the executor_cases.c.h files has changed many times.
In 6 months, could the storage used in the repo for stencils be 100 MB, rather than 7 MB? If so, I think that’s kind of a heavy cost to pay in order to avoid installing LLVM. The current .git folder is about 800 MB. Once that data goes in there, it’s in there forever. You can’t remove it later.
I won’t “fight to the death” on this issue. If other core devs think it’s fine to add the JIT stencils directly to the repo, I’ll accept the consensus. To me it doesn’t seem worth the storage cost.