aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown
diff options
context:
space:
mode:
Diffstat (limited to 'docs/markdown')
-rw-r--r--docs/markdown/Build-options.md4
-rw-r--r--docs/markdown/Builtin-options.md64
-rw-r--r--docs/markdown/CMake-module.md4
-rw-r--r--docs/markdown/Commands.md3
-rw-r--r--docs/markdown/Cross-compilation.md24
-rw-r--r--docs/markdown/Design-rationale.md10
-rw-r--r--docs/markdown/Fs-module.md15
-rw-r--r--docs/markdown/Getting-meson_zh.md2
-rw-r--r--docs/markdown/Gnome-module.md7
-rw-r--r--docs/markdown/Overview.md10
-rw-r--r--docs/markdown/Pkgconfig-module.md4
-rw-r--r--docs/markdown/Reference-tables.md1
-rw-r--r--docs/markdown/Release-notes-for-0.38.0.md2
-rw-r--r--docs/markdown/Rust.md13
-rw-r--r--docs/markdown/Syntax.md2
-rw-r--r--docs/markdown/Users.md188
-rw-r--r--docs/markdown/Wrap-dependency-system-manual.md11
-rw-r--r--docs/markdown/Yaml-RefMan.md6
-rw-r--r--docs/markdown/i18n-module.md2
-rw-r--r--docs/markdown/snippets/array-flatten.md5
-rw-r--r--docs/markdown/snippets/clang-tidy-improvement.md5
-rw-r--r--docs/markdown/snippets/eld-support.md6
-rw-r--r--docs/markdown/snippets/fs_suffix.md4
-rw-r--r--docs/markdown/snippets/gnome-rsp-files-support.md8
-rw-r--r--docs/markdown/snippets/meson-format-stdin-editorconfig.md5
-rw-r--r--docs/markdown/snippets/pkgconfig-gen-license.md3
-rw-r--r--docs/markdown/snippets/rust-dynamic-std.md7
-rw-r--r--docs/markdown/snippets/rust-mixed.md5
-rw-r--r--docs/markdown/snippets/swift-module-name.md9
-rw-r--r--docs/markdown/snippets/swift-parse-as-library.md8
-rw-r--r--docs/markdown/snippets/swift-pass-c-compiler-options.md9
-rw-r--r--docs/markdown/snippets/swift_cxx_interoperability.md23
-rw-r--r--docs/markdown/snippets/vs2010-masm-support.md8
-rw-r--r--docs/markdown/snippets/wrapdbv1.md5
34 files changed, 265 insertions, 217 deletions
diff --git a/docs/markdown/Build-options.md b/docs/markdown/Build-options.md
index 190705d..ee12f55 100644
--- a/docs/markdown/Build-options.md
+++ b/docs/markdown/Build-options.md
@@ -244,6 +244,10 @@ project which also has an option called `some_option`, then calling
`yield` is `false`, `get_option` returns the value of the subproject's
option.
+*Since 1.8.0* `-Dsub:some_option=anothervalue`, when used with a
+yielding option, sets the value separately from the option
+it yields to.
+
## Built-in build options
diff --git a/docs/markdown/Builtin-options.md b/docs/markdown/Builtin-options.md
index faf7a60..c23eaae 100644
--- a/docs/markdown/Builtin-options.md
+++ b/docs/markdown/Builtin-options.md
@@ -72,28 +72,28 @@ Options that are labeled "per machine" in the table are set per
machine. See the [specifying options per
machine](#specifying-options-per-machine) section for details.
-| Option | Default value | Description | Is per machine | Is per subproject |
-| -------------------------------------- | ------------- | ----------- | -------------- | ----------------- |
+| Option | Default value | Description | Is per machine | Per subproject (since) |
+| -------------------------------------- | ------------- | ----------- | -------------- | ---------------------- |
| auto_features {enabled, disabled, auto} | auto | Override value of all 'auto' features | no | no |
| backend {ninja, vs,<br>vs2010, vs2012, vs2013, vs2015, vs2017, vs2019, vs2022, xcode, none} | ninja | Backend to use | no | no |
| genvslite {vs2022} | vs2022 | Setup multi-buildtype ninja build directories and Visual Studio solution | no | no |
-| buildtype {plain, debug,<br>debugoptimized, release, minsize, custom} | debug | Build type to use | no | no |
-| debug | true | Enable debug symbols and other information | no | no |
-| default_both_libraries {shared, static, auto} | shared | Default library type for both_libraries | no | no |
-| default_library {shared, static, both} | shared | Default library type | no | yes |
+| buildtype {plain, debug,<br>debugoptimized, release, minsize, custom} | debug | Build type to use | no | 1.8.0 |
+| debug | true | Enable debug symbols and other information | no | 1.8.0 |
+| default_both_libraries {shared, static, auto} | shared | Default library type for both_libraries | no | 1.8.0 |
+| default_library {shared, static, both} | shared | Default library type | no | 0.54.0 |
| errorlogs | true | Whether to print the logs from failing tests. | no | no |
| install_umask {preserve, 0000-0777} | 022 | Default umask to apply on permissions of installed files | no | no |
| layout {mirror,flat} | mirror | Build directory layout | no | no |
-| optimization {plain, 0, g, 1, 2, 3, s} | 0 | Optimization level | no | no |
+| optimization {plain, 0, g, 1, 2, 3, s} | 0 | Optimization level | no | 1.8.0 |
| pkg_config_path {OS separated path} | '' | Additional paths for pkg-config to search before builtin paths | yes | no |
| prefer_static | false | Whether to try static linking before shared linking | no | no |
| cmake_prefix_path | [] | Additional prefixes for cmake to search before builtin paths | yes | no |
| stdsplit | true | Split stdout and stderr in test logs | no | no |
-| strip | false | Strip targets on install | no | no |
-| unity {on, off, subprojects} | off | Unity build | no | no |
-| unity_size {>=2} | 4 | Unity file block size | no | no |
-| warning_level {0, 1, 2, 3, everything} | 1 | Set the warning level. From 0 = compiler default to everything = highest | no | yes |
-| werror | false | Treat warnings as errors | no | yes |
+| strip | false | Strip targets on install | no | 1.8.0 |
+| unity {on, off, subprojects} | off | Unity build | no | 1.8.0 |
+| unity_size {>=2} | 4 | Unity file block size | no | 1.8.0 |
+| warning_level {0, 1, 2, 3, everything} | 1 | Set the warning level. From 0 = compiler default to everything = highest | no | 0.56.0 |
+| werror | false | Treat warnings as errors | no | 0.54.0 |
| wrap_mode {default, nofallback,<br>nodownload, forcefallback, nopromote} | default | Wrap mode to use | no | no |
| force_fallback_for | [] | Force fallback for those dependencies | no | no |
| vsenv | false | Activate Visual Studio environment | no | no |
@@ -150,6 +150,10 @@ the two-way mapping:
All other combinations of `debug` and `optimization` set `buildtype` to `'custom'`.
+Note that `-Ddebug=false` does not cause the compiler preprocessor macro
+`NDEBUG` to be defined.
+The macro can be defined using the base option `b_ndebug`, described below.
+
#### Details for `warning_level`
Exact flags per warning level is compiler specific, but there is an approximate
@@ -299,6 +303,7 @@ or compiler being used:
| cpp_thread_count | 4 | integer value ≥ 0 | Number of threads to use with emcc when using threads |
| cpp_winlibs | see below | free-form comma-separated list | Standard Windows libs to link against |
| fortran_std | none | [none, legacy, f95, f2003, f2008, f2018] | Fortran language standard to use |
+| rust_dynamic_std | false | true, false | Whether to link dynamically to the Rust standard library *(Added in 1.9.0)* |
| cuda_ccbindir | | filesystem path | CUDA non-default toolchain directory to use (-ccbin) *(Added in 0.57.1)* |
The default values of `c_winlibs` and `cpp_winlibs` are in
@@ -366,11 +371,10 @@ allowing differences in behavior to crop out.
## Specifying options per subproject
-Since *0.54.0* `default_library` and `werror` built-in options can be
-defined per subproject. This is useful, for example, when building
-shared libraries in the main project and statically linking a subproject,
-or when the main project must build with no warnings but some subprojects
-cannot.
+Several built-in options and all compiler options can be defined per subproject.
+This is useful, for example, when building shared libraries in the main project
+and statically linking a subproject, or when the main project must build
+with no warnings but some subprojects cannot.
Most of the time, this would be used either in the parent project by
setting subproject's default_options (e.g. `subproject('foo',
@@ -378,12 +382,30 @@ default_options: 'default_library=static')`), or by the user through the
command line: `-Dfoo:default_library=static`.
The value is overridden in this order:
+- `opt=value` from parent project's `default_options`
+- `opt=value` from subproject's `default_options`
+- `subp:opt=value` from parent project's default options
+- `opt=value` from `subproject()` `default_options`
+- `opt=value` from machine file
+- `opt=value` from command line
+- `subp:opt=value` from machine file
+- `subp:opt=value` from command line
+
+### Old behavior
+
+Between *0.54.0* and *1.7.x* only a few options could be defined per subproject:
+* `default_library` and `werror` since *0.54.0*;
+* `warning_level` since *0.56.0*;
+* compiler options since *0.63.0*
+
+The value was overridden in this order:
+
- Value from parent project
-- Value from subproject's default_options if set
-- Value from subproject() default_options if set
-- Value from command line if set
+- Value from subproject's `default_options`
+- Value from `subproject()` `default_options`
+- Value from machine file
+- Value from command line
-Since *0.56.0* `warning_level` can also be defined per subproject.
## Module options
diff --git a/docs/markdown/CMake-module.md b/docs/markdown/CMake-module.md
index f8275c9..982fa35 100644
--- a/docs/markdown/CMake-module.md
+++ b/docs/markdown/CMake-module.md
@@ -138,8 +138,8 @@ and supports the following methods:
`include_type` kwarg *(new in 0.56.0)* controls the include type of the
returned dependency object similar to the same kwarg in the
[[dependency]] function.
- - `include_directories(target)` returns a Meson [[@inc]]
- object for the specified target. Using this method is not necessary
+ - `include_directories(target)` returns an array of Meson [[@inc]]
+ objects for the specified target. Using this method is not necessary
if the dependency object is used.
- `target(target)` returns the raw build target.
- `target_type(target)` returns the type of the target as a string
diff --git a/docs/markdown/Commands.md b/docs/markdown/Commands.md
index 247f2d7..09d8fd9 100644
--- a/docs/markdown/Commands.md
+++ b/docs/markdown/Commands.md
@@ -493,6 +493,9 @@ or `--check-only` option).
input instead of reading it from a file. This cannot be used with `--recursive`
or `--inline` arguments.
+*Since 1.9.0* Using `-` as source file with `--editor-config` now requires
+`--source-file-path` argument to ensure consistent results.
+
#### Differences with `muon fmt`
diff --git a/docs/markdown/Cross-compilation.md b/docs/markdown/Cross-compilation.md
index 64196f3..65daa22 100644
--- a/docs/markdown/Cross-compilation.md
+++ b/docs/markdown/Cross-compilation.md
@@ -139,6 +139,22 @@ of a wrapper, these lines are all you need to write. Meson will
automatically use the given wrapper when it needs to run host
binaries. This happens e.g. when running the project's test suite.
+Note that `exe_wrapper` in the cross file is handled separately
+from the `exe_wrapper` argument in
+[`add_test_setup`](Reference-manual_functions.md#add_test_setup_exe_wrapper)
+and [`meson test --wrapper`](Unit-tests.md#other-test-options)
+command line argument. Meson must have `exe_wrapper` specified in the
+cross file or else it will skip tests that attempt to run cross
+compiled binaries. Only the cross file `exe_wrapper` value will be
+stored in the `MESON_EXE_WRAPPER` environment variable. If another
+wrapper is given in the test setup with `exe_wrapper` or as a
+`meson test --wrapper` command line argument, then meson will prepend
+the additional wrapper before the cross file wrapper like the
+following command:
+```
+[prepend_wrapper] <cross_file_wrapper> <exe_binary> <args...>
+```
+
### Properties
In addition to the properties allowed in [all machine
@@ -173,12 +189,12 @@ remember to specify the args as an array and not as a single string
*Since 0.52.0* The `sys_root` property may point to the root of the
host system path (the system that will run the compiled binaries).
-This is used internally by Meson to set the PKG_CONFIG_SYSROOT_DIR
+This is used internally by Meson to set the `PKG_CONFIG_SYSROOT_DIR`
environment variable for pkg-config. If this is unset the host system
is assumed to share a root with the build system.
-*Since 0.54.0* The pkg_config_libdir property may point to a list of
-path used internally by Meson to set the PKG_CONFIG_LIBDIR environment
+*Since 0.54.0* The `pkg_config_libdir` property may point to a list of
+path used internally by Meson to set the `PKG_CONFIG_LIBDIR` environment
variable for pkg-config. This prevents pkg-config from searching cross
dependencies in system directories.
@@ -357,7 +373,7 @@ myvar = meson.get_external_property('somekey')
As of version 0.44.0 Meson supports loading cross files from system
locations (except on Windows). This will be
-$XDG_DATA_DIRS/meson/cross, or if XDG_DATA_DIRS is undefined, then
+`$XDG_DATA_DIRS/meson/cross`, or if `XDG_DATA_DIRS` is undefined, then
/usr/local/share/meson/cross and /usr/share/meson/cross will be tried
in that order, for system wide cross files. User local files can be
put in $XDG_DATA_HOME/meson/cross, or ~/.local/share/meson/cross if
diff --git a/docs/markdown/Design-rationale.md b/docs/markdown/Design-rationale.md
index 4133979..c520773 100644
--- a/docs/markdown/Design-rationale.md
+++ b/docs/markdown/Design-rationale.md
@@ -34,9 +34,9 @@ may not work. In some cases the executable file is a binary whereas at
other times it is a wrapper shell script that invokes the real binary
which resides in a hidden subdirectory. GDB invocation fails if the
binary is a script but succeeds if it is not. The user has to remember
-the type of each one of his executables (which is an implementation
-detail of the build system) just to be able to debug them. Several
-other such pain points can be found in [this blog
+the type of each executable (which is an implementation detail of the
+build system) just to be able to debug them. Several other such pain
+points can be found in [this blog
post](http://voices.canonical.com/jussi.pakkanen/2011/09/13/autotools/).
Given these idiosyncrasies it is no wonder that most people don't want
@@ -132,7 +132,7 @@ and so on.
Sometimes you just have to compile files with only given compiler
flags and no others, or install files in weird places. The system must
-allow the user to do this if he really wants to.
+allow the user to do this.
Overview of the solution
--
@@ -151,7 +151,7 @@ passing around compiler flags and linker flags. In the proposed system
the user just declares that a given build target uses a given external
dependency. The build system then takes care of passing all flags and
settings to their proper locations. This means that the user can focus
-on his own code rather than marshalling command line arguments from
+on their own code rather than marshalling command line arguments from
one place to another.
A DSL is more work than the approach taken by SCons, which is to
diff --git a/docs/markdown/Fs-module.md b/docs/markdown/Fs-module.md
index 7ba4832..91c706e 100644
--- a/docs/markdown/Fs-module.md
+++ b/docs/markdown/Fs-module.md
@@ -206,13 +206,26 @@ fs.name('foo/bar/baz.dll.a') # baz.dll.a
*since 0.54.0*
Returns the last component of the path, dropping the last part of the
-suffix
+suffix.
```meson
fs.stem('foo/bar/baz.dll') # baz
fs.stem('foo/bar/baz.dll.a') # baz.dll
```
+### suffix
+
+*since 1.9.0*
+
+Returns the last dot-separated portion of the final component of the path
+including the dot, if any.
+
+```meson
+fs.suffix('foo/bar/baz.dll') # .dll
+fs.suffix('foo/bar/baz.dll.a') # .a
+fs.suffix('foo/bar') # (empty)
+```
+
### read
- `read(path, encoding: 'utf-8')` *(since 0.57.0)*:
return a [string](Syntax.md#strings) with the contents of the given `path`.
diff --git a/docs/markdown/Getting-meson_zh.md b/docs/markdown/Getting-meson_zh.md
index 4a4cb34..da0bdd5 100644
--- a/docs/markdown/Getting-meson_zh.md
+++ b/docs/markdown/Getting-meson_zh.md
@@ -1,6 +1,6 @@
# 获取Meson
-Meson基于Python3运行,要求Python版本3.5以上。 如果你的操作系统提供包管理器, 你应该用包管理器安装meson;如果没有包管理器,你应该在[Python主页]下载合适的Python3。相关请参阅[特殊平台的安装特例](#特殊平台的安装特例).
+Meson基于Python3运行,要求Python版本3.7以上。 如果你的操作系统提供包管理器, 你应该用包管理器安装python;如果没有包管理器,你应该在[Python主页]下载合适的Python3。相关请参阅[特殊平台的安装特例](#特殊平台的安装特例).
## 下载Meson
diff --git a/docs/markdown/Gnome-module.md b/docs/markdown/Gnome-module.md
index e8953ef..84bcc61 100644
--- a/docs/markdown/Gnome-module.md
+++ b/docs/markdown/Gnome-module.md
@@ -280,6 +280,8 @@ one XML file.
* `object_manager`: *(Added 0.40.0)* if true generates object manager code
* `annotations`: *(Added 0.43.0)* list of lists of 3 strings for the annotation for `'ELEMENT', 'KEY', 'VALUE'`
* `docbook`: *(Added 0.43.0)* prefix to generate `'PREFIX'-NAME.xml` docbooks
+* `rst`: *(Added 1.9.0)* prefix to generate `'PREFIX'-NAME.rst` reStructuredTexts
+* `markdown`: *(Added 1.9.0)* prefix to generate `'PREFIX'-NAME.md` markdowns
* `build_by_default`: causes, when set to true, to have this target be
built by default, that is, when invoking plain `meson compile`, the default
value is true for all built target types
@@ -289,8 +291,9 @@ one XML file.
Starting *0.46.0*, this function returns a list of at least two custom
targets (in order): one for the source code and one for the header.
-The list will contain a third custom target for the generated docbook
-files if that keyword argument is passed.
+The list can then contain other custom targets for the generated documentation
+files depending if the keyword argument is passed (in order): the docbook
+target, the reStructuredText target and the markdown target.
Earlier versions return a single custom target representing all the
outputs. Generally, you should just add this list of targets to a top
diff --git a/docs/markdown/Overview.md b/docs/markdown/Overview.md
index 7bee937..f41a3b7 100644
--- a/docs/markdown/Overview.md
+++ b/docs/markdown/Overview.md
@@ -6,11 +6,11 @@ short-description: Overview of the Meson build system
Meson is a build system that is designed to be as user-friendly as
possible without sacrificing performance. The main tool for this is a
-custom language that the user uses to describe the structure of his
-build. The main design goals of this language has been simplicity,
-clarity and conciseness. Much inspiration was drawn from the Python
-programming language, which is considered very readable, even to
-people who have not programmed in Python before.
+custom language used to describe the structure of the build. The main
+design goals of this language has been simplicity, clarity and
+conciseness. Much inspiration was drawn from the Python programming
+language, which is considered very readable, even to people who have
+not programmed in Python before.
Another main idea has been to provide first class support for modern
programming tools and best practices. These include features as varied
diff --git a/docs/markdown/Pkgconfig-module.md b/docs/markdown/Pkgconfig-module.md
index 80882cb..7ddd310 100644
--- a/docs/markdown/Pkgconfig-module.md
+++ b/docs/markdown/Pkgconfig-module.md
@@ -47,6 +47,7 @@ keyword arguments.
`pkgconfig.generate()` was used on to put in the `Requires` field
- `requires_private` the same as `requires` but for the `Requires.private` field
- `url` a string with a url for the library
+- `license` (*Since 1.9.0*) a string with a SPDX license to add to the generated file.
- `variables` a list of strings with custom variables to add to the
generated file. The strings must be in the form `name=value` and may
reference other pkgconfig variables,
@@ -90,6 +91,9 @@ application. That will cause pkg-config to prefer those
builddir. This is an experimental feature provided on a best-effort
basis, it might not work in all use-cases.
+*Since 1.9.0* you can specify a license identifier. To use the current project
+licence, simply use `license: meson.project_license()` as argument to `generate()`.
+
### Implicit dependencies
The exact rules followed to find dependencies that are implicitly
diff --git a/docs/markdown/Reference-tables.md b/docs/markdown/Reference-tables.md
index a5d2785..981bd18 100644
--- a/docs/markdown/Reference-tables.md
+++ b/docs/markdown/Reference-tables.md
@@ -58,6 +58,7 @@ These are return values of the `get_linker_id` method in a compiler object.
| Value | Linker family |
| ----- | --------------- |
| ld.bfd | The GNU linker |
+| ld.eld | Qualcomm's embedded linker |
| ld.gold | The GNU gold linker |
| ld.lld | The LLVM linker, with the GNU interface |
| ld.mold | The fast MOLD linker |
diff --git a/docs/markdown/Release-notes-for-0.38.0.md b/docs/markdown/Release-notes-for-0.38.0.md
index 5aaca0a..7be99ab 100644
--- a/docs/markdown/Release-notes-for-0.38.0.md
+++ b/docs/markdown/Release-notes-for-0.38.0.md
@@ -106,7 +106,7 @@ the check is now ~40% faster.
## Array indexing now supports fallback values
The second argument to the array
-[[list.get]] function is now returned
+[[array.get]] function is now returned
if the specified index could not be found
```meson
diff --git a/docs/markdown/Rust.md b/docs/markdown/Rust.md
index 08580cd..452dad6 100644
--- a/docs/markdown/Rust.md
+++ b/docs/markdown/Rust.md
@@ -27,14 +27,20 @@ feature is stabilized.
## Mixing Rust and non-Rust sources
-Meson currently does not support creating a single target with Rust and non Rust
-sources mixed together, therefore one must compile multiple libraries and link
-them.
+*(Since 1.9.0)* Rust supports mixed targets, but only supports using
+`rustc` as the linker for such targets. If you need to use a non-Rust
+linker, or support Meson < 1.9.0, see below.
+
+Until Meson 1.9.0, Meson did not support creating a single target with
+Rust and non Rust sources mixed together. One had to compile a separate
+Rust `static_library` or `shared_library`, and link it into the C build
+target (e.g., a library or an executable).
```meson
rust_lib = static_library(
'rust_lib',
sources : 'lib.rs',
+ rust_abi: 'c',
...
)
@@ -44,7 +50,6 @@ c_lib = static_library(
link_with : rust_lib,
)
```
-This is an implementation detail of Meson, and is subject to change in the future.
## Mixing Generated and Static sources
diff --git a/docs/markdown/Syntax.md b/docs/markdown/Syntax.md
index 05f5038..f4a2e17 100644
--- a/docs/markdown/Syntax.md
+++ b/docs/markdown/Syntax.md
@@ -566,7 +566,7 @@ executable('exe1', 'foo.c', 'bar.c', 'foobar.c')
Because of an internal implementation detail, the following syntax
is currently also supported, even though the first argument of
-[[executable]] is a single [[@str]] and not a [[@list]]:
+[[executable]] is a single [[@str]] and not a [[@array]]:
```meson
# WARNING: This example is only valid because of an internal
diff --git a/docs/markdown/Users.md b/docs/markdown/Users.md
index a515b24..5b9821b 100644
--- a/docs/markdown/Users.md
+++ b/docs/markdown/Users.md
@@ -2,7 +2,7 @@
title: Users
...
-# Notable projects using Meson
+# Notable projects and organizations using Meson
If you're aware of a notable project that uses Meson, please
[file a pull-request](https://github.com/mesonbuild/meson/edit/master/docs/markdown/Users.md)
@@ -11,181 +11,47 @@ for it. For other projects using Meson, you may be interested in this
Some additional projects are listed in the [`meson` GitHub
topic](https://github.com/topics/meson).
- - [2048.cpp](https://github.com/plibither8/2048.cpp), a fully featured terminal version of the game "2048" written in C++
- - [aawordsearch](https://github.com/theimpossibleastronaut/aawordsearch), generate wordsearch puzzles using random words in different languages
- - [Adwaita Manager](https://github.com/AdwCustomizerTeam/AdwCustomizer), change the look of Adwaita, with ease
- - [Aravis](https://github.com/AravisProject/aravis), a glib/gobject based library for video acquisition using Genicam cameras
- - [Akira](https://github.com/akiraux/Akira), a native Linux app for UI and UX design built in Vala and Gtk
- - [AQEMU](https://github.com/tobimensch/aqemu), a Qt GUI for QEMU virtual machines, since version 0.9.3
- - [Arduino sample project](https://github.com/jpakkane/mesonarduino)
- - [Asteria](https://github.com/lhmouse/asteria), another scripting language
- - [Audacious](https://github.com/audacious-media-player), a lightweight and versatile audio player
- - [bolt](https://gitlab.freedesktop.org/bolt/bolt), userspace daemon to enable security levels for Thunderbolt™ 3 on Linux
- - [bsdutils](https://github.com/dcantrell/bsdutils), alternative to GNU coreutils using software from FreeBSD
- - [Bubblewrap](https://github.com/containers/bubblewrap), unprivileged sandboxing tool
- - [Budgie Desktop](https://github.com/budgie-desktop/budgie-desktop), a desktop environment built on GNOME technologies
- - [Bzip2](https://gitlab.com/federicomenaquintero/bzip2), the bzip2 compressor/decompressor
- - [Cage](https://github.com/Hjdskes/cage), a Wayland kiosk
- - [canfigger](https://github.com/andy5995/canfigger), simple configuration file parser library
- - [casync](https://github.com/systemd/casync), Content-Addressable Data Synchronization Tool
- - [cglm](https://github.com/recp/cglm), a highly optimized graphics math library for C
- - [cinnamon-desktop](https://github.com/linuxmint/cinnamon-desktop), the cinnamon desktop library
- - [Cozy](https://github.com/geigi/cozy), a modern audio book player for Linux and macOS using GTK+ 3
- - [Criterion](https://github.com/Snaipe/Criterion), extensible cross-platform C and C++ unit testing framework
- - [dav1d](https://code.videolan.org/videolan/dav1d), an AV1 decoder
- - [dbus-broker](https://github.com/bus1/dbus-broker), Linux D-Bus Message Broker
- - [DOSBox Staging](https://github.com/dosbox-staging/dosbox-staging), DOS/x86 emulator
- - [DPDK](http://dpdk.org/browse/dpdk), Data Plane Development Kit, a set of libraries and drivers for fast packet processing
- - [DXVK](https://github.com/doitsujin/dxvk), a Vulkan-based Direct3D 11 implementation for Linux using Wine
+## [Xorg](https://www.x.org)
+
+ - [Xserver](https://gitlab.freedesktop.org/xorg/xserver), the X.org display server
+
+## [Gnome](https://www.gnome.org)
+
+ - [GTK](https://gitlab.gnome.org/GNOME/gtk), the multi-platform toolkit used by GNOME
+ - [GLib](https://gitlab.gnome.org/GNOME/glib), cross-platform C library used by GTK+ and GStreamer
+
+## [Enlightenment](https://www.enlightenment.org/)
+
- [EFL](https://www.enlightenment.org/about-efl), multiplatform set of libraries, used by the Enlightenment windows manager and other projects
- - [Enlightenment](https://www.enlightenment.org/), windows manager, compositor and minimal desktop for Linux
- - [elementary OS](https://github.com/elementary/), Linux desktop oriented distribution
- - [Emeus](https://github.com/ebassi/emeus), constraint based layout manager for GTK+
- - [Entangle](https://entangle-photo.org/), tethered camera control and capture desktop application
- - [ESP8266 Arduino sample project](https://github.com/trilader/arduino-esp8266-meson), sample project for using the ESP8266 Arduino port with Meson
- - [FeedReader](https://github.com/jangernert/FeedReader), a modern desktop application designed to complement existing web-based RSS accounts
- - [Flecs](https://github.com/SanderMertens/flecs), a Fast and Lightweight ECS (Entity Component System) C library
- - [Foliate](https://github.com/johnfactotum/foliate), a simple and modern GTK eBook reader, built with GJS and Epub.js
- - [Fractal](https://wiki.gnome.org/Apps/Fractal/), a Matrix messaging client for GNOME
- - [Frida](https://github.com/frida/frida-core), a dynamic binary instrumentation toolkit
- - [fwupd](https://github.com/hughsie/fwupd), a simple daemon to allow session software to update firmware
- - [GameMode](https://github.com/FeralInteractive/gamemode), a daemon/lib combo for Linux that allows games to request a set of optimisations be temporarily applied to the host OS
- - [Geary](https://wiki.gnome.org/Apps/Geary), an email application built around conversations, for the GNOME 3 desktop
+
+## [Elementary OS](https://github.com/elementary/)
+
+## [cinnamon-desktop](https://github.com/linuxmint/cinnamon-desktop)
+
+ - [Nemo](https://github.com/linuxmint/nemo), the file manager for the Cinnamon desktop environment
+
+## [Budgie Desktop](https://github.com/budgie-desktop/budgie-desktop)
+
+## Other Notable projects
+
+ - [FreeType](https://freetype.org/), widely used open source font rendering engine
- [GIMP](https://gitlab.gnome.org/GNOME/gimp), an image manipulation program (master branch)
- - [Git](https://git-scm.com/), ["the information manager from hell"](https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290)
- - [GLib](https://gitlab.gnome.org/GNOME/glib), cross-platform C library used by GTK+ and GStreamer
- - [Glorytun](https://github.com/angt/glorytun), a multipath UDP tunnel
- - [GNOME Boxes](https://gitlab.gnome.org/GNOME/gnome-boxes), a GNOME hypervisor
- - [GNOME Builder](https://gitlab.gnome.org/GNOME/gnome-builder), an IDE for the GNOME platform
- - [GNOME MPV](https://github.com/gnome-mpv/gnome-mpv), GNOME frontend to the mpv video player
- - [GNOME Recipes](https://gitlab.gnome.org/GNOME/recipes), application for cooking recipes
- - [GNOME Software](https://gitlab.gnome.org/GNOME/gnome-software), an app store for GNOME
- - [GNOME Twitch](https://github.com/vinszent/gnome-twitch), an app for viewing Twitch streams on GNOME desktop
- - [GNOME Usage](https://gitlab.gnome.org/GNOME/gnome-usage), a GNOME application for visualizing system resources
- - [GNOME Web](https://gitlab.gnome.org/GNOME/epiphany), a browser for a simple, clean, beautiful view of the web
- - [GNU FriBidi](https://github.com/fribidi/fribidi), the open source implementation of the Unicode Bidirectional Algorithm
- - [Graphene](https://ebassi.github.io/graphene/), a thin type library for graphics
- - [Grilo](https://git.gnome.org/browse/grilo) and [Grilo plugins](https://git.gnome.org/browse/grilo-plugins), the Grilo multimedia framework
- [GStreamer](https://gitlab.freedesktop.org/gstreamer/gstreamer), multimedia framework
- - [GTK+](https://gitlab.gnome.org/GNOME/gtk), the multi-platform toolkit used by GNOME
- - [GtkDApp](https://gitlab.com/csoriano/GtkDApp), an application template for developing Flatpak apps with Gtk+ and D
- - [GVfs](https://git.gnome.org/browse/gvfs/), a userspace virtual filesystem designed to work with the I/O abstraction of GIO
- - [Hardcode-Tray](https://github.com/bil-elmoussaoui/Hardcode-Tray), fixes hardcoded tray icons in Linux
+ - [Git](https://git-scm.com/), ["the information manager from hell"](https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290)
- [HarfBuzz](https://github.com/harfbuzz/harfbuzz), a text shaping engine
- - [HelenOS](http://helenos.org), a portable microkernel-based multiserver operating system
- [HexChat](https://github.com/hexchat/hexchat), a cross-platform IRC client in C
- - [IGT](https://gitlab.freedesktop.org/drm/igt-gpu-tools), Linux kernel graphics driver test suite
- - [i3](https://i3wm.org), improved tiling window manager
- - [inih](https://github.com/benhoyt/inih) (INI Not Invented Here), a small and simple .INI file parser written in C
- - [Irssi](https://github.com/irssi/irssi), a terminal chat client in C
- - [iSH](https://github.com/tbodt/ish), Linux shell for iOS
- - [Janet](https://github.com/janet-lang/janet), a functional and imperative programming language and bytecode interpreter
- - [json](https://github.com/nlohmann/json), JSON for Modern C++
- - [JsonCpp](https://github.com/open-source-parsers/jsoncpp), a C++ library for interacting with JSON
- - [Json-glib](https://gitlab.gnome.org/GNOME/json-glib), GLib-based JSON manipulation library
- - [Kiwix libraries](https://github.com/kiwix/kiwix-lib)
- - [Knot Resolver](https://gitlab.labs.nic.cz/knot/knot-resolver), Full caching DNS resolver implementation
- - [Ksh](https://github.com/att/ast), a Korn Shell
- - [Lc0](https://github.com/LeelaChessZero/lc0), LeelaChessZero is a UCI-compliant chess engine designed to play chess via neural network
- - [Le](https://github.com/kirushyk/le), machine learning framework
- - [libcamera](https://git.linuxtv.org/libcamera.git/), a library to handle complex cameras on Linux, ChromeOS and Android
- - [Libdrm](https://gitlab.freedesktop.org/mesa/drm), a library for abstracting DRM kernel interfaces
- - [libdwarf](https://www.prevanders.net/dwarf.html), a multiplatform DWARF parser library
- - [libeconf](https://github.com/openSUSE/libeconf), Enhanced config file parsing library, which merges config files placed in several locations into one
- - [Libepoxy](https://github.com/anholt/libepoxy/), a library for handling OpenGL function pointer management
- - [libfuse](https://github.com/libfuse/libfuse), the reference implementation of the Linux FUSE (Filesystem in Userspace) interface
- - [Libgit2-glib](https://git.gnome.org/browse/libgit2-glib), a GLib wrapper for libgit2
- - [libglvnd](https://gitlab.freedesktop.org/glvnd/libglvnd), Vendor neutral OpenGL dispatch library for Unix-like OSes
- - [Libhttpseverywhere](https://git.gnome.org/browse/libhttpseverywhere), a library to enable httpseverywhere on any desktop app
- - [libmodulemd](https://github.com/fedora-modularity/libmodulemd), a GObject Introspected library for managing [Fedora Project](https://getfedora.org/) module metadata
- - [Libosmscout](https://github.com/Framstag/libosmscout), a C++ library for offline map rendering, routing and location
-lookup based on OpenStreetMap data
- - [libratbag](https://github.com/libratbag/libratbag), provides a DBus daemon to configure input devices, mainly gaming mice
- - [libspng](https://github.com/randy408/libspng), a C library for reading and writing Portable Network Graphics (PNG)
-format files
- - [libSRTP](https://github.com/cisco/libsrtp) (from Cisco Systems), a library for SRTP (Secure Realtime Transport Protocol)
- - [libui](https://github.com/andlabs/libui), a simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports
- - [Libva](https://github.com/intel/libva), an implementation for the VA (VIdeo Acceleration) API
- - [libvips](https://github.com/libvips/libvips), a fast image processing library with low memory needs
- - [Libvirt](https://libvirt.org), a toolkit to manage virtualization platforms
- - [Libzim](https://github.com/openzim/libzim), the reference implementation for the ZIM file format
- - [Linux PAM](https://github.com/linux-pam/linux-pam), The Pluggable Authentication Modules project for Linux
- [LXC](https://github.com/lxc/lxc), Linux container runtime
- - [Marker](https://github.com/fabiocolacio/Marker), a GTK-3 markdown editor
- - [mcfgthread](https://github.com/lhmouse/mcfgthread), cornerstone library for C++11 threading on mingw-w64
+ - [Linux PAM](https://github.com/linux-pam/linux-pam), The Pluggable Authentication Modules project for Linux
- [Mesa](https://mesa3d.org/), an open source graphics driver project
- - [Miniz](https://github.com/richgel999/miniz), a zlib replacement library
- - [MiracleCast](https://github.com/albfan/miraclecast), connect external monitors to your system via WiFi-Display specification aka Miracast
- [mpv](https://github.com/mpv-player/mpv), a free, open source, and cross-platform media player
- - [mrsh](https://github.com/emersion/mrsh), a minimal POSIX shell
- - [Nautilus](https://gitlab.gnome.org/GNOME/nautilus), the GNOME file manager
- - [Nemo](https://github.com/linuxmint/nemo), the file manager for the Cinnamon desktop environment
- - [netatalk](https://netatalk.io/), a free and open source AFP file server for Mac and Apple II
- - [NetPanzer](https://github.com/netpanzer/netpanzer), a 2D online multiplayer tactical warfare game designed for fast action combat
- [NumPy](https://numpy.org/), a Python package for scientific computing
- - [nvme-cli](https://github.com/linux-nvme/nvme-cli), NVMe management command line interface
- - [oomd](https://github.com/facebookincubator/oomd), a userspace Out-Of-Memory (OOM) killer for Linux systems
- [OpenH264](https://github.com/cisco/openh264), open source H.264 codec
- - [OpenHMD](https://github.com/OpenHMD/OpenHMD), a free and open source API and drivers for immersive technology, such as head mounted displays with built in head tracking
- [OpenRC](https://github.com/OpenRC/openrc), an init system for Unix-like operating systems
- - [OpenTitan](https://github.com/lowRISC/opentitan), an open source silicon Root of Trust (RoT) project
- - [Orc](https://gitlab.freedesktop.org/gstreamer/orc), the Optimized Inner Loop Runtime Compiler
- - [OTS](https://github.com/khaledhosny/ots), the OpenType Sanitizer, parses and serializes OpenType files (OTF, TTF) and WOFF and WOFF2 font files, validating and sanitizing them as it goes. Used by Chromium and Firefox
- - [Outlier](https://github.com/kerolasa/outlier), a small Hello World style Meson example project
- - [p11-kit](https://github.com/p11-glue/p11-kit), PKCS#11 module aggregator
- [Pacman](https://gitlab.archlinux.org/pacman/pacman.git), a package manager for Arch Linux
- - [Pango](https://git.gnome.org/browse/pango/), an Internationalized text layout and rendering library
- - [Parzip](https://github.com/jpakkane/parzip), a multithreaded reimplementation of Zip
- - [Peek](https://github.com/phw/peek), simple animated GIF screen recorder with an easy to use interface
- [PicoLibc](https://github.com/keith-packard/picolibc), a standard C library for small embedded systems with limited RAM
- [PipeWire](https://github.com/PipeWire/pipewire), a framework for video and audio for containerized applications
- - [Pistache](https://github.com/pistacheio/pistache), a high performance REST toolkit written in C++
- - [Pithos](https://github.com/pithos/pithos), a Pandora Radio client
- - [Pitivi](https://github.com/pitivi/pitivi/), a nonlinear video editor
- - [Planner](https://github.com/alainm23/planner), task manager with Todoist support designed for GNU/Linux
- - [Playerctl](https://github.com/acrisci/playerctl), mpris command-line controller and library for spotify, vlc, audacious, bmp, cmus, and others
- - [Polari](https://gitlab.gnome.org/GNOME/polari), an IRC client
- [PostgreSQL](https://www.postgresql.org/), an advanced open source relational database
- - [qboot](https://github.com/bonzini/qboot), a minimal x86 firmware for booting Linux kernels
- [QEMU](https://qemu.org), a processor emulator and virtualizer
- - [radare2](https://github.com/radare/radare2), unix-like reverse engineering framework and commandline tools (not the default)
- - [refivar](https://github.com/nvinson/refivar), A reimplementation of efivar in Rust
- - [Rizin](https://rizin.re), Free and Open Source Reverse Engineering Framework
- - [rmw](https://theimpossibleastronaut.com/rmw-website/), safe-remove utility for the command line
- - [RxDock](https://gitlab.com/rxdock/rxdock), a protein-ligand docking software designed for high throughput virtual screening (fork of rDock)
- [SciPy](https://scipy.org/), an open-source software for mathematics, science, and engineering
- - [scrcpy](https://github.com/Genymobile/scrcpy), a cross platform application that provides display and control of Android devices connected on USB or over TCP/IP
- - [Sequeler](https://github.com/Alecaddd/sequeler), a friendly SQL client for Linux, built with Vala and Gtk
- - [Siril](https://gitlab.com/free-astro/siril), an image processing software for amateur astronomy
- - [slapt-get](https://github.com/jaos/slapt-get), an APT like system for Slackware package management
- - [Spot](https://github.com/xou816/spot), Rust based Spotify client for the GNOME desktop
- - [SSHFS](https://github.com/libfuse/sshfs), allows you to mount a remote filesystem using SFTP
- - [sway](https://github.com/swaywm/sway), i3-compatible Wayland compositor
- - [Sysprof](https://git.gnome.org/browse/sysprof), a profiling tool
- [systemd](https://github.com/systemd/systemd), the init system
- - [szl](https://github.com/dimkr/szl), a lightweight, embeddable scripting language
- - [Taisei Project](https://taisei-project.org/), an open-source Touhou Project clone and fangame
- - [Terminology](https://github.com/billiob/terminology), a terminal emulator based on the Enlightenment Foundation Libraries
- - [ThorVG](https://www.thorvg.org/), vector-based scenes and animations library
- - [Tilix](https://github.com/gnunn1/tilix), a tiling terminal emulator for Linux using GTK+ 3
- - [Tizonia](https://github.com/tizonia/tizonia-openmax-il), a command-line cloud music player for Linux with support for Spotify, Google Play Music, YouTube, SoundCloud, TuneIn, Plex servers and Chromecast devices
- - [Fossil Logic](https://github.com/fossillogic), Fossil Logic is a cutting-edge software development company specializing in C/C++, Python, programming, Android development using Kotlin, and SQL solutions
- - [UFJF-MLTK](https://github.com/mateus558/UFJF-Machine-Learning-Toolkit), A C++ cross-platform framework for machine learning algorithms development and testing
- - [Vala Language Server](https://github.com/benwaffle/vala-language-server), code intelligence engine for the Vala and Genie programming languages
- - [Valum](https://github.com/valum-framework/valum), a micro web framework written in Vala
- - [Venom](https://github.com/naxuroqa/Venom), a modern Tox client for the GNU/Linux desktop
- - [vkQuake](https://github.com/Novum/vkQuake), a port of id Software's Quake using Vulkan instead of OpenGL for rendering
- - [VMAF](https://github.com/Netflix/vmaf) (by Netflix), a perceptual video quality assessment based on multi-method fusion
- - [Wayland](https://gitlab.freedesktop.org/wayland/wayland) and [Weston](https://gitlab.freedesktop.org/wayland/weston), a next generation display server
- - [wlroots](https://gitlab.freedesktop.org/wlroots/wlroots), a modular Wayland compositor library
- - [xi-gtk](https://github.com/eyelash/xi-gtk), a GTK+ front-end for the Xi editor
- - [Xorg](https://gitlab.freedesktop.org/xorg/xserver), the X.org display server (not the default yet)
- - [X Test Suite](https://gitlab.freedesktop.org/xorg/test/xts), The X.org test suite
- - [zathura](https://github.com/pwmt/zathura), a highly customizable and functional document viewer based on the
-girara user interface library and several document libraries
- - [Zrythm](https://git.sr.ht/~alextee/zrythm), a cross-platform digital audio workstation written in C using GTK4
- - [ZStandard](https://github.com/facebook/zstd/commit/4dca56ed832c6a88108a2484a8f8ff63d8d76d91), a compression algorithm developed at Facebook (not used by default)
-
-Note that a more up-to-date list of GNOME projects that use Meson can
-be found
-[here](https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting).
+ - [Wayland](https://gitlab.freedesktop.org/wayland/wayland), common display protocol
diff --git a/docs/markdown/Wrap-dependency-system-manual.md b/docs/markdown/Wrap-dependency-system-manual.md
index 73358e7..302546e 100644
--- a/docs/markdown/Wrap-dependency-system-manual.md
+++ b/docs/markdown/Wrap-dependency-system-manual.md
@@ -322,8 +322,8 @@ foo-bar-1.0 = foo_bar_dep
**Note**: This is experimental and has no backwards or forwards compatibility guarantees.
See [Meson's rules on mixing build systems](Mixing-build-systems.md).
-Cargo subprojects automatically override the `<package_name>-<version>-rs` dependency
-name:
+Cargo subprojects automatically call `override_dependency` with the name
+`<package_name>-<version>-<suffix>`, where every part is defeined as follows:
- `package_name` is defined in `[package] name = ...` section of the `Cargo.toml`.
- `version` is the API version deduced from `[package] version = ...` as follow:
* `x.y.z` -> 'x'
@@ -331,9 +331,10 @@ name:
* `0.0.x` -> '0'
It allows to make different dependencies for incompatible versions of the same
crate.
-- `-rs` suffix is added to distinguish from regular system dependencies, for
- example `gstreamer-1.0` is a system pkg-config dependency and `gstreamer-0.22-rs`
- is a Cargo dependency.
+- the suffix is `-rs` for `rlib` and `dylib` crate types, otherwise it is the
+ crate type (e.g. `staticlib` or `cdylib`). The suffix is added to distinguish
+ Rust crates from regular system dependencies; for example `gstreamer-1.0` is a
+ system pkg-config dependency and `gstreamer-0.22-rs` is a Cargo dependency.
That means the `.wrap` file should have `dependency_names = foo-1-rs` in their
`[provide]` section when `Cargo.toml` has package name `foo` and version `1.2`.
diff --git a/docs/markdown/Yaml-RefMan.md b/docs/markdown/Yaml-RefMan.md
index 2872791..cce844b 100644
--- a/docs/markdown/Yaml-RefMan.md
+++ b/docs/markdown/Yaml-RefMan.md
@@ -150,9 +150,9 @@ optargs:
...
varargs:
- name: Some name # [required]
- type: str | list[str | int] # [required]
- description: Some helpful text # [required]
+ name: Some name # [required]
+ type: str | array[str | int] # [required]
+ description: Some helpful text # [required]
since: 0.42.0
deprecated: 100.99.0
min_varargs: 1
diff --git a/docs/markdown/i18n-module.md b/docs/markdown/i18n-module.md
index da6fce7..ac6146d 100644
--- a/docs/markdown/i18n-module.md
+++ b/docs/markdown/i18n-module.md
@@ -90,7 +90,7 @@ for each executable.
Positional arguments are the following:
* name `str`: the name of the resulting pot file.
-* sources `list[str|File|build_tgt|custom_tgt]`:
+* sources `array[str|File|build_tgt|custom_tgt]`:
source files or targets. May be a list of `string`, `File`, [[@build_tgt]],
or [[@custom_tgt]] returned from other calls to this function.
diff --git a/docs/markdown/snippets/array-flatten.md b/docs/markdown/snippets/array-flatten.md
new file mode 100644
index 0000000..eaab19c
--- /dev/null
+++ b/docs/markdown/snippets/array-flatten.md
@@ -0,0 +1,5 @@
+## 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.
diff --git a/docs/markdown/snippets/clang-tidy-improvement.md b/docs/markdown/snippets/clang-tidy-improvement.md
new file mode 100644
index 0000000..f79463e
--- /dev/null
+++ b/docs/markdown/snippets/clang-tidy-improvement.md
@@ -0,0 +1,5 @@
+## `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.
diff --git a/docs/markdown/snippets/eld-support.md b/docs/markdown/snippets/eld-support.md
new file mode 100644
index 0000000..cc854fa
--- /dev/null
+++ b/docs/markdown/snippets/eld-support.md
@@ -0,0 +1,6 @@
+## 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.
diff --git a/docs/markdown/snippets/fs_suffix.md b/docs/markdown/snippets/fs_suffix.md
new file mode 100644
index 0000000..7059008
--- /dev/null
+++ b/docs/markdown/snippets/fs_suffix.md
@@ -0,0 +1,4 @@
+## Added suffix function to the FS module
+
+The basename and stem were already available. For completeness, expose also the
+suffix.
diff --git a/docs/markdown/snippets/gnome-rsp-files-support.md b/docs/markdown/snippets/gnome-rsp-files-support.md
new file mode 100644
index 0000000..29c9082
--- /dev/null
+++ b/docs/markdown/snippets/gnome-rsp-files-support.md
@@ -0,0 +1,8 @@
+## 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).
diff --git a/docs/markdown/snippets/meson-format-stdin-editorconfig.md b/docs/markdown/snippets/meson-format-stdin-editorconfig.md
new file mode 100644
index 0000000..4a848b7
--- /dev/null
+++ b/docs/markdown/snippets/meson-format-stdin-editorconfig.md
@@ -0,0 +1,5 @@
+## meson format now has a --source-file-path argument when reading from stdin
+
+This argument is mandatory to mix stdin reading with the use of editor config.
+It allows to know where to look for the .editorconfig, and to use the right
+section of .editorconfig based on the parsed file name.
diff --git a/docs/markdown/snippets/pkgconfig-gen-license.md b/docs/markdown/snippets/pkgconfig-gen-license.md
new file mode 100644
index 0000000..c2e6818
--- /dev/null
+++ b/docs/markdown/snippets/pkgconfig-gen-license.md
@@ -0,0 +1,3 @@
+## Added license keyword to pkgconfig.generate
+
+When specified, it will add a `License:` attribute to the generated .pc file.
diff --git a/docs/markdown/snippets/rust-dynamic-std.md b/docs/markdown/snippets/rust-dynamic-std.md
new file mode 100644
index 0000000..ac4e8a7
--- /dev/null
+++ b/docs/markdown/snippets/rust-dynamic-std.md
@@ -0,0 +1,7 @@
+## 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.
diff --git a/docs/markdown/snippets/rust-mixed.md b/docs/markdown/snippets/rust-mixed.md
new file mode 100644
index 0000000..d42ab90
--- /dev/null
+++ b/docs/markdown/snippets/rust-mixed.md
@@ -0,0 +1,5 @@
+## Rust and non-Rust sources in the same target
+
+Meson now supports creating a single target with Rust and non Rust
+sources mixed together. In this case, if specified, `link_language`
+must be set to `rust`.
diff --git a/docs/markdown/snippets/swift-module-name.md b/docs/markdown/snippets/swift-module-name.md
new file mode 100644
index 0000000..689dd84
--- /dev/null
+++ b/docs/markdown/snippets/swift-module-name.md
@@ -0,0 +1,9 @@
+## Explicitly setting Swift module name is now supported
+
+It is now possible to set the Swift module name for a target via the
+*swift_module_name* target kwarg, overriding the default inferred from the
+target name.
+
+```meson
+lib = library('foo', 'foo.swift', swift_module_name: 'Foo')
+```
diff --git a/docs/markdown/snippets/swift-parse-as-library.md b/docs/markdown/snippets/swift-parse-as-library.md
new file mode 100644
index 0000000..5208899
--- /dev/null
+++ b/docs/markdown/snippets/swift-parse-as-library.md
@@ -0,0 +1,8 @@
+## 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.
diff --git a/docs/markdown/snippets/swift-pass-c-compiler-options.md b/docs/markdown/snippets/swift-pass-c-compiler-options.md
new file mode 100644
index 0000000..90904b9
--- /dev/null
+++ b/docs/markdown/snippets/swift-pass-c-compiler-options.md
@@ -0,0 +1,9 @@
+## Swift compiler receives select C family compiler options
+
+Meson now passes select few C family (C/C++/Obj-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.
diff --git a/docs/markdown/snippets/swift_cxx_interoperability.md b/docs/markdown/snippets/swift_cxx_interoperability.md
new file mode 100644
index 0000000..9e324f9
--- /dev/null
+++ b/docs/markdown/snippets/swift_cxx_interoperability.md
@@ -0,0 +1,23 @@
+## Swift/C++ interoperability is now supported
+
+It is now possible to create Swift executables that can link to C++ or
+Objective-C++ libraries. To enable this feature, set the target kwarg
+_swift\_interoperability\_mode_ to 'cpp'.
+
+To import C++ code, specify a bridging header in the Swift target's
+sources, or use another way such as adding a directory containing a
+Clang module map to its include path.
+
+Note: Enabling C++ interoperability in a library target is a breaking
+change. Swift libraries that enable it need their consumers to enable
+it as well, as per [the Swift documentation][1].
+
+Swift 5.9 is required to use this feature. Xcode 15 is required if the
+Xcode backend is used.
+
+```meson
+lib = static_library('mylib', 'mylib.cpp')
+exe = executable('prog', 'main.swift', 'mylib.h', link_with: lib, swift_interoperability_mode: 'cpp')
+```
+
+[1]: https://www.swift.org/documentation/cxx-interop/project-build-setup/#vending-packages-that-enable-c-interoperability
diff --git a/docs/markdown/snippets/vs2010-masm-support.md b/docs/markdown/snippets/vs2010-masm-support.md
new file mode 100644
index 0000000..840cbf3
--- /dev/null
+++ b/docs/markdown/snippets/vs2010-masm-support.md
@@ -0,0 +1,8 @@
+## 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.
diff --git a/docs/markdown/snippets/wrapdbv1.md b/docs/markdown/snippets/wrapdbv1.md
new file mode 100644
index 0000000..4f0c847
--- /dev/null
+++ b/docs/markdown/snippets/wrapdbv1.md
@@ -0,0 +1,5 @@
+## 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.