New features (in development)

Added Metrowerks C/C++ toolchains

Added support for the Metrowerks Embedded ARM and Metrowerks Embedded PowerPC toolchains (

The implementation is somewhat experimental. It has been tested on a few projects and works fairly well, but may have issues.


Added support for code like this:

gen1 = generator(...)
gen2 = generator(...)

Extra files keyword in declare_dependency

declare_dependency have a new extra_files keyword, to add extra files to a target. It is used mostly for IDE integration.

gnome.generate_gir() now supports env kwarg

gnome.generate_gir() now accepts the env kwarg which lets you set environment variables.

More data in introspection files

  • Used compilers are listed in intro-compilers.json
  • Informations about host, build and target machines are lister in intro-machines.json
  • intro-dependencies.json now includes internal dependencies, and relations between dependencies.
  • intro-targets.json now includes dependencies, vs_module_defs, win_subsystem, and linker parameters.

Find more specific python version on Windows

You can now use python3.x, where x is the minor version, to find a more specific version of python on Windows, when using the python module. On other platforms, it was already working as python3.x is the executable name.

Python module can now compile bytecode

A new builtin option is available: -Dpython.bytecompile=2. It can be used to compile bytecode for all pure python files installed via the python module.

Support for defining crate names of Rust dependencies in Rust targets

Rust supports defining a different crate name for a dependency than what the actual crate name during compilation of that dependency was.

This allows using multiple versions of the same crate at once, or simply using a shorter name of the crate for convenience.

a_dep = dependency('some-very-long-name')

my_executable = executable('my-executable', 'src/',
  rust_dependency_map : {
    'some_very_long_name' : 'a',
  dependencies : [a_dep],

Rust now supports the b_ndebug option

Which controls the debug_assertions cfg, which in turn controls debug_assert!() macro. This macro is roughly equivalent to C's assert(), as it can be toggled with command line options, unlike Rust's assert!(), which cannot be turned off, and is not designed to be.

Wildcards in list of tests to run

The meson test command now accepts wildcards in the list of test names. For example meson test basic* will run all tests whose name begins with "basic".

meson will report an error if the given test name does not match any existing test. meson will log a warning if two redundant test names are given (for example if you give both "proj:basic" and "proj:").

New for the generation of Visual Studio vcxproj projects

When vcxproj is generated, another file vcxproj.filters is generated in parallel. It enables to set a hierarchy of the files inside the solution following their place on filesystem.

The results of the search are