Explain the choice of implementation language. [skip ci]

pull/3395/head
Jussi Pakkanen 7 years ago
parent b216f03a01
commit b1c086b24d
  1. 37
      docs/markdown/FAQ.md

@ -294,3 +294,40 @@ for dependencies, even when an external dependency exists and could
satisfy the version requirements, for example in order to make
sure your project builds when fallbacks are used, you can use
`--wrap-mode=forcefallback` since 0.46.0.
## Why is Meson implemented in Python rather than [programming language X]?
Because build systems are special in ways normal applications aren't.
Perhaps the biggest limitation is that because Meson is used to build
software at the very lowest levels of the OS, it is part of the core
bootstrap for new systems. Whenever support for a new CPU architecture
is added, Meson must run on the system before software using it can be
compiled natively. This requirement adds two hard limitations.
The first one is that Meson must have the minimal amount of
dependencies, because they must all be built during the bootstrap to
get Meson to work.
The second is that Meson must support all CPU architectures, both
existing and future ones. As an example many new programming languages
have only an LLVM based compiler available. LLVM has limited CPU
support compared to, say, GCC, and thus bootstrapping Meson on such
platforms would first require adding new processor support to
LLVM. This is in most cases unfeasible.
A further limitation is that we want developers on as many platforms
as possible to submit to Meson development using the default tools
provided by their operating system. In practice what this means is
that Windows developers should be able to contribute using nothing but
Visual Studio.
At the time of writing (April 2018) there are only three languages
that could fullfill these requirements:
- C
- C++
- Python
Out of these we have chosen Python because it is the best fit for our
needs.

Loading…
Cancel
Save