New features (in development)
Changes to the b_sanitize option
Before 1.8 the b_sanitize
option was a combo option, which is an enumerated
set of values. In 1.8 this was changed to a free-form array of options where
available sanitizers are not hardcoded anymore but instead verified via a
compiler check.
This solves a number of longstanding issues such as:
- Sanitizers may be supported by a compiler, but not on a specific platform (OpenBSD).
- New sanitizers are not recognized by Meson.
- Using sanitizers in previously-unsupported combinations.
To not break backwards compatibility, calling get_option('b_sanitize')
continues to return the configured value as a string, with a guarantee that
address,undefined
remains ordered.
i18n module xgettext
There is a new xgettext
function in i18n
module that acts as a
wrapper around xgettext
. It allows to extract strings to translate from
source files.
This function is convenient, because:
- It can find the sources files from a build target;
- It will use an intermediate file when the number of source files is too big to be handled directly from the command line;
- It is able to get strings to translate from the dependencies of the given targets.
version_compare
now accept multiple compare strings
Is it now possible to compare version against multiple values, to check for a range of version for instance.
'1.5'.version_compare('>=1', '<2')
Per project subproject options rewrite
You can now define per-subproject values for all shared configuration options. As an example you might want to enable optimizations on only one subproject:
meson configure -Dnumbercruncher:optimization=3
Subproject specific values can be removed with -U
meson configure -Unumbercruncher:optimization
This is a major change in how options are handled, and the implementation will evolve over the next few releases of Meson. If this change causes an error in your builds, please report an issue on GitHub.
We have tried to keep backwards compatibility as much as possible, but this may lead to some build breakage.
objects
added correctly to Rust executables
Any objects included in a Rust executable were previously ignored. They are now added correctly.
rust.test
now supports link_whole
The test
function in the rust
module now supports the link_whole
keyword argument in addition to link_with
and dependencies
.
Meson can run "rustdoc" on Rust projects
Meson now defines a rustdoc
target if the project
uses the Rust programming language. The target runs rustdoc on all Rust
sources, using the rustdoc
program from the same Rust toolchain as the
rustc
compiler.
New option to execute a slice of tests
When tests take a long time to run a common strategy is to slice up the tests
into multiple sets, where each set is executed on a separate machine. You can
now use the --slice i/n
argument for meson test
to create n
slices and
execute the ith
slice.
Valgrind now fails tests if errors are found
Valgrind does not reflect an error in its exit code by default, meaning
a test may silently pass despite memory errors. Meson now exports
VALGRIND_OPTS
such that Valgrind will exit with status 1 to indicate
an error if VALGRIND_OPTS
is not set in the environment.
The results of the search are