Hi Pete,
My objections to GMP:
- major added dependency (Make needs to be widely portable, and it is
often part of a boot-strapping procedure. The core functionality needs to
be trim. Heavy lifting needs to be separable.)
- slow (native int32 is much faster)
64 please! Files > 4GB are common now. If it's 64 bit then it's tolerable to not use GMP.
- massive YAGNI (Make is a build system, not a general-purpose computing
platform)
One could almost say that right now as here we are after many years and we've survived without it. It's the quality of that survival I suppose that has been unsatisfactory.
It might help to put down some use cases so that we have an idea of what is wanted. I will try to start:
In a project long ago ...
1. I needed to process lists of targets during parsing but calling $(shell) on each one was very slow so I waited till I had an arbitrary number and ran the shell command on all of them. I had to count to the arbitrary number using 'x x x x x x x x' as my number format. Ultimately I got it to work but it was horrible.
Needed: increment/decrement and then either string or numeric equality.
2. I needed to create targets which could not be guaranteed to be unique based on the source filenames because they were being built with different options and variations and amongst other ways of doing this a simple counter would have been useful. This means that one must be able to update a variable that exists in the context of the parse job of the current makefile at least.
Needed: addition.
3. Again when generating rules to control the length of the commandline in e.g. a "clean:" rule it was necessary to generate "rm" commands with limited numbers of files in the commandline so as not to exceed commandline length limits on the platform. I used a hokey rule of thumb that N files were never longer than the commandline but it would have been better to keep checking the length and only starting a new line when a filename spilled over some limit:
Needed: addition, greater-than
That's really it. Can anyone add to this?
So if guile is a good language which does math in postfix notation (+ 1 1) then I don't see why make can't be the same and since this is roughly the way make operations work now you can avoid inventing a lot of rules about what you "might need" in future.
Regards,
Tim