parent
c0b448d3ca
commit
5d651e76b5
34 changed files with 355 additions and 316 deletions
@ -0,0 +1,353 @@ |
||||
--- |
||||
title: Release 0.57.0 |
||||
short-description: Release notes for 0.57.0 |
||||
... |
||||
|
||||
# New features |
||||
|
||||
## Project version can be specified with a file |
||||
|
||||
Meson can be instructed to load a project's version string from an |
||||
external file like this: |
||||
|
||||
```meson |
||||
project('foo', 'c' version: files('VERSION')) |
||||
``` |
||||
|
||||
The version file must contain exactly one line of text which will |
||||
be used as the project's version. If the line ends in a newline |
||||
character, it is removed. |
||||
|
||||
## Support for reading files at configuration time with the `fs` module |
||||
|
||||
Reading text files during configuration is now supported. This can be done at |
||||
any time after `project` has been called |
||||
|
||||
```meson |
||||
project(myproject', 'c') |
||||
license_text = run_command( |
||||
find_program('python3'), '-c', 'print(open("COPYING").read())' |
||||
).stdout().strip() |
||||
about_header = configuration_data() |
||||
about_header.add('COPYRIGHT', license_text) |
||||
about_header.add('ABOUT_STRING', meson.project_name()) |
||||
... |
||||
``` |
||||
|
||||
There are several problems with the above approach: |
||||
1. It's ugly and confusing |
||||
2. If `COPYING` changes after configuration, Meson won't correctly rebuild when |
||||
configuration data is based on the data in COPYING |
||||
3. It has extra overhead |
||||
|
||||
`fs.read` replaces the above idiom thus: |
||||
```meson |
||||
project(myproject', 'c') |
||||
fs = import('fs') |
||||
license_text = fs.read('COPYING').strip() |
||||
about_header = configuration_data() |
||||
about_header.add('COPYRIGHT', license_text) |
||||
about_header.add('ABOUT_STRING', meson.project_name()) |
||||
... |
||||
``` |
||||
|
||||
They are not equivalent, though. Files read with `fs.read` create a |
||||
configuration dependency on the file, and so if the `COPYING` file is modified, |
||||
Meson will automatically reconfigure, guaranteeing the build is consistent. It |
||||
can be used for any properly encoded text files. It supports specification of |
||||
non utf-8 encodings too, so if you're stuck with text files in a different |
||||
encoding, it can be passed as an argument. See the [`meson` |
||||
object](Reference-manual.md#meson-object) documentation for details. |
||||
|
||||
## meson install --dry-run |
||||
|
||||
New option to meson install command that does not actually install files, but |
||||
only print messages. |
||||
|
||||
## Qt6 module |
||||
|
||||
A module for Qt6 is now available with the same functionality as the Qt5 |
||||
module. |
||||
|
||||
Currently finding Qt6 is only available via `qmake` as pkg-config files aren't |
||||
generated (see [QTBUG-86080](https://bugreports.qt.io/browse/QTBUG-86080)) and |
||||
CMake support is not available for this module yet. |
||||
|
||||
## Unstable Rust module |
||||
|
||||
A new unstable module has been added to make using Rust with Meson easier. |
||||
Currently, it adds a single function to ease defining Rust tests, as well as a |
||||
wrapper around bindgen, making it easier to use. |
||||
|
||||
## Meson test() now accepts `protocol : 'rust'` |
||||
|
||||
This allows native Rust tests to be run and parsed by Meson; simply set the |
||||
protocol to `rust` and Meson takes care of the rest. |
||||
|
||||
## MSVC/Clang-Cl Argument Changes/Cleanup |
||||
|
||||
* "Disable Debug" (`/Od`) is no longer manually specified for optimization levels {`0`,`g`} (it is already the default for MSVC). |
||||
* "Run Time Checking" (`/RTC1`) removed from `debug` buildtype by default |
||||
* Clang-CL `debug` buildtype arguments now match MSVC arguments |
||||
* There is now no difference between `buildtype` flags and `debug` + `optimization` flags |
||||
|
||||
The /Od flag has been removed, as it is already the default in the MSVC compilers, and conflicts with other user options. |
||||
|
||||
/RTC1 conflicts with other RTC argument types as there are many different options, and has been removed by default. |
||||
Run Time Checking can be enabled by manually adding `/RTC1` or other RTC flags of your choice. |
||||
|
||||
The `debug` buildtype for clang-cl added additional arguments compared to MSVC, which had more to do with optimization than debug. The arguments removed are `/Ob0`, `/Od`, `/RTC1`. (`/Zi` was also removed, but it is already added by default when debug is enabled.) |
||||
|
||||
If these are important issues for you and would like builtin toggle options, |
||||
please file an issue in the Meson bug tracker. |
||||
|
||||
## Buildtype remains even if dependent options are changed |
||||
|
||||
Setting the `buildtype' option to a value sets the `debug` and |
||||
`optimization` options to predefined values. Traditionally setting the |
||||
options to other values would then change the buildtype to `custom`. |
||||
This is confusing and means that you can't use, for example, debug |
||||
level `g` in `debug` buildtype even though it would make sense under |
||||
many circumstances. |
||||
|
||||
Starting with this release, the buildtype is only changed when the user |
||||
explicitly sets it; setting the build type modifies the `debug` and |
||||
`optimization` options as before. |
||||
|
||||
## Passing internal dependencies to the compiler object |
||||
|
||||
Methods on the compiler object (such as `compiles`, `links`, `has_header`) |
||||
can be passed dependencies returned by `declare_dependency`, as long as they |
||||
only specify compiler/linker arguments or other dependencies that satisfy |
||||
the same requirements. |
||||
|
||||
## `unstable_external_project` improvements |
||||
|
||||
- Default arguments are added to `add_project()` in case some tags are not found |
||||
in `configure_options`: `'--prefix=@PREFIX@'`, `'--libdir=@PREFIX@/@LIBDIR@'`, |
||||
and `'--includedir=@PREFIX@/@INCLUDEDIR@'`. It was previously considered a fatal |
||||
error to not specify them. |
||||
|
||||
- When the `verbose` keyword argument is not specified, or is false, command outputs |
||||
are written on file in `<builddir>/meson-logs/`. |
||||
|
||||
- The `LD` environment variable is not passed any more when running the configure |
||||
script. It caused issues because Meson sets `LD` to the `CC` linker wrapper but |
||||
autotools expects it to be a real linker (e.g. `/usr/bin/ld`). |
||||
|
||||
## `gnome.post_install()` |
||||
|
||||
Post-install update of various system wide caches. Each script will be executed |
||||
only once even if `gnome.post_install()` is called multiple times from multiple |
||||
subprojects. If `DESTDIR` is specified during installation all scripts will be |
||||
skipped. |
||||
|
||||
Currently supports `glib-compile-schemas`, `gio-querymodules`, and |
||||
`gtk-update-icon-cache`. |
||||
|
||||
## "Edit and continue" (/ZI) is no longer used by default for Visual Studio |
||||
|
||||
Meson was adding the `/ZI` compiler argument as an argument for Visual Studio |
||||
in debug mode. This enables the `edit-and-continue` debugging in |
||||
Visual Studio IDE's. |
||||
|
||||
Unfortunately, it is also extremely expensive and breaks certain use cases such |
||||
as link time code generation. Edit and continue can be enabled by manually by |
||||
adding `/ZI` to compiler arguments. |
||||
|
||||
The `/ZI` argument has now been replaced by the `/Zi` argument for debug builds. |
||||
|
||||
If this is an important issue for you and would like a builtin toggle option, |
||||
please file an issue in the Meson bug tracker. |
||||
|
||||
## Minimum required Python version updated to 3.6 |
||||
|
||||
Meson now requires at least Python version 3.6 to run as Python 3.5 |
||||
reaches EOL on September 2020. In practice this should only affect |
||||
people developing on Ubuntu Xenial, which will similarly reach EOL in |
||||
April 2021. |
||||
|
||||
## Packaging a subproject |
||||
|
||||
The `meson dist` command can now create a distribution tarball for a subproject |
||||
in the same git repository as the main project. This can be useful if parts of |
||||
the project (e.g. libraries) can be built and distributed separately. In that |
||||
case they can be moved into `subprojects/mysub` and running `meson dist` in that |
||||
directory will now create a tarball containing only the source code from that |
||||
subdir and not the rest of the main project or other subprojects. |
||||
|
||||
For example: |
||||
```sh |
||||
git clone https://github.com/myproject |
||||
cd myproject/subprojects/mysubproject |
||||
meson builddir |
||||
meson dist -C builddir |
||||
``` |
||||
|
||||
## `custom_target()` and `run_target()` now accepts an `env` keyword argument |
||||
|
||||
Environment variables can now be passed to the `custom_target()` command. |
||||
|
||||
```meson |
||||
env = environment() |
||||
env.append('PATH', '/foo') |
||||
custom_target(..., env: env) |
||||
custom_target(..., env: {'MY_ENV': 'value'}) |
||||
custom_target(..., env: ['MY_ENV=value']) |
||||
``` |
||||
|
||||
## `summary()` accepts external programs or dependencies |
||||
|
||||
External program objects and dependency objects can be passed to |
||||
`summary()` as the value to be printed. |
||||
|
||||
## CMake `find_package` version support |
||||
|
||||
It is now possible to specify a requested package version for the CMake |
||||
dependency backend via the new `cmake_package_version` kwarg in the |
||||
`dependency` function. |
||||
|
||||
## `meson test` only rebuilds test dependencies |
||||
|
||||
Until now, `meson test` rebuilt the whole project independent of the |
||||
requested tests and their dependencies. With this release, `meson test` |
||||
will only rebuild what is needed for the tests or suites that will be run. |
||||
This feature can be used, for example, to speed up bisecting regressions |
||||
using commands like the following: |
||||
|
||||
git bisect start <broken commit> <working commit> |
||||
git bisect run meson test <failing test name> |
||||
|
||||
This would find the broken commit automatically while at each step |
||||
rebuilding only those pieces of code needed to run the test. |
||||
|
||||
However, this change could cause failures when upgrading to 0.57, if the |
||||
dependencies are not specified correctly in `meson.build`. |
||||
|
||||
## The `add_*_script` methods now accept a File as the first argument |
||||
|
||||
Meson now accepts `file` objects, including those produced by |
||||
`configure_file`, as the first parameter of the various |
||||
`add_*_script` methods |
||||
|
||||
```meson |
||||
install_script = configure_file( |
||||
configuration : conf, |
||||
input : 'myscript.py.in', |
||||
output : 'myscript.py', |
||||
) |
||||
|
||||
meson.add_install_script(install_script, other, params) |
||||
``` |
||||
|
||||
## Unity build with Vala disabled |
||||
|
||||
The approach that meson has used for Vala unity builds is incorrect, we |
||||
combine the generated C files like we would any other C file. This is very |
||||
fragile however, as the Vala compiler generates helper functions and macros |
||||
which work fine when each file is a separate translation unit, but fail when |
||||
they are combined. |
||||
|
||||
## New logging format for `meson test` |
||||
|
||||
The console output format for `meson test` has changed in several ways. |
||||
The major changes are: |
||||
|
||||
* if stdout is a tty, `meson` includes a progress report. |
||||
|
||||
* if `--print-errorlogs` is specified, the logs are printed as tests run |
||||
rather than afterwards. All the error logs are printed rather than only |
||||
the first ten. |
||||
|
||||
* if `--verbose` is specified and `--num-processes` specifies more than |
||||
one concurrent test, test output is buffered and printed after the |
||||
test finishes. |
||||
|
||||
* the console logs include a reproducer command. If `--verbose` is |
||||
specified, the command is printed for all tests at the time they start; |
||||
otherwise, it is printed for failing tests at the time the test finishes. |
||||
|
||||
* for TAP and Rust tests, Meson is able to report individual subtests. If |
||||
`--verbose` is specified, all tests are reported. If `--print-errorlogs` |
||||
is specified, only failures are. |
||||
|
||||
In addition, if `--verbose` was specified, Meson used not to generate |
||||
logs. This limitation has now been removed. |
||||
|
||||
These changes make the default `ninja test` output more readable, while |
||||
`--verbose` output provides detailed, human-readable logs that |
||||
are well suited to CI environments. |
||||
|
||||
## Specify DESTDIR on command line |
||||
|
||||
`meson install` command now has a `--destdir` argument that overrides `DESTDIR` |
||||
from environment. |
||||
|
||||
## Skip install scripts if DESTDIR is set |
||||
|
||||
`meson.add_install_script()` now has `skip_if_destdir` keyword argument. If set |
||||
to `true` the script won't be run if `DESTDIR` is set during installation. This is |
||||
useful in the case the script updates system wide caches, or performs other tasks |
||||
that are only needed when copying files into final destination. |
||||
|
||||
## Add support for prelinked static libraries |
||||
|
||||
The static library gains a new `prelink` keyword argument that can be |
||||
used to prelink object files in that target. This is currently only |
||||
supported for the GNU toolchain, patches to add it to other compilers |
||||
are most welcome. |
||||
|
||||
## Rust now has an `std` option |
||||
|
||||
Rust calls these `editions`, however, Meson generally refers to such language |
||||
versions as "standards", or `std` for short. Therefore, Meson's Rust support |
||||
uses `std` for consistency with other languages. |
||||
|
||||
## Ctrl-C behavior in `meson test` |
||||
|
||||
Starting from this version, sending a `SIGINT` signal (or pressing `Ctrl-C`) |
||||
to `meson test` will interrupt the longest running test. Pressing `Ctrl-C` |
||||
three times within a second will exit `meson test`. |
||||
|
||||
## Support added for LLVM's thinLTO |
||||
|
||||
A new `b_lto_mode` option has been added, which may be set to `default` or |
||||
`thin`. Thin only works for clang, and only with gnu gold, lld variants, or |
||||
ld64. |
||||
|
||||
## `test()` timeout and timeout_multiplier value <= 0 |
||||
|
||||
`test(..., timeout: 0)`, or negative value, used to abort the test immediately |
||||
but now instead allow infinite duration. Note that omitting the `timeout` |
||||
keyword argument still defaults to 30s timeout. |
||||
|
||||
Likewise, `add_test_setup(..., timeout_multiplier: 0)`, or |
||||
`meson test --timeout-multiplier 0`, or negative value, disable tests timeout. |
||||
|
||||
|
||||
## Knob to control LTO thread |
||||
|
||||
Both the gnu linker and lld support using threads for speeding up LTO, meson |
||||
now provides a knob for this: `-Db_lto_threads`. Currently this is only |
||||
supported for clang and gcc. Any positive integer is supported, `0` means |
||||
`auto`. If the compiler or linker implements it's on `auto` we use that, |
||||
otherwise the number of threads on the machine is used. |
||||
|
||||
## `summary()` now uses left alignment for both keys and values |
||||
|
||||
Previously it aligned keys toward the center, but this was deemed harder |
||||
to read than having everything left aligned. |
||||
|
||||
## `//` is now allowed as a function id for `meson rewrite`. |
||||
|
||||
msys bash may expand `/` to a path, breaking |
||||
`meson rewrite kwargs set project / ...`. Passing `//` will be converted to |
||||
`/` by msys bash but in order to keep usage shell-agnostic, this release |
||||
also allows `//` as the id. This way, `meson rewrite kwargs set project |
||||
// ...` will work in both msys bash and other shells. |
||||
|
||||
## Get keys of configuration data object |
||||
|
||||
All keys of the `configuration_data` object can be obtained with the `keys()` |
||||
method as an alphabetically sorted array. |
||||
|
@ -1,12 +0,0 @@ |
||||
## Buildtype remains even if dependent options are changed |
||||
|
||||
Setting the `buildtype' option to a value sets the `debug` and |
||||
`optimization` options to predefined values. Traditionally setting the |
||||
options to other values would then change the buildtype to `custom`. |
||||
This is confusing and means that you can't use, for example, debug |
||||
level `g` in `debug` buildtype even though it would make sense under |
||||
many circumstances. |
||||
|
||||
Starting with this release, the buildtype is only changed when the user |
||||
explicitly sets it; setting the build type modifies the `debug` and |
||||
`optimization` options as before. |
@ -1,5 +0,0 @@ |
||||
## CMake `find_package` version support |
||||
|
||||
It is now possible to specify a requested package version for the CMake |
||||
dependency backend via the new `cmake_package_version` kwarg in the |
||||
`dependency` function. |
@ -1,6 +0,0 @@ |
||||
## Passing internal dependencies to the compiler object |
||||
|
||||
Methods on the compiler object (such as `compiles`, `links`, `has_header`) |
||||
can be passed dependencies returned by `declare_dependency`, as long as they |
||||
only specify compiler/linker arguments or other dependencies that satisfy |
||||
the same requirements. |
@ -1,11 +0,0 @@ |
||||
## `custom_target()` and `run_target()` now accepts an `env` keyword argument |
||||
|
||||
Environment variables can now be passed to the `custom_target()` command. |
||||
|
||||
```meson |
||||
env = environment() |
||||
env.append('PATH', '/foo') |
||||
custom_target(..., env: env) |
||||
custom_target(..., env: {'MY_ENV': 'value'}) |
||||
custom_target(..., env: ['MY_ENV=value']) |
||||
``` |
@ -1,11 +0,0 @@ |
||||
## Specify DESTDIR on command line |
||||
|
||||
`meson install` command now has a `--destdir` argument that overrides `DESTDIR` |
||||
from environment. |
||||
|
||||
## Skip install scripts if DESTDIR is set |
||||
|
||||
`meson.add_install_script()` now has `skip_if_destdir` keyword argument. If set |
||||
to `true` the script won't be run if `DESTDIR` is set during installation. This is |
||||
useful in the case the script updates system wide caches, or performs other tasks |
||||
that are only needed when copying files into final destination. |
@ -1,16 +0,0 @@ |
||||
## Packaging a subproject |
||||
|
||||
The `meson dist` command can now create a distribution tarball for a subproject |
||||
in the same git repository as the main project. This can be useful if parts of |
||||
the project (e.g. libraries) can be built and distributed separately. In that |
||||
case they can be moved into `subprojects/mysub` and running `meson dist` in that |
||||
directory will now create a tarball containing only the source code from that |
||||
subdir and not the rest of the main project or other subprojects. |
||||
|
||||
For example: |
||||
```sh |
||||
git clone https://github.com/myproject |
||||
cd myproject/subprojects/mysubproject |
||||
meson builddir |
||||
meson dist -C builddir |
||||
``` |
@ -1,13 +0,0 @@ |
||||
## `unstable_external_project` improvements |
||||
|
||||
- Default arguments are added to `add_project()` in case some tags are not found |
||||
in `configure_options`: `'--prefix=@PREFIX@'`, `'--libdir=@PREFIX@/@LIBDIR@'`, |
||||
and `'--includedir=@PREFIX@/@INCLUDEDIR@'`. It was previously considered a fatal |
||||
error to not specify them. |
||||
|
||||
- When the `verbose` keyword argument is not specified, or is false, command outputs |
||||
are written on file in `<builddir>/meson-logs/`. |
||||
|
||||
- The `LD` environment variable is not passed any more when running the configure |
||||
script. It caused issues because Meson sets `LD` to the `CC` linker wrapper but |
||||
autotools expects it to be a real linker (e.g. `/usr/bin/ld`). |
@ -1,40 +0,0 @@ |
||||
## Support for reading files at configuration time with the `fs` module |
||||
|
||||
Reading text files during configuration is now supported. This can be done at |
||||
any time after `project` has been called |
||||
|
||||
```meson |
||||
project(myproject', 'c') |
||||
license_text = run_command( |
||||
find_program('python3'), '-c', 'print(open("COPYING").read())' |
||||
).stdout().strip() |
||||
about_header = configuration_data() |
||||
about_header.add('COPYRIGHT', license_text) |
||||
about_header.add('ABOUT_STRING', meson.project_name()) |
||||
... |
||||
``` |
||||
|
||||
There are several problems with the above approach: |
||||
1. It's ugly and confusing |
||||
2. If `COPYING` changes after configuration, Meson won't correctly rebuild when |
||||
configuration data is based on the data in COPYING |
||||
3. It has extra overhead |
||||
|
||||
`fs.read` replaces the above idiom thus: |
||||
```meson |
||||
project(myproject', 'c') |
||||
fs = import('fs') |
||||
license_text = fs.read('COPYING').strip() |
||||
about_header = configuration_data() |
||||
about_header.add('COPYRIGHT', license_text) |
||||
about_header.add('ABOUT_STRING', meson.project_name()) |
||||
... |
||||
``` |
||||
|
||||
They are not equivalent, though. Files read with `fs.read` create a |
||||
configuration dependency on the file, and so if the `COPYING` file is modified, |
||||
Meson will automatically reconfigure, guaranteeing the build is consistent. It |
||||
can be used for any properly encoded text files. It supports specification of |
||||
non utf-8 encodings too, so if you're stuck with text files in a different |
||||
encoding, it can be passed as an argument. See the [`meson` |
||||
object](Reference-manual.md#meson-object) documentation for details. |
@ -1,9 +0,0 @@ |
||||
## `gnome.post_install()` |
||||
|
||||
Post-install update of various system wide caches. Each script will be executed |
||||
only once even if `gnome.post_install()` is called multiple times from multiple |
||||
subprojects. If `DESTDIR` is specified during installation all scripts will be |
||||
skipped. |
||||
|
||||
Currently supports `glib-compile-schemas`, `gio-querymodules`, and |
||||
`gtk-update-icon-cache`. |
@ -1,4 +0,0 @@ |
||||
## meson install --dry-run |
||||
|
||||
New option to meson install command that does not actually install files, but |
||||
only print messages. |
@ -1,4 +0,0 @@ |
||||
## Get keys of configuration data object |
||||
|
||||
All keys of the `configuration_data` object can be obtained with the `keys()` |
||||
method as an alphabetically sorted array. |
@ -1,5 +0,0 @@ |
||||
## Support added for LLVM's thinLTO |
||||
|
||||
A new `b_lto_mode` option has been added, which may be set to `default` or |
||||
`thin`. Thin only works for clang, and only with gnu gold, lld variants, or |
||||
ld64. |
@ -1,7 +0,0 @@ |
||||
## Knob to control LTO thread |
||||
|
||||
Both the gnu linker and lld support using threads for speeding up LTO, meson |
||||
now provides a knob for this: `-Db_lto_threads`. Currently this is only |
||||
supported for clang and gcc. Any positive integer is supported, `0` means |
||||
`auto`. If the compiler or linker implements it's on `auto` we use that, |
||||
otherwise the number of threads on the machine is used. |
@ -1,16 +0,0 @@ |
||||
## `meson test` only rebuilds test dependencies |
||||
|
||||
Until now, `meson test` rebuilt the whole project independent of the |
||||
requested tests and their dependencies. With this release, `meson test` |
||||
will only rebuild what is needed for the tests or suites that will be run. |
||||
This feature can be used, for example, to speed up bisecting regressions |
||||
using commands like the following: |
||||
|
||||
git bisect start <broken commit> <working commit> |
||||
git bisect run meson test <failing test name> |
||||
|
||||
This would find the broken commit automatically while at each step |
||||
rebuilding only those pieces of code needed to run the test. |
||||
|
||||
However, this change could cause failures when upgrading to 0.57, if the |
||||
dependencies are not specified correctly in `meson.build`. |
@ -1,5 +0,0 @@ |
||||
## Ctrl-C behavior in `meson test` |
||||
|
||||
Starting from this version, sending a `SIGINT` signal (or pressing `Ctrl-C`) |
||||
to `meson test` will interrupt the longest running test. Pressing `Ctrl-C` |
||||
three times within a second will exit `meson test`. |
@ -1,29 +0,0 @@ |
||||
## New logging format for `meson test` |
||||
|
||||
The console output format for `meson test` has changed in several ways. |
||||
The major changes are: |
||||
|
||||
* if stdout is a tty, `meson` includes a progress report. |
||||
|
||||
* if `--print-errorlogs` is specified, the logs are printed as tests run |
||||
rather than afterwards. All the error logs are printed rather than only |
||||
the first ten. |
||||
|
||||
* if `--verbose` is specified and `--num-processes` specifies more than |
||||
one concurrent test, test output is buffered and printed after the |
||||
test finishes. |
||||
|
||||
* the console logs include a reproducer command. If `--verbose` is |
||||
specified, the command is printed for all tests at the time they start; |
||||
otherwise, it is printed for failing tests at the time the test finishes. |
||||
|
||||
* for TAP and Rust tests, Meson is able to report individual subtests. If |
||||
`--verbose` is specified, all tests are reported. If `--print-errorlogs` |
||||
is specified, only failures are. |
||||
|
||||
In addition, if `--verbose` was specified, Meson used not to generate |
||||
logs. This limitation has now been removed. |
||||
|
||||
These changes make the default `ninja test` output more readable, while |
||||
`--verbose` output provides detailed, human-readable logs that |
||||
are well suited to CI environments. |
@ -1,16 +0,0 @@ |
||||
## MSVC/Clang-Cl Argument Changes/Cleanup |
||||
|
||||
* "Disable Debug" (`/Od`) is no longer manually specified for optimization levels {`0`,`g`} (it is already the default for MSVC). |
||||
* "Run Time Checking" (`/RTC1`) removed from `debug` buildtype by default |
||||
* Clang-CL `debug` buildtype arguments now match MSVC arguments |
||||
* There is now no difference between `buildtype` flags and `debug` + `optimization` flags |
||||
|
||||
The /Od flag has been removed, as it is already the default in the MSVC compilers, and conflicts with other user options. |
||||
|
||||
/RTC1 conflicts with other RTC argument types as there are many different options, and has been removed by default. |
||||
Run Time Checking can be enabled by manually adding `/RTC1` or other RTC flags of your choice. |
||||
|
||||
The `debug` buildtype for clang-cl added additional arguments compared to MSVC, which had more to do with optimization than debug. The arguments removed are `/Ob0`, `/Od`, `/RTC1`. (`/Zi` was also removed, but it is already added by default when debug is enabled.) |
||||
|
||||
If these are important issues for you and would like builtin toggle options, |
||||
please file an issue in the Meson bug tracker. |
@ -1,14 +0,0 @@ |
||||
## "Edit and continue" (/ZI) is no longer used by default for Visual Studio |
||||
|
||||
Meson was adding the `/ZI` compiler argument as an argument for Visual Studio |
||||
in debug mode. This enables the `edit-and-continue` debugging in |
||||
Visual Studio IDE's. |
||||
|
||||
Unfortunately, it is also extremely expensive and breaks certain use cases such |
||||
as link time code generation. Edit and continue can be enabled by manually by |
||||
adding `/ZI` to compiler arguments. |
||||
|
||||
The `/ZI` argument has now been replaced by the `/Zi` argument for debug builds. |
||||
|
||||
If this is an important issue for you and would like a builtin toggle option, |
||||
please file an issue in the Meson bug tracker. |
@ -1,15 +0,0 @@ |
||||
## The `add_*_script` methods now accept a File as the first argument |
||||
|
||||
Meson now accepts `file` objects, including those produced by |
||||
`configure_file`, as the first parameter of the various |
||||
`add_*_script` methods |
||||
|
||||
```meson |
||||
install_script = configure_file( |
||||
configuration : conf, |
||||
input : 'myscript.py.in', |
||||
output : 'myscript.py', |
||||
) |
||||
|
||||
meson.add_install_script(install_script, other, params) |
||||
``` |
@ -1,6 +0,0 @@ |
||||
## Add support for prelinked static libraries |
||||
|
||||
The static library gains a new `prelink` keyword argument that can be |
||||
used to prelink object files in that target. This is currently only |
||||
supported for the GNU toolchain, patches to add it to other compilers |
||||
are most welcome. |
@ -1,6 +0,0 @@ |
||||
## Minimum required Python version updated to 3.6 |
||||
|
||||
Meson now requires at least Python version 3.6 to run as Python 3.5 |
||||
reaches EOL on September 2020. In practice this should only affect |
||||
people developing on Ubuntu Xenial, which will similarly reach EOL in |
||||
April 2021. |
@ -1,8 +0,0 @@ |
||||
## Qt6 module |
||||
|
||||
A module for Qt6 is now available with the same functionality as the Qt5 |
||||
module. |
||||
|
||||
Currently finding Qt6 is only available via `qmake` as pkg-config files aren't |
||||
generated (see [QTBUG-86080](https://bugreports.qt.io/browse/QTBUG-86080)) and |
||||
CMake support is not available for this module yet. |
@ -1,7 +0,0 @@ |
||||
## `//` is now allowed as a function id for `meson rewrite`. |
||||
|
||||
msys bash may expand `/` to a path, breaking |
||||
`meson rewrite kwargs set project / ...`. Passing `//` will be converted to |
||||
`/` by msys bash but in order to keep usage shell-agnostic, this release |
||||
also allows `//` as the id. This way, `meson rewrite kwargs set project |
||||
// ...` will work in both msys bash and other shells. |
@ -1,5 +0,0 @@ |
||||
## Rust now has an `std` option |
||||
|
||||
Rust calls these `editions`, however, Meson generally refers to such language |
||||
versions as "standards", or `std` for short. Therefore, Meson's Rust support |
||||
uses `std` for consistency with other languages. |
@ -1,4 +0,0 @@ |
||||
## Meson test() now accepts `protocol : 'rust'` |
||||
|
||||
This allows native Rust tests to be run and parsed by Meson; simply set the |
||||
protocol to `rust` and Meson takes care of the rest. |
@ -1,4 +0,0 @@ |
||||
## `summary()` now uses left alignment for both keys and values |
||||
|
||||
Previously it aligned keys toward the center, but this was deemed harder |
||||
to read than having everything left aligned. |
@ -1,4 +0,0 @@ |
||||
## `summary()` accepts external programs or dependencies |
||||
|
||||
External program objects and dependency objects can be passed to |
||||
`summary()` as the value to be printed. |
@ -1,9 +0,0 @@ |
||||
## `test()` timeout and timeout_multiplier value <= 0 |
||||
|
||||
`test(..., timeout: 0)`, or negative value, used to abort the test immediately |
||||
but now instead allow infinite duration. Note that omitting the `timeout` |
||||
keyword argument still defaults to 30s timeout. |
||||
|
||||
Likewise, `add_test_setup(..., timeout_multiplier: 0)`, or |
||||
`meson test --timeout-multiplier 0`, or negative value, disable tests timeout. |
||||
|
@ -1,5 +0,0 @@ |
||||
## Unstable Rust module |
||||
|
||||
A new unstable module has been added to make using Rust with Meson easier. |
||||
Currently, it adds a single function to ease defining Rust tests, as well as a |
||||
wrapper around bindgen, making it easier to use. |
@ -1,7 +0,0 @@ |
||||
## Unity build with Vala disabled |
||||
|
||||
The approach that meson has used for Vala unity builds is incorrect, we |
||||
combine the generated C files like we would any other C file. This is very |
||||
fragile however, as the Vala compiler generates helper functions and macros |
||||
which work fine when each file is a separate translation unit, but fail when |
||||
they are combined. |
@ -1,12 +0,0 @@ |
||||
## Project version can be specified with a file |
||||
|
||||
Meson can be instructed to load a project's version string from an |
||||
external file like this: |
||||
|
||||
```meson |
||||
project('foo', 'c' version: files('VERSION')) |
||||
``` |
||||
|
||||
The version file must contain exactly one line of text which will |
||||
be used as the project's version. If the line ends in a newline |
||||
character, it is removed. |
Loading…
Reference in new issue