diff options
Diffstat (limited to 'docs/markdown/Release-notes-for-0.55.0.md')
-rw-r--r-- | docs/markdown/Release-notes-for-0.55.0.md | 203 |
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` |