A proof that Meson is Turing-Complete
github.com
github.com
Many languages have no memory limit. Some do not even have a notion of memory (e.g. lambda calculus). Language implementations on physical machines do suffer from memory limits though.
Meson only allows bounded loops, so technically it's not Turing complete. But the author claims:
> ## Loop over 2^64 elements, this is effectively an infinite loop
>an upper bound on the total number of steps is tot = x + y*z
I think this should be x + z**y, since the y loops could be nested, but the basic argument that there is a finite upper bound is sound.
In other words, once you're PSPACE-complete, sound analysis is already intractable. Not being Turing complete makes no further practical difference ("sure, analysing a program will take longer than the heat-death of the universe, but we take comfort in the fact that it's bounded!"). Decidability is an older and more famous notion than tractability, but in computational complexity and in program analysis we care about the latter (the former matters only so far as if something is undecidable then it's also intractable).
[1]: https://en.wikipedia.org/wiki/True_quantified_Boolean_formul...
>The distinction of turing-completeness is actually not very interesting (e.g. see https://en.wikipedia.org/wiki/Turing_tarpit)
I think it's true given the goal to support a specific set of requirements of modern build systems.
The problem is that there is no separate dependency management protocol to target, and there is no separate projects description configuration format. That means build systems end up trying to interoperate with, or even implement large portions of, those kinds of subsystems.
BTW, Meson is the simplest C/C++ build system I know yet, great for small and/or personal projects.
It's pretty straightforward to understand, has good documentation and it's fast.