New features (in development)
Array .flatten()
method
Arrays now have a .flatten()
method, which turns nested arrays into a single
flat array. This provides the same effect that Meson often does to arrays
internally, such as when passed to most function arguments.
clang-tidy
's auto-generated targets correctly select source files
In previous versions, the target would run clang-tidy
on every C-like source files (.c, .h, .cpp, .hpp). It did not work correctly because some files, especially headers, are not intended to be consumed as is.
It will now run only on source files participating in targets.
Added Qualcomm's embedded linker, eld
Qualcomm recently open-sourced their embedded linker. https://github.com/qualcomm/eld
Meson users can now use this linker.
Added suffix function to the FS module
The basename and stem were already available. For completeness, expose also the suffix.
Support response files for custom targets
When using the Ninja backend, Meson can now pass arguments to supported tools through response files.
In this release it's enabled only for the Gnome module, fixing calling
gnome.mkenums()
with a large set of files on Windows (requires
Glib 2.59 or higher).
Added license keyword to pkgconfig.generate
When specified, it will add a License:
attribute to the generated .pc file.
New experimental option rust_dynamic_std
A new option rust_dynamic_std
can be used to link Rust programs so
that they use a dynamic library for the Rust libstd
.
Right now, staticlib
crates cannot be produced if rust_dynamic_std
is
true, but this may change in the future.
Top-level statement handling in Swift libraries
The Swift compiler normally treats modules with a single source file (and files named main.swift) to run top-level code at program start. This emits a main symbol which is usually undesirable in a library target. Meson now automatically passes the -parse-as-library flag to the Swift compiler in case of single-file library targets to disable this behavior unless the source file is called main.swift.
Swift compiler receives select C family compiler options
Meson now passes select few C family (C/Obj-C) compiler options to the Swift compiler, notably -std=, in order to improve the compatibility of C code as interpreted by the C compiler and the Swift compiler.
NB: This does not include any of the options set in the target's c_flags.
Swift/C++ interoperability is now supported
It is now possible to create Swift executables that can link to C++ or Objective-C++ libraries. Only specifying a bridging header for the Swift target is required.
Swift 5.9 is required to use this feature. Xcode 15 is required if the Xcode backend is used.
lib = static_library('mylib', 'mylib.cpp')
exe = executable('prog', 'main.swift', 'mylib.h', link_with: lib)
Support for MASM in Visual Studio backends
Previously, assembling .masm
files with Microsoft's Macro Assembler is only
available on the Ninja backend. This now also works on Visual Studio backends.
Note that building ARM64EC code using ml64.exe
is currently unimplemented in
both of the backends. If you need mixing x64 and Arm64 in your project, please
file an issue on GitHub.
Limited support for WrapDB v1
WrapDB v1 has been discontinued for several years, Meson will now print a
deprecation warning if a v1 URL is still being used. Wraps can be updated to
latest version using meson wrap update
command.
The results of the search are