> From an engineering point of view, couldn't the code set everything with
> \input engine.tex
> ? So that it's easier to see what depends on the engine and in order
> for modifications to the engine to be severed from the rest of the code?
Very little of the code is engine-specific, and the parts that are are
largely in separate files as you suggest. Broadly
- l3names needs to save primitives in a predictable way, so checks for
example for pdfTeX and LuaTeX names for the same concepts
- l3sys sets up engine-specific paths
- l3backend is split by backend: you likely are using dvips so
l3backend-dvips.def needs to be loaded
I see Phelype has addressed the other parts.