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

Reply via email to