Use folders as packages, and compile every file to a binary format that can be read by the compiler to resolve symbols. Referenced symbols, and the symbols they reference from a package gets pulled in to the compile.
Would also allow for incremental compilation, potentially.