Skip to content

Commit f9e2ac8

Browse files
committed
docs: belatedly generate release notes for 1.9.0
Fixes: #14984
1 parent 26ccaa4 commit f9e2ac8

17 files changed

+134
-110
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
---
2+
title: Release 1.9.0
3+
short-description: Release notes for 1.9.0
4+
...
5+
6+
# New features
7+
8+
Meson 1.9.0 was released on 24 August 2025
9+
## Array `.flatten()` method
10+
11+
Arrays now have a `.flatten()` method, which turns nested arrays into a single
12+
flat array. This provides the same effect that Meson often does to arrays
13+
internally, such as when passed to most function arguments.
14+
15+
## `clang-tidy`'s auto-generated targets correctly select source files
16+
17+
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.
18+
19+
It will now run only on source files participating in targets.
20+
21+
## Added Qualcomm's embedded linker, eld
22+
23+
Qualcomm recently open-sourced their embedded linker.
24+
https://github.com/qualcomm/eld
25+
26+
Meson users can now use this linker.
27+
28+
## Added suffix function to the FS module
29+
30+
The basename and stem were already available. For completeness, expose also the
31+
suffix.
32+
33+
## Support response files for custom targets
34+
35+
When using the Ninja backend, Meson can now pass arguments to supported tools
36+
through response files.
37+
38+
In this release it's enabled only for the Gnome module, fixing calling
39+
`gnome.mkenums()` with a large set of files on Windows (requires
40+
Glib 2.59 or higher).
41+
42+
## meson format now has a --source-file-path argument when reading from stdin
43+
44+
This argument is mandatory to mix stdin reading with the use of editor config.
45+
It allows to know where to look for the .editorconfig, and to use the right
46+
section of .editorconfig based on the parsed file name.
47+
48+
## Added license keyword to pkgconfig.generate
49+
50+
When specified, it will add a `License:` attribute to the generated .pc file.
51+
52+
## New experimental option `rust_dynamic_std`
53+
54+
A new option `rust_dynamic_std` can be used to link Rust programs so
55+
that they use a dynamic library for the Rust `libstd`.
56+
57+
Right now, `staticlib` crates cannot be produced if `rust_dynamic_std` is
58+
true, but this may change in the future.
59+
60+
## Rust and non-Rust sources in the same target
61+
62+
Meson now supports creating a single target with Rust and non Rust
63+
sources mixed together. In this case, if specified, `link_language`
64+
must be set to `rust`.
65+
66+
## Explicitly setting Swift module name is now supported
67+
68+
It is now possible to set the Swift module name for a target via the
69+
*swift_module_name* target kwarg, overriding the default inferred from the
70+
target name.
71+
72+
```meson
73+
lib = library('foo', 'foo.swift', swift_module_name: 'Foo')
74+
```
75+
76+
## Top-level statement handling in Swift libraries
77+
78+
The Swift compiler normally treats modules with a single source
79+
file (and files named main.swift) to run top-level code at program
80+
start. This emits a main symbol which is usually undesirable in a
81+
library target. Meson now automatically passes the *-parse-as-library*
82+
flag to the Swift compiler in case of single-file library targets to
83+
disable this behavior unless the source file is called main.swift.
84+
85+
## Swift compiler receives select C family compiler options
86+
87+
Meson now passes select few C family (C/C++/Obj-C/Obj-C++) compiler
88+
options to the Swift compiler, notably *-std=*, in order to improve
89+
the compatibility of C code as interpreted by the C compiler and the
90+
Swift compiler.
91+
92+
NB: This does not include any of the options set in the target's
93+
c_flags.
94+
95+
## Swift/C++ interoperability is now supported
96+
97+
It is now possible to create Swift executables that can link to C++ or
98+
Objective-C++ libraries. To enable this feature, set the target kwarg
99+
_swift\_interoperability\_mode_ to 'cpp'.
100+
101+
To import C++ code, specify a bridging header in the Swift target's
102+
sources, or use another way such as adding a directory containing a
103+
Clang module map to its include path.
104+
105+
Note: Enabling C++ interoperability in a library target is a breaking
106+
change. Swift libraries that enable it need their consumers to enable
107+
it as well, as per [the Swift documentation][1].
108+
109+
Swift 5.9 is required to use this feature. Xcode 15 is required if the
110+
Xcode backend is used.
111+
112+
```meson
113+
lib = static_library('mylib', 'mylib.cpp')
114+
exe = executable('prog', 'main.swift', 'mylib.h', link_with: lib, swift_interoperability_mode: 'cpp')
115+
```
116+
117+
[1]: https://www.swift.org/documentation/cxx-interop/project-build-setup/#vending-packages-that-enable-c-interoperability
118+
119+
## Support for MASM in Visual Studio backends
120+
121+
Previously, assembling `.masm` files with Microsoft's Macro Assembler is only
122+
available on the Ninja backend. This now also works on Visual Studio backends.
123+
124+
Note that building ARM64EC code using `ml64.exe` is currently unimplemented in
125+
both of the backends. If you need mixing x64 and Arm64 in your project, please
126+
file an issue on GitHub.
127+
128+
## Limited support for WrapDB v1
129+
130+
WrapDB v1 has been discontinued for several years, Meson will now print a
131+
deprecation warning if a v1 URL is still being used. Wraps can be updated to
132+
latest version using `meson wrap update` command.
133+

docs/markdown/snippets/array-flatten.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

docs/markdown/snippets/clang-tidy-improvement.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

docs/markdown/snippets/eld-support.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

docs/markdown/snippets/fs_suffix.md

Lines changed: 0 additions & 4 deletions
This file was deleted.

docs/markdown/snippets/gnome-rsp-files-support.md

Lines changed: 0 additions & 8 deletions
This file was deleted.

docs/markdown/snippets/meson-format-stdin-editorconfig.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

docs/markdown/snippets/pkgconfig-gen-license.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

docs/markdown/snippets/rust-dynamic-std.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

docs/markdown/snippets/rust-mixed.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)