Hi, I pushed a branch named 'split-gen-setting-2' to the rakudo repository on github, aiming to speed up the compilation process.
Currently all the *.pm files of the setting are simply concatenated, and the resulting file is compiled down to PIR. This has two disadvantages: it takes long and can't be parallelized, and it means that errors from the setting are reported with a fairly generic file name (src/gen_setting.pm or something like that). In the branch I mentioned above every .pm from the setting is compiled on its own, and the PIR files are then concatenated, getting rid of both disadvantages. However there is a problem which prevents it from building: some classes (namely Rat and IO::*) are defined only in the setting, and then used later on in other setting files. Since type names must be known at parse time, this causes parse errors in the files that use such types but don't declare them. I have no idea what the best solution is; some ideas are: 1) define all classes in PIR, and augment them in setting or 2) introduce dependencies between the setting files, and manually import the dependent types or 3) have a file in the setting which contains all the class definitions on which the others depend, compile that first, and make (at least notionally) every other setting file depend on that. Somehow they look all wrong (and 2 and 3 complicated) to me - any better ideas? Cheers, Moritz