diff options
Diffstat (limited to 'docs/markdown/Release-notes-for-0.47.0.md')
-rw-r--r-- | docs/markdown/Release-notes-for-0.47.0.md | 213 |
1 files changed, 112 insertions, 101 deletions
diff --git a/docs/markdown/Release-notes-for-0.47.0.md b/docs/markdown/Release-notes-for-0.47.0.md index 9093035..df230dd 100644 --- a/docs/markdown/Release-notes-for-0.47.0.md +++ b/docs/markdown/Release-notes-for-0.47.0.md @@ -7,32 +7,34 @@ short-description: Release notes for 0.47 ## Allow early return from a script -Added the function `subdir_done()`. Its invocation exits the current script at -the point of invocation. All previously invoked build targets and commands are -build/executed. All following ones are ignored. If the current script was -invoked via `subdir()` the parent script continues normally. +Added the function `subdir_done()`. Its invocation exits the current +script at the point of invocation. All previously invoked build +targets and commands are build/executed. All following ones are +ignored. If the current script was invoked via `subdir()` the parent +script continues normally. ## Concatenate string literals returned from `get_define()` -After obtaining the value of a preprocessor symbol consecutive string literals -are merged into a single string literal. -For example a preprocessor symbol's value `"ab" "cd"` is returned as `"abcd"`. +After obtaining the value of a preprocessor symbol consecutive string +literals are merged into a single string literal. For example a +preprocessor symbol's value `"ab" "cd"` is returned as `"abcd"`. ## ARM compiler(version 6) for C and CPP Cross-compilation is now supported for ARM targets using ARM compiler -version 6 - ARMCLANG. The required ARMCLANG compiler options for +version 6 - ARMCLANG. The required ARMCLANG compiler options for building a shareable library are not included in the current Meson implementation for ARMCLANG support, so it can not build shareable -libraries. This current Meson implementation for ARMCLANG support can -not build assembly files with arm syntax (we need to use armasm instead -of ARMCLANG for the `.s` files with this syntax) and only supports GNU -syntax. +libraries. This current Meson implementation for ARMCLANG support can +not build assembly files with arm syntax (we need to use armasm +instead of ARMCLANG for the `.s` files with this syntax) and only +supports GNU syntax. -The default extension of the executable output is `.axf`. -The environment path should be set properly for the ARM compiler executables. -The `--target`, `-mcpu` options with the appropriate values should be mentioned -in the cross file as shown in the snippet below. +The default extension of the executable output is `.axf`. The +environment path should be set properly for the ARM compiler +executables. The `--target`, `-mcpu` options with the appropriate +values should be mentioned in the cross file as shown in the snippet +below. ```ini [properties] @@ -48,61 +50,63 @@ Note: ## New base build option for LLVM (Apple) bitcode support -When building with clang on macOS, you can now build your static and shared -binaries with embedded bitcode by enabling the `b_bitcode` [base -option](Builtin-options.md#base-options) by passing `-Db_bitcode=true` to -Meson. +When building with clang on macOS, you can now build your static and +shared binaries with embedded bitcode by enabling the `b_bitcode` +[base option](Builtin-options.md#base-options) by passing +`-Db_bitcode=true` to Meson. -This is better than passing the options manually in the environment since Meson -will automatically disable conflicting options such as `b_asneeded`, and will -disable bitcode support on targets that don't support it such as -`shared_module()`. +This is better than passing the options manually in the environment +since Meson will automatically disable conflicting options such as +`b_asneeded`, and will disable bitcode support on targets that don't +support it such as `shared_module()`. -Since this requires support in the linker, it is currently only enabled when -using Apple ld. In the future it can be extended to clang on other platforms -too. +Since this requires support in the linker, it is currently only +enabled when using Apple ld. In the future it can be extended to clang +on other platforms too. ## New compiler check: `check_header()` -The existing compiler check `has_header()` only checks if the header exists, -either with the `__has_include` C++11 builtin, or by running the pre-processor. +The existing compiler check `has_header()` only checks if the header +exists, either with the `__has_include` C++11 builtin, or by running +the pre-processor. -However, sometimes the header you are looking for is unusable on some platforms -or with some compilers in a way that is only detectable at compile-time. For -such cases, you should use `check_header()` which will include the header and -run a full compile. +However, sometimes the header you are looking for is unusable on some +platforms or with some compilers in a way that is only detectable at +compile-time. For such cases, you should use `check_header()` which +will include the header and run a full compile. -Note that `has_header()` is much faster than `check_header()`, so it should be -used whenever possible. +Note that `has_header()` is much faster than `check_header()`, so it +should be used whenever possible. ## New action `copy:` for `configure_file()` In addition to the existing actions `configuration:` and `command:`, -[`configure_file()`](Reference-manual.md#configure_file) now accepts a keyword -argument `copy:` which specifies a new action to copy the file specified with -the `input:` keyword argument to a file in the build directory with the name -specified with the `output:` keyword argument. +[`configure_file()`](Reference-manual.md#configure_file) now accepts a +keyword argument `copy:` which specifies a new action to copy the file +specified with the `input:` keyword argument to a file in the build +directory with the name specified with the `output:` keyword argument. -These three keyword arguments are, as before, mutually exclusive. You can only -do one action at a time. +These three keyword arguments are, as before, mutually exclusive. You +can only do one action at a time. ## New keyword argument `encoding:` for `configure_file()` -Add a new keyword to [`configure_file()`](Reference-manual.md#configure_file) -that allows the developer to specify the input and output file encoding. The +Add a new keyword to +[`configure_file()`](Reference-manual.md#configure_file) that allows +the developer to specify the input and output file encoding. The default value is the same as before: UTF-8. -In the past, Meson would not handle non-UTF-8/ASCII files correctly, and in the -worst case would try to coerce it to UTF-8 and mangle the data. UTF-8 is the -standard encoding now, but sometimes it is necessary to process files that use -a different encoding. +In the past, Meson would not handle non-UTF-8/ASCII files correctly, +and in the worst case would try to coerce it to UTF-8 and mangle the +data. UTF-8 is the standard encoding now, but sometimes it is +necessary to process files that use a different encoding. For additional details see [#3135](https://github.com/mesonbuild/meson/pull/3135). ## New keyword argument `output_format:` for `configure_file()` -When called without an input file, `configure_file` generates a -C header file by default. A keyword argument was added to allow +When called without an input file, `configure_file` generates a C +header file by default. A keyword argument was added to allow specifying the output format, for example for use with nasm or yasm: ```meson @@ -121,23 +125,24 @@ and `@PLAINNAME@` substitutions. ## Deprecated `build_always:` for custom targets -Setting `build_always` to `true` for a custom target not only marks the target -to be always considered out of date, but also adds it to the set of default -targets. This option is therefore deprecated and the new option -`build_always_stale` is introduced. +Setting `build_always` to `true` for a custom target not only marks +the target to be always considered out of date, but also adds it to +the set of default targets. This option is therefore deprecated and +the new option `build_always_stale` is introduced. -`build_always_stale` *only* marks the target to be always considered out of -date, but does not add it to the set of default targets. The old behaviour can -be achieved by combining `build_always_stale` with `build_by_default`. +`build_always_stale` *only* marks the target to be always considered +out of date, but does not add it to the set of default targets. The +old behaviour can be achieved by combining `build_always_stale` with +`build_by_default`. The documentation has been updated accordingly. ## New built-in object type: dictionary -Meson dictionaries use a syntax similar to python's dictionaries, -but have a narrower scope: they are immutable, keys can only -be string literals, and initializing a dictionary with duplicate -keys causes a fatal error. +Meson dictionaries use a syntax similar to python's dictionaries, but +have a narrower scope: they are immutable, keys can only be string +literals, and initializing a dictionary with duplicate keys causes a +fatal error. Example usage: @@ -154,15 +159,16 @@ endforeach ## Array options treat `-Dopt=` and `-Dopt=[]` as equivalent -Prior to this change passing -Dopt= to an array opt would be interpreted as -`['']` (an array with an empty string), now `-Dopt=` is the same as `-Dopt=[]`, an -empty list. +Prior to this change passing -Dopt= to an array opt would be +interpreted as `['']` (an array with an empty string), now `-Dopt=` is +the same as `-Dopt=[]`, an empty list. ## Feature detection based on `meson_version:` in `project()` -Meson will now print a `WARNING:` message during configuration if you use -a function or a keyword argument that was added in a meson version that's newer -than the version specified inside `project()`. For example: +Meson will now print a `WARNING:` message during configuration if you +use a function or a keyword argument that was added in a meson version +that's newer than the version specified inside `project()`. For +example: ```meson project('featurenew', meson_version: '>=0.43') @@ -193,23 +199,24 @@ WARNING: Project specifies a minimum meson_version '>=0.43' which conflicts with ## New type of build option for features -A new type of [option called `feature`](Build-options.md#features) can be -defined in `meson_options.txt` for the traditional `enabled / disabled / auto` -tristate. The value of this option can be passed to the `required` keyword -argument of functions `dependency()`, `find_library()`, `find_program()` and -`add_languages()`. +A new type of [option called `feature`](Build-options.md#features) can +be defined in `meson_options.txt` for the traditional `enabled / +disabled / auto` tristate. The value of this option can be passed to +the `required` keyword argument of functions `dependency()`, +`find_library()`, `find_program()` and `add_languages()`. -A new global option `auto_features` has been added to override the value of all -`auto` features. It is intended to be used by packagers to have full control on -which feature must be enabled or disabled. +A new global option `auto_features` has been added to override the +value of all `auto` features. It is intended to be used by packagers +to have full control on which feature must be enabled or disabled. ## New options to `gnome.gdbus_codegen()` -You can now pass additional arguments to gdbus-codegen using the `extra_args` -keyword. This is the same for the other gnome function calls. +You can now pass additional arguments to gdbus-codegen using the +`extra_args` keyword. This is the same for the other gnome function +calls. -Meson now automatically adds autocleanup support to the generated code. This -can be modified by setting the autocleanup keyword. +Meson now automatically adds autocleanup support to the generated +code. This can be modified by setting the autocleanup keyword. For example: @@ -235,18 +242,20 @@ $ meson install --only-changed ## `install_mode:` keyword argument extended to all installable targets -It is now possible to pass an `install_mode` argument to all installable targets, -such as `executable()`, libraries, headers, man pages and custom/generated -targets. +It is now possible to pass an `install_mode` argument to all +installable targets, such as `executable()`, libraries, headers, man +pages and custom/generated targets. -The `install_mode` argument can be used to specify the file mode in symbolic -format and optionally the owner/uid and group/gid for the installed files. +The `install_mode` argument can be used to specify the file mode in +symbolic format and optionally the owner/uid and group/gid for the +installed files. ## New built-in option `install_umask` with a default value 022 -This umask is used to define the default permissions of files and directories -created in the install tree. Files will preserve their executable mode, but the -exact permissions will obey the `install_umask`. +This umask is used to define the default permissions of files and +directories created in the install tree. Files will preserve their +executable mode, but the exact permissions will obey the +`install_umask`. The `install_umask` can be overridden in the meson command-line: @@ -261,8 +270,8 @@ project('myproject', 'c', default_options : ['install_umask=027']) ``` -To disable the `install_umask`, set it to `preserve`, in which case permissions -are copied from the files in their origin. +To disable the `install_umask`, set it to `preserve`, in which case +permissions are copied from the files in their origin. ## Octal and binary string literals @@ -275,27 +284,29 @@ int_1365 = 0b10101010101 ## New keyword arguments: 'check' and 'capture' for `run_command()` -If `check:` is `true`, then the configuration will fail if the command returns a -non-zero exit status. The default value is `false` for compatibility reasons. +If `check:` is `true`, then the configuration will fail if the command +returns a non-zero exit status. The default value is `false` for +compatibility reasons. -`run_command()` used to always capture the output and stored it for use in -build files. However, sometimes the stdout is in a binary format which is meant -to be discarded. For that case, you can now set the `capture:` keyword argument -to `false`. +`run_command()` used to always capture the output and stored it for +use in build files. However, sometimes the stdout is in a binary +format which is meant to be discarded. For that case, you can now set +the `capture:` keyword argument to `false`. ## Windows resource files dependencies The `compile_resources()` function of the `windows` module now takes the `depend_files:` and `depends:` keywords. -When using binutils's `windres`, dependencies on files `#include`'d by the -preprocessor are now automatically tracked. +When using binutils's `windres`, dependencies on files `#include`'d by +the preprocessor are now automatically tracked. ## Polkit support for privileged installation -When running `install`, if installation fails with a permission error and -`pkexec` is available, Meson will attempt to use it to spawn a permission -dialog for privileged installation and retry the installation. +When running `install`, if installation fails with a permission error +and `pkexec` is available, Meson will attempt to use it to spawn a +permission dialog for privileged installation and retry the +installation. -If `pkexec` is not available, the old behaviour is retained and you will need -to explicitly run the install step with `sudo`. +If `pkexec` is not available, the old behaviour is retained and you +will need to explicitly run the install step with `sudo`. |