-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathRelease-notes-for-1-7-0.html
360 lines (323 loc) · 15.7 KB
/
Release-notes-for-1-7-0.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
<!DOCTYPE html>
<html lang="en">
<head>
<base href=".">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Release 1.7.0</title>
<link rel="stylesheet" href="assets/css/dark-frontend.css" type="text/css" title="dark">
<link rel="alternate stylesheet" href="assets/css/light-frontend.css" type="text/css" title="light">
<link rel="stylesheet" href="assets/css/bootstrap-toc.min.css" type="text/css">
<link rel="stylesheet" href="assets/css/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="assets/js/search/enable_search.css" type="text/css">
<link rel="stylesheet" href="assets/css/notes.css" type="text/css">
<link rel="stylesheet" href="assets/css/prism-tomorrow.css" type="text/css" title="dark">
<link rel="alternate stylesheet" href="assets/css/prism.css" type="text/css" title="light">
<script src="assets/js/mustache.min.js"></script>
<script src="assets/js/jquery.js"></script>
<script src="assets/js/bootstrap.js"></script>
<script src="assets/js/scrollspy.js"></script>
<script src="assets/js/typeahead.jquery.min.js"></script>
<script src="assets/js/search.js"></script>
<script src="assets/js/compare-versions.js"></script>
<script src="assets/js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="assets/js/bootstrap-toc.min.js"></script>
<script src="assets/js/jquery.touchSwipe.min.js"></script>
<script src="assets/js/anchor.min.js"></script>
<script src="assets/js/tag_filtering.js"></script>
<script src="assets/js/language_switching.js"></script>
<script src="assets/js/styleswitcher.js"></script>
<script src="assets/js/lines_around_headings.js"></script>
<script src="assets/js/prism-core.js"></script>
<script src="assets/js/prism-autoloader.js"></script>
<script src="assets/js/prism_autoloader_path_override.js"></script>
<script src="assets/js/prism-keep-markup.js"></script>
<script src="assets/js/trie.js"></script>
<link rel="icon" type="image/png" href="assets/images/favicon.png">
<link rel="shortcut icon" href="assets/images/favicon.png">
</head>
<body class="no-script
">
<script>
$('body').removeClass('no-script');
</script>
<nav class="navbar navbar-fixed-top navbar-default" id="topnav">
<div class="container-fluid">
<div class="navbar-right">
<a id="toc-toggle">
<span class="glyphicon glyphicon-menu-right"></span>
<span class="glyphicon glyphicon-menu-left"></span>
</a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-wrapper" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span title="light mode switch" class="glyphicon glyphicon-sunglasses pull-right" id="lightmode-icon"></span>
<form class="navbar-form pull-right" id="navbar-search-form">
<div class="form-group has-feedback">
<input type="text" class="form-control input-sm" name="search" id="sidenav-lookup-field" placeholder="search" disabled>
<span class="glyphicon glyphicon-search form-control-feedback" id="search-mgn-glass"></span>
</div>
</form>
</div>
<div class="navbar-header">
<a id="sidenav-toggle">
<span class="glyphicon glyphicon-menu-right"></span>
<span class="glyphicon glyphicon-menu-left"></span>
</a>
<a id="home-link" href="index.html" class="hotdoc-navbar-brand">
<img src="assets/images/meson_logo.png" alt="Home">
</a>
</div>
<div class="navbar-collapse collapse" id="navbar-wrapper">
<ul class="nav navbar-nav" id="menu">
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Modules <span class="caret"></span>
</a>
<ul class="dropdown-menu" id="modules-menu">
<li>
<a href="CMake-module.html">CMake</a>
</li>
<li>
<a href="Cuda-module.html">CUDA</a>
</li>
<li>
<a href="Dlang-module.html">Dlang</a>
</li>
<li>
<a href="External-Project-module.html">External Project</a>
</li>
<li>
<a href="Fs-module.html">Filesystem</a>
</li>
<li>
<a href="Gnome-module.html">GNOME</a>
</li>
<li>
<a href="Hotdoc-module.html">Hotdoc</a>
</li>
<li>
<a href="i18n-module.html">i18n</a>
</li>
<li>
<a href="Icestorm-module.html">Icestorm</a>
</li>
<li>
<a href="Java-module.html">Java</a>
</li>
<li>
<a href="Keyval-module.html">Keyval</a>
</li>
<li>
<a href="Pkgconfig-module.html">Pkgconfig</a>
</li>
<li>
<a href="Python-3-module.html">Python 3</a>
</li>
<li>
<a href="Python-module.html">Python</a>
</li>
<li>
<a href="Qt4-module.html">Qt4</a>
</li>
<li>
<a href="Qt5-module.html">Qt5</a>
</li>
<li>
<a href="Qt6-module.html">Qt6</a>
</li>
<li>
<a href="Rust-module.html">Rust</a>
</li>
<li>
<a href="Simd-module.html">Simd</a>
</li>
<li>
<a href="SourceSet-module.html">SourceSet</a>
</li>
<li>
<a href="Wayland-module.html">Wayland</a>
</li>
<li>
<a href="Windows-module.html">Windows</a>
</li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Quick References <span class="caret"></span>
</a>
<ul class="dropdown-menu" id="quick-refs-menu">
<li>
<a href="Reference-manual.html">Functions</a>
</li>
<li>
<a href="Build-options.html">Options</a>
</li>
<li>
<a href="Configuration.html">Configuration</a>
</li>
<li>
<a href="Dependencies.html">Dependencies</a>
</li>
<li>
<a href="Unit-tests.html">Tests</a>
</li>
<li>
<a href="Syntax.html">Syntax</a>
</li>
</ul>
</li>
</ul>
<div class="hidden-xs hidden-sm navbar-text navbar-center">
<p><b>The Meson Build System</b></p>
</div>
</div>
</div>
</nav>
<main>
<div data-extension="core" data-hotdoc-in-toplevel="True" data-hotdoc-project="Meson-documentation" data-hotdoc-ref="Release-notes-for-1-7-0.html" class="page_container" id="page-wrapper">
<script src="assets/js/utils.js"></script>
<div class="panel panel-collapse oc-collapsed" id="sidenav" data-hotdoc-role="navigation">
<script src="assets/js/full-width.js"></script>
<div id="sitenav-wrapper">
<iframe src="hotdoc-sitemap.html" id="sitenav-frame"></iframe>
</div>
</div>
<div id="body">
<div id="main">
<div id="page-description" data-hotdoc-role="main">
<h1 id="new-features">New features</h1>
<p>Meson 1.7.0 was released on 26 January 2025</p>
<h2 id="call-for-testing-for-next-release">Call for testing for next release</h2>
<p>At the beginning of next cycle we aim to merge the <a href="https://github.com/mesonbuild/meson/pull/13441">option refactor
branch</a>. This is a
<em>huge</em> change that will touch pretty much all code.</p>
<p>The main change it brings is that you can override any builtin option
value for any subproject (even the top one) entirely from the command
line. This means that you can, for example, enable optimizations on
all subprojects but not on the top level project.</p>
<p>We have done extensive testing and all our tests currently
pass. However it is expected that this will break some workflows. So
please test the branch when it lands and report issues. We want to fix
all regressions as soon as possible, preferably far before the next rc
release.</p>
<h2 id="new-custom-dependency-for-atomic">New custom dependency for atomic</h2>
<pre><code>dependency('atomic')
</code></pre>
<p>checks for the availability of the atomic operation library. First, it looks
for the atomic library. If that is not found, then it will try to use what is
provided by the libc.</p>
<h2 id="caplints-allow-used-for-cargo-subprojects">
<code>--cap-lints allow</code> used for Cargo subprojects</h2>
<p>Similar to Cargo itself, all downloaded Cargo subprojects automatically
add the <code>--cap-lints allow</code> compiler argument, thus hiding any warnings
from the compiler.</p>
<p>Related to this, <code>warning_level=0</code> now translates into <code>--cap-lints allow</code>
for Rust targets instead of <code>-A warnings</code>.</p>
<h2 id="cargo-features-are-resolved-globally">Cargo features are resolved globally</h2>
<p>When configuring a Cargo dependency, Meson will now resolve its complete
dependency tree and feature set before generating the subproject AST.
This solves many cases of Cargo subprojects being configured with missing
features that the main project had to enable by hand using e.g.
<code>default_options: ['foo-rs:feature-default=true']</code>.</p>
<p>Note that there could still be issues in the case there are multiple Cargo
entry points. That happens if the main Meson project makes multiple <code>dependency()</code>
calls for different Cargo crates that have common dependencies.</p>
<p>Breaks: This change removes per feature Meson options that were previously
possible to set as shown above or from command line <code>-Dfoo-rs:feature-foo=true</code>.</p>
<h2 id="meson-can-run-clippy-on-rust-projects">Meson can run "clippy" on Rust projects</h2>
<p>Meson now defines a <code>clippy</code> target if the project uses the Rust programming
language. The target runs clippy on all Rust sources, using the <code>clippy-driver</code>
program from the same Rust toolchain as the <code>rustc</code> compiler.</p>
<p>Using <code>clippy-driver</code> as the Rust compiler will now emit a warning, as it
is not meant to be a general-purpose compiler front-end.</p>
<h2 id="devenv-support-in-external-project-module">Devenv support in external project module</h2>
<p>The <a href="External-Project-module.html">external project module</a> now setups <code>PATH</code> and
<code>LD_LIBRARY_PATH</code> to be able to run programs.</p>
<p><code>@BINDIR@</code> is now substitued in arguments and <code>'--bindir=@PREFIX@/@BINDIR@'</code>
default argument have been added.</p>
<h2 id="fixed-sizeof-and-find_library-methods-for-fortran-compilers">Fixed <code>sizeof</code> and <code>find_library</code> methods for Fortran compilers</h2>
<p>The implementation of the <code>.sizeof()</code> method has been fixed for Fortran
compilers (it was previously broken since it would try to compile a C code
snippet). Note that this functionality requires Fortran 2008 support.</p>
<p>Incidentally this also fixes the <code>.find_library()</code> method for Fortran compilers
when the <code>prefer_static</code> built-in option is set to true.</p>
<h2 id="format-command-now-accept-stdin-argument">format command now accept stdin argument</h2>
<p>You can now use <code>-</code> argument for <code>meson format</code> to read input from stdin
instead of reading it from a file.</p>
<h2 id="machine-entry-in-target-introspection-data">"machine" entry in target introspection data</h2>
<p>The JSON data returned by <code>meson introspect --targets</code> now has a <code>machine</code>
entry in each <code>target_sources</code> block. The new entry can be one of <code>build</code>
or <code>host</code> for compiler-built targets, or absent for <code>custom_target</code> targets.</p>
<h2 id="add-new-language-linear-asm">Add new language Linear Asm</h2>
<p>TI C6000 compiler supports a dialect of TI asm, so we add a new language for it.</p>
<h2 id="control-the-number-of-child-processes-with-an-environment-variable">Control the number of child processes with an environment variable</h2>
<p>Previously, <code>meson test</code> checked the <code>MESON_TESTTHREADS</code> variable to control
the amount of parallel jobs to run; this was useful when <code>meson test</code> is
invoked through <code>ninja test</code> for example. With this version, a new variable
<code>MESON_NUM_PROCESSES</code> is supported with a broader scope: in addition to
<code>meson test</code>, it is also used by the <code>external_project</code> module and by
Ninja targets that invoke <code>clang-tidy</code>, <code>clang-format</code> and <code>clippy</code>.</p>
<h2 id="support-for-rust-2024">Support for Rust 2024</h2>
<p>Meson can now request the compiler to use the 2024 edition of Rust. Use
<code>rust_std=2024</code> to activate it. Rust 2024 requires the 1.85.0 version
(or newer) of the compiler.</p>
<h2 id="support-tasking-vxtoolset">Support TASKING VX-Toolset</h2>
<p>Meson now supports the TASKING VX-Toolset compiler family for the Tricore cpu family.</p>
<h2 id="test-targets-no-longer-built-by-default">Test targets no longer built by default</h2>
<p><code>meson test</code> and the <code>ninja all</code> rule have been reworked to no longer force
unnecessary rebuilds.</p>
<p><code>meson test</code> was invoking <code>ninja all</code> due to a bug if the chosen set of tests
had no build dependencies. The behavior is now the same as when tests do have
build dependencies, i.e. to only build the actual set of targets that are used
by the test. This change could cause failures when upgrading to Meson 1.7.0, if
the dependencies are not specified correctly in meson.build. Using <code>ninja test</code>
has always been guaranteed to "do the right thing" and rebuild <code>all</code> as well;
this continues to work.</p>
<p><code>ninja all</code> does not rebuild all tests anymore; it should be noted that this
change means test programs are no longer guaranteed to have been built,
depending on whether those test programs were <em>also</em> defined to build by
default / marked as installable. This avoids building test-only binaries as
part of installing the project (<code>ninja && ninja install</code>), which is unnecessary
and has no use case.</p>
<p>Some users might have been relying on the "all" target building test
dependencies in combination with <code>meson test --no-rebuild</code> in order to skip
calling out to ninja when running tests. This might break with this change
because, when given <code>--no-rebuild</code>, Meson provides no guarantee that test
dependencies are present and up to date. The recommended workflow is to use
either <code>ninja test</code> or <code>ninja && meson test</code> but, if you wish to build test
programs and dependencies in a separate stage, you can use for example <code>ninja all meson-test-prereq meson-benchmark-prereq</code> before <code>meson test --no-rebuild</code>.
These prereq targets have been available since meson 0.63.0.</p>
<h2 id="install-vcs_tag-output">Install vcs_tag() output</h2>
<p><a href="Reference-manual_functions.html#vcs_tag"><ins><code>vcs_tag()</code></ins></a> now has <code>install</code>, <code>install_dir</code>, <code>install_tag</code> and <code>install_mode</code>
keyword arguments to install the generated file.</p>
</div>
</div>
<div id="search_results">
<p>The results of the search are</p>
</div>
<div id="footer">
<hr>
<div class="license-description">
Website licensing information are available on the <a href="legal.html">Legal</a> page.
</div>
</div>
</div>
<div id="toc-column">
<div class="edit-button">
<a href="https://github.com/mesonbuild/meson/edit/master/docs/markdown/Release-notes-for-1.7.0.md" data-hotdoc-role="edit-button">Edit on GitHub</a>
</div>
<div id="toc-wrapper">
<nav id="toc"></nav>
</div>
</div>
</div>
</main>
<script src="assets/js/navbar_offset_scroller.js"></script>
</body>
</html>