aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/Release-notes-for-0.55.0.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/markdown/Release-notes-for-0.55.0.md')
-rw-r--r--docs/markdown/Release-notes-for-0.55.0.md203
1 files changed, 110 insertions, 93 deletions
diff --git a/docs/markdown/Release-notes-for-0.55.0.md b/docs/markdown/Release-notes-for-0.55.0.md
index c566560..3e4fcc9 100644
--- a/docs/markdown/Release-notes-for-0.55.0.md
+++ b/docs/markdown/Release-notes-for-0.55.0.md
@@ -8,14 +8,15 @@ short-description: Release notes for 0.55.0
## rpath removal now more careful
On Linux-like systems, meson adds rpath entries to allow running apps
-in the build tree, and then removes those build-time-only
-rpath entries when installing. Rpath entries may also come
-in via LDFLAGS and via .pc files. Meson used to remove those
-latter rpath entries by accident, but is now more careful.
+in the build tree, and then removes those build-time-only rpath
+entries when installing. Rpath entries may also come in via LDFLAGS
+and via .pc files. Meson used to remove those latter rpath entries by
+accident, but is now more careful.
## Added ability to specify targets in `meson compile`
-It's now possible to specify targets in `meson compile`, which will result in building only the requested targets.
+It's now possible to specify targets in `meson compile`, which will
+result in building only the requested targets.
Usage: `meson compile [TARGET [TARGET...]]`
`TARGET` has the following syntax: `[PATH/]NAME[:TYPE]`.
@@ -35,10 +36,10 @@ can be invoked with `meson compile foo:shared_library foo:static_library bar`.
## Test protocol for gtest
-Due to the popularity of Gtest (google test) among C and C++ developers meson
-now supports a special protocol for gtest. With this protocol meson injects
-arguments to gtests to output JUnit, reads that JUnit, and adds the output to
-the JUnit it generates.
+Due to the popularity of Gtest (google test) among C and C++
+developers meson now supports a special protocol for gtest. With this
+protocol meson injects arguments to gtests to output JUnit, reads that
+JUnit, and adds the output to the JUnit it generates.
## meson.add_*_script methods accept new types
@@ -56,8 +57,8 @@ meson.add_postconf_script(find_program('foo'), files('bar'))
```
The install script variant is also able to accept custom_targets,
-custom_target indexes, and build targets (executables, libraries), and can
-use built executables a the script to run
+custom_target indexes, and build targets (executables, libraries), and
+can use built executables a the script to run
```meson
installer = executable('installer', ...)
@@ -67,11 +68,11 @@ meson.add_install_script('foo.py', installer)
## Machine file constants
-Native and cross files now support string and list concatenation using the `+`
-operator, and joining paths using the `/` operator.
-Entries defined in the `[constants]` section can be used in any other section.
-An entry defined in any other section can be used only within that same section and only
-after it has been defined.
+Native and cross files now support string and list concatenation using
+the `+` operator, and joining paths using the `/` operator. Entries
+defined in the `[constants]` section can be used in any other section.
+An entry defined in any other section can be used only within that
+same section and only after it has been defined.
```ini
[constants]
@@ -88,26 +89,27 @@ c = toolchain + '/gcc'
## Configure CMake subprojects with meson.subproject_options
-Meson now supports passing configuration options to CMake and overriding
-certain build details extracted from the CMake subproject.
+Meson now supports passing configuration options to CMake and
+overriding certain build details extracted from the CMake subproject.
The new CMake configuration options object is very similar to the
-[configuration data object](Reference-manual.md#configuration-data-object) object
-returned by [`configuration_data`](Reference-manual.md#configuration_data). It
+[configuration data
+object](Reference-manual.md#configuration-data-object) object returned
+by [`configuration_data`](Reference-manual.md#configuration_data). It
is generated by the `subproject_options` function
-All configuration options have to be set *before* the subproject is configured
-and must be passed to the `subproject` method via the `options` key. Altering
-the configuration object won't have any effect on previous `cmake.subproject`
-calls.
+All configuration options have to be set *before* the subproject is
+configured and must be passed to the `subproject` method via the
+`options` key. Altering the configuration object won't have any effect
+on previous `cmake.subproject` calls.
-**Note:** The `cmake_options` kwarg for the `subproject` function is now
-deprecated since it is replaced by the new `options` system.
+**Note:** The `cmake_options` kwarg for the `subproject` function is
+now deprecated since it is replaced by the new `options` system.
## find_program: Fixes when the program has been overridden by executable
-When a program has been overridden by an executable, the returned object of
-find_program() had some issues:
+When a program has been overridden by an executable, the returned
+object of find_program() had some issues:
```meson
# In a subproject:
@@ -135,16 +137,16 @@ but only when needed to avoid command line length limits.
## `unstable-kconfig` module renamed to `unstable-keyval`
-The `unstable-kconfig` module is now renamed to `unstable-keyval`.
-We expect this module to become stable once it has some usage experience,
+The `unstable-kconfig` module is now renamed to `unstable-keyval`. We
+expect this module to become stable once it has some usage experience,
specifically in the next or the following release
## Fatal warnings in `gnome.generate_gir()`
-`gnome.generate_gir()` now has `fatal_warnings` keyword argument to abort when
-a warning is produced. This is useful for example in CI environment where it's
-important to catch potential issues.
+`gnome.generate_gir()` now has `fatal_warnings` keyword argument to
+abort when a warning is produced. This is useful for example in CI
+environment where it's important to catch potential issues.
## b_ndebug support for D language compilers
@@ -153,27 +155,29 @@ the compiler) when the b_ndebug flag is set.
## Meson test now produces JUnit xml from results
-Meson will now generate a JUnit compatible XML file from test results. it
-will be in the meson-logs directory and is called testlog.junit.xml.
+Meson will now generate a JUnit compatible XML file from test results.
+it will be in the meson-logs directory and is called
+testlog.junit.xml.
## Config tool based dependencies no longer search PATH for cross compiling
-Before 0.55.0 config tool based dependencies (llvm-config, cups-config, etc),
-would search system $PATH if they weren't defined in the cross file. This has
-been a source of bugs and has been deprecated. It is now removed, config tool
-binaries must be specified in the cross file now or the dependency will not
-be found.
+Before 0.55.0 config tool based dependencies (llvm-config,
+cups-config, etc), would search system $PATH if they weren't defined
+in the cross file. This has been a source of bugs and has been
+deprecated. It is now removed, config tool binaries must be specified
+in the cross file now or the dependency will not be found.
## Rename has_exe_wrapper -> can_run_host_binaries
-The old name was confusing as it didn't really match the behavior of the
-function. The old name remains as an alias (the behavior hasn't changed), but
-is now deprecated.
+The old name was confusing as it didn't really match the behavior of
+the function. The old name remains as an alias (the behavior hasn't
+changed), but is now deprecated.
## String concatenation in meson_options.txt
-It is now possible to use string concatenation (with the `+` opperator) in the
-meson_options.txt file. This allows splitting long option descriptions.
+It is now possible to use string concatenation (with the `+`
+opperator) in the meson_options.txt file. This allows splitting long
+option descriptions.
```meson
option(
@@ -187,53 +191,57 @@ option(
## Wrap fallback URL
-Wrap files can now define `source_fallback_url` and `patch_fallback_url` to be
-used in case the main server is temporaly down.
+Wrap files can now define `source_fallback_url` and
+`patch_fallback_url` to be used in case the main server is temporaly
+down.
## Clang coverage support
-llvm-cov is now used to generate coverage information when clang is used as
-the compiler.
+llvm-cov is now used to generate coverage information when clang is
+used as the compiler.
## Local wrap source and patch files
-It is now possible to use the `patch_filename` and `source_filename` value in a
-`.wrap` file without `*_url` to specify a local source / patch file. All local
-files must be located in the `subprojects/packagefiles` directory. The `*_hash`
-entries are optional with this setup.
+It is now possible to use the `patch_filename` and `source_filename`
+value in a `.wrap` file without `*_url` to specify a local source /
+patch file. All local files must be located in the
+`subprojects/packagefiles` directory. The `*_hash` entries are
+optional with this setup.
## Local wrap patch directory
-Wrap files can now specify `patch_directory` instead of `patch_filename` in the
-case overlay files are local. Every files in that directory, and subdirectories,
-will be copied to the subproject directory. This can be used for example to add
-`meson.build` files to a project not using Meson build system upstream.
-The patch directory must be placed in `subprojects/packagefiles` directory.
+Wrap files can now specify `patch_directory` instead of
+`patch_filename` in the case overlay files are local. Every files in
+that directory, and subdirectories, will be copied to the subproject
+directory. This can be used for example to add `meson.build` files to
+a project not using Meson build system upstream. The patch directory
+must be placed in `subprojects/packagefiles` directory.
## Patch on all wrap types
-`patch_*` keys are not limited to `wrap-file` any more, they can be specified for
-all wrap types.
+`patch_*` keys are not limited to `wrap-file` any more, they can be
+specified for all wrap types.
## link_language argument added to all targets
-Previously the `link_language` argument was only supposed to be allowed in
-executables, because the linker used needs to be the linker for the language
-that implements the main function. Unfortunately it didn't work in that case,
-and, even worse, if it had been implemented properly it would have worked for
-*all* targets. In 0.55.0 this restriction has been removed, and the bug fixed.
-It now is valid for `executable` and all derivative of `library`.
+Previously the `link_language` argument was only supposed to be
+allowed in executables, because the linker used needs to be the linker
+for the language that implements the main function. Unfortunately it
+didn't work in that case, and, even worse, if it had been implemented
+properly it would have worked for *all* targets. In 0.55.0 this
+restriction has been removed, and the bug fixed. It now is valid for
+`executable` and all derivative of `library`.
## meson dist --no-tests
-`meson dist` has a new option `--no-tests` to skip build and tests of generated
-packages. It can be used to not waste time for example when done in CI that
-already does its own testing.
+`meson dist` has a new option `--no-tests` to skip build and tests of
+generated packages. It can be used to not waste time for example when
+done in CI that already does its own testing.
## Force fallback for
-A newly-added `--force-fallback-for` command line option can now be used to
-force fallback for specific subprojects.
+A newly-added `--force-fallback-for` command line option can now be
+used to force fallback for specific subprojects.
Example:
@@ -243,32 +251,36 @@ meson builddir/ --force-fallback-for=foo,bar
## Implicit dependency fallback
-`dependency('foo')` now automatically fallback if the dependency is not found on
-the system but a subproject wrap file or directory exists with the same name.
+`dependency('foo')` now automatically fallback if the dependency is
+not found on the system but a subproject wrap file or directory exists
+with the same name.
-That means that simply adding `subprojects/foo.wrap` is enough to add fallback
-to any `dependency('foo')` call. It is however requires that the subproject call
-`meson.override_dependency('foo', foo_dep)` to specify which dependency object
-should be used for `foo`.
+That means that simply adding `subprojects/foo.wrap` is enough to add
+fallback to any `dependency('foo')` call. It is however requires that
+the subproject call `meson.override_dependency('foo', foo_dep)` to
+specify which dependency object should be used for `foo`.
## Wrap file `provide` section
-Wrap files can define the dependencies it provides in the `[provide]` section.
-When `foo.wrap` provides the dependency `foo-1.0` any call do `dependency('foo-1.0')`
-will automatically fallback to that subproject even if no `fallback` keyword
-argument is given. See [Wrap documentation](Wrap-dependency-system-manual.md#provide_section).
+Wrap files can define the dependencies it provides in the `[provide]`
+section. When `foo.wrap` provides the dependency `foo-1.0` any call do
+`dependency('foo-1.0')` will automatically fallback to that subproject
+even if no `fallback` keyword argument is given. See [Wrap
+documentation](Wrap-dependency-system-manual.md#provide_section).
## `find_program()` fallback
-When a program cannot be found on the system but a wrap file has its name in the
-`[provide]` section, that subproject will be used as fallback.
+When a program cannot be found on the system but a wrap file has its
+name in the `[provide]` section, that subproject will be used as
+fallback.
## Test scripts are given the exe wrapper if needed
-Meson will now set the `MESON_EXE_WRAPPER` as the properly wrapped and joined
-representation. For Unix-like OSes this means python's shelx.join, on Windows
-an implementation that attempts to properly quote windows argument is used.
-This allow wrapper scripts to run test binaries, instead of just skipping.
+Meson will now set the `MESON_EXE_WRAPPER` as the properly wrapped and
+joined representation. For Unix-like OSes this means python's
+shelx.join, on Windows an implementation that attempts to properly
+quote windows argument is used. This allow wrapper scripts to run test
+binaries, instead of just skipping.
for example, if the wrapper is `['emulator', '--script']`, it will be passed
as `MESON_EXE_WRAPPER="emulator --script"`.
@@ -286,7 +298,8 @@ Usage: `meson compile [--vs-args=args] [--ninja-args=args]`
These arguments use the following syntax:
-If you only pass a single string, then it is considered to have all values separated by commas. Thus invoking the following command:
+If you only pass a single string, then it is considered to have all
+values separated by commas. Thus invoking the following command:
```
$ meson compile --ninja-args=-n,-d,explain
@@ -294,7 +307,8 @@ $ meson compile --ninja-args=-n,-d,explain
would add `-n`, `-d` and `explain` arguments to ninja invocation.
-If you need to have commas or spaces in your string values, then you need to pass the value with proper shell quoting like this:
+If you need to have commas or spaces in your string values, then you
+need to pass the value with proper shell quoting like this:
```
$ meson compile "--ninja-args=['a,b', 'c d']"
@@ -307,9 +321,12 @@ dumping the AST (--ast): **new in 0.55.0**
## `--backend=vs` now matches `-Db_vscrt=from_buildtype` behaviour in the Ninja backend
-When `--buildtype=debugoptimized` is used with the Ninja backend, the VS CRT
-option used is `/MD`, which is the [behaviour documented for all
+When `--buildtype=debugoptimized` is used with the Ninja backend, the
+VS CRT option used is `/MD`, which is the [behaviour documented for
+all
backends](https://mesonbuild.com/Builtin-options.html#b_vscrt-from_buildtype).
-However, the Visual Studio backend was pass `/MT` in that case, which is inconsistent.
+However, the Visual Studio backend was pass `/MT` in that case, which
+is inconsistent.
-If you need to use the MultiThreaded CRT, you should explicitly pass `-Db_vscrt=mt`
+If you need to use the MultiThreaded CRT, you should explicitly pass
+`-Db_vscrt=mt`