parent
07777c725c
commit
183084a9e8
22 changed files with 216 additions and 188 deletions
@ -0,0 +1,214 @@ |
||||
--- |
||||
title: Release 1.5.0 |
||||
short-description: Release notes for 1.5.0 |
||||
... |
||||
|
||||
# New features |
||||
|
||||
Meson 1.5.0 was released on 10 July 2024 |
||||
## Support for `bztar` in `meson dist` |
||||
|
||||
The `bztar` format is now supported in `meson dist`. This format is also known |
||||
as `bzip2`. |
||||
|
||||
## Cargo dependencies names now include the API version |
||||
|
||||
Cargo dependencies names are now in the format `<package_name>-<version>-rs`: |
||||
- `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' |
||||
* `0.x.y` -> '0.x' |
||||
* `0.0.x` -> '0' |
||||
It allows to make different dependencies for uncompatible 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. |
||||
|
||||
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`. |
||||
|
||||
This is a breaking change (Cargo subprojects are still experimental), previous |
||||
versions were using `<package_name>-rs` format. |
||||
|
||||
## Added support `Cargo.lock` file |
||||
|
||||
When a (sub)project has a `Cargo.lock` file at its root, it is loaded to provide |
||||
an automatic fallback for dependencies it defines, fetching code from |
||||
https://crates.io or git. This is identical as providing `subprojects/*.wrap`, |
||||
see [cargo wraps](Wrap-dependency-system-manual.md#cargo-wraps) dependency naming convention. |
||||
|
||||
## Meson now propagates its build type to CMake |
||||
|
||||
When the CMake build type variable, `CMAKE_BUILD_TYPE`, is not set via the |
||||
`add_cmake_defines` method of the [`cmake options` object](CMake-module.md#cmake-options-object), |
||||
it is inferred from the [Meson build type](Builtin-options.md#details-for-buildtype). |
||||
Build types of the two build systems do not match perfectly. The mapping from |
||||
Meson build type to CMake build type is as follows: |
||||
|
||||
- `debug` -> `Debug` |
||||
- `debugoptimized` -> `RelWithDebInfo` |
||||
- `release` -> `Release` |
||||
- `minsize` -> `MinSizeRel` |
||||
|
||||
No CMake build type is set for the `plain` Meson build type. The inferred CMake |
||||
build type overrides any `CMAKE_BUILD_TYPE` environment variable. |
||||
|
||||
## compiler.run() method is now available for all languages |
||||
|
||||
It used to be only implemented for C-like and D languages, but it is now available |
||||
for all languages. |
||||
|
||||
## dependencies created by compiler.find_library implement the `name()` method |
||||
|
||||
Previously, for a [[@dep]] that might be returned by either [[dependency]] or |
||||
[[compiler.find_library]], the method might or might not exist with no way |
||||
of telling. |
||||
|
||||
## New version_argument kwarg for find_program |
||||
|
||||
When finding an external program with `find_program`, the `version_argument` |
||||
can be used to override the default `--version` argument when trying to parse |
||||
the version of the program. |
||||
|
||||
For example, if the following is used: |
||||
```meson |
||||
foo = find_program('foo', version_argument: '-version') |
||||
``` |
||||
|
||||
meson will internally run `foo -version` when trying to find the version of `foo`. |
||||
|
||||
## Meson configure handles changes to options in more cases |
||||
|
||||
Meson configure now correctly handles updates to the options file without a full |
||||
reconfigure. This allows making a change to the `meson.options` or |
||||
`meson_options.txt` file without a reconfigure. |
||||
|
||||
For example, this now works: |
||||
```sh |
||||
meson setup builddir |
||||
git pull |
||||
meson configure builddir -Doption-added-by-pull=value |
||||
``` |
||||
|
||||
## New meson format command |
||||
|
||||
This command is similar to `muon fmt` and allows to format a `meson.build` |
||||
document. |
||||
|
||||
## Added support for GCC's `null_terminated_string_arg` function attribute |
||||
|
||||
You can now check if a compiler support the `null_terminated_string_arg` |
||||
function attribute via the `has_function_attribute()` method on the |
||||
[[@compiler]] object. |
||||
|
||||
```meson |
||||
cc = meson.get_compiler('c') |
||||
|
||||
if cc.has_function_attribute('null_terminated_string_arg') |
||||
# We have it... |
||||
endif |
||||
``` |
||||
|
||||
## A new dependency for ObjFW is now supported |
||||
|
||||
For example, you can create a simple application written using ObjFW like this: |
||||
|
||||
```meson |
||||
project('SimpleApp', 'objc') |
||||
|
||||
objfw_dep = dependency('objfw', version: '>= 1.0') |
||||
|
||||
executable('SimpleApp', 'SimpleApp.m', |
||||
dependencies: [objfw_dep]) |
||||
``` |
||||
|
||||
Modules are also supported. A test case using ObjFWTest can be created like |
||||
this: |
||||
|
||||
```meson |
||||
project('Tests', 'objc') |
||||
|
||||
objfwtest_dep = dependency('objfw', version: '>= 1.1', modules: ['ObjFWTest']) |
||||
|
||||
executable('Tests', ['FooTest.m', 'BarTest.m'], |
||||
dependencies: [objfwtest_dep]) |
||||
``` |
||||
|
||||
## Support of indexed `@PLAINNAME@` and `@BASENAME@` |
||||
|
||||
In `custom_target()` and `configure_file()` with multiple inputs, |
||||
it is now possible to specify index for `@PLAINNAME@` and `@BASENAME@` |
||||
macros in `output`: |
||||
``` |
||||
custom_target('target_name', |
||||
output: '@PLAINNAME0@.dl', |
||||
input: [dep1, dep2], |
||||
command: cmd) |
||||
``` |
||||
|
||||
## Required kwarg on more `compiler` methods |
||||
|
||||
The following `compiler` methods now support the `required` keyword argument: |
||||
|
||||
- `compiler.compiles()` |
||||
- `compiler.links()` |
||||
- `compiler.runs()` |
||||
|
||||
```meson |
||||
cc.compiles(valid, name: 'valid', required : true) |
||||
cc.links(valid, name: 'valid', required : true) |
||||
cc.run(valid, name: 'valid', required : true) |
||||
|
||||
assert(not cc.compiles(valid, name: 'valid', required : opt)) |
||||
assert(not cc.links(valid, name: 'valid', required : opt)) |
||||
res = cc.run(valid, name: 'valid', required : opt) |
||||
assert(res.compiled()) |
||||
assert(res.returncode() == 0) |
||||
assert(res.stdout() == '') |
||||
assert(res.stderr() == '') |
||||
``` |
||||
|
||||
## The Meson test program supports a new "--interactive" argument |
||||
|
||||
`meson test --interactive` invokes tests with stdout, stdin and stderr |
||||
connected directly to the calling terminal. This can be useful when running |
||||
integration tests that run in containers or virtual machines which can spawn a |
||||
debug shell if a test fails. |
||||
|
||||
## meson test now sets the `MESON_TEST_ITERATION` environment variable |
||||
|
||||
`meson test` will now set the `MESON_TEST_ITERATION` environment variable to the |
||||
current iteration of the test. This will always be `1` unless `--repeat` is used |
||||
to run the same test multiple times. |
||||
|
||||
## The Meson test program supports a new "--max-lines" argument |
||||
|
||||
By default `meson test` only shows the last 100 lines of test output from tests |
||||
that produce large amounts of output. This default can now be changed with the |
||||
new `--max-lines` option. For example, `--max-lines=1000` will increase the |
||||
maximum number of log output lines from 100 to 1000. |
||||
|
||||
## Basic support for TI Arm Clang (tiarmclang) |
||||
|
||||
Support for TI's newer [Clang-based ARM toolchain](https://www.ti.com/tool/ARM-CGT). |
||||
|
||||
## Support for Texas Instruments C6000 C/C++ compiler |
||||
|
||||
Meson now supports the TI C6000 C/C++ compiler use for the C6000 cpu family. |
||||
The example cross file is available in `cross/ti-c6000.txt`. |
||||
|
||||
## Wayland stable protocols can be versioned |
||||
|
||||
The wayland module now accepts a version number for stable protocols. |
||||
|
||||
```meson |
||||
wl_mod = import('unstable-wayland') |
||||
|
||||
wl_mod.find_protocol( |
||||
'linux-dmabuf', |
||||
state: 'stable' |
||||
version: 1 |
||||
) |
||||
``` |
||||
|
@ -1,4 +0,0 @@ |
||||
## Support for `bztar` in `meson dist` |
||||
|
||||
The `bztar` format is now supported in `meson dist`. This format is also known |
||||
as `bzip2`. |
@ -1,19 +0,0 @@ |
||||
## Cargo dependencies names now include the API version |
||||
|
||||
Cargo dependencies names are now in the format `<package_name>-<version>-rs`: |
||||
- `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' |
||||
* `0.x.y` -> '0.x' |
||||
* `0.0.x` -> '0' |
||||
It allows to make different dependencies for uncompatible 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. |
||||
|
||||
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`. |
||||
|
||||
This is a breaking change (Cargo subprojects are still experimental), previous |
||||
versions were using `<package_name>-rs` format. |
@ -1,6 +0,0 @@ |
||||
## Added support `Cargo.lock` file |
||||
|
||||
When a (sub)project has a `Cargo.lock` file at its root, it is loaded to provide |
||||
an automatic fallback for dependencies it defines, fetching code from |
||||
https://crates.io or git. This is identical as providing `subprojects/*.wrap`, |
||||
see [cargo wraps](Wrap-dependency-system-manual.md#cargo-wraps) dependency naming convention. |
@ -1,15 +0,0 @@ |
||||
## Meson now propagates its build type to CMake |
||||
|
||||
When the CMake build type variable, `CMAKE_BUILD_TYPE`, is not set via the |
||||
`add_cmake_defines` method of the [`cmake options` object](CMake-module.md#cmake-options-object), |
||||
it is inferred from the [Meson build type](Builtin-options.md#details-for-buildtype). |
||||
Build types of the two build systems do not match perfectly. The mapping from |
||||
Meson build type to CMake build type is as follows: |
||||
|
||||
- `debug` -> `Debug` |
||||
- `debugoptimized` -> `RelWithDebInfo` |
||||
- `release` -> `Release` |
||||
- `minsize` -> `MinSizeRel` |
||||
|
||||
No CMake build type is set for the `plain` Meson build type. The inferred CMake |
||||
build type overrides any `CMAKE_BUILD_TYPE` environment variable. |
@ -1,4 +0,0 @@ |
||||
## compiler.run() method is now available for all languages |
||||
|
||||
It used to be only implemented for C-like and D languages, but it is now available |
||||
for all languages. |
@ -1,5 +0,0 @@ |
||||
## dependencies created by compiler.find_library implement the `name()` method |
||||
|
||||
Previously, for a [[@dep]] that might be returned by either [[dependency]] or |
||||
[[compiler.find_library]], the method might or might not exist with no way |
||||
of telling. |
@ -1,12 +0,0 @@ |
||||
## New version_argument kwarg for find_program |
||||
|
||||
When finding an external program with `find_program`, the `version_argument` |
||||
can be used to override the default `--version` argument when trying to parse |
||||
the version of the program. |
||||
|
||||
For example, if the following is used: |
||||
```meson |
||||
foo = find_program('foo', version_argument: '-version') |
||||
``` |
||||
|
||||
meson will internally run `foo -version` when trying to find the version of `foo`. |
@ -1,12 +0,0 @@ |
||||
## Meson configure handles changes to options in more cases |
||||
|
||||
Meson configure now correctly handles updates to the options file without a full |
||||
reconfigure. This allows making a change to the `meson.options` or |
||||
`meson_options.txt` file without a reconfigure. |
||||
|
||||
For example, this now works: |
||||
```sh |
||||
meson setup builddir |
||||
git pull |
||||
meson configure builddir -Doption-added-by-pull=value |
||||
``` |
@ -1,4 +0,0 @@ |
||||
## New meson format command |
||||
|
||||
This command is similar to `muon fmt` and allows to format a `meson.build` |
||||
document. |
@ -1,13 +0,0 @@ |
||||
## Added support for GCC's `null_terminated_string_arg` function attribute |
||||
|
||||
You can now check if a compiler support the `null_terminated_string_arg` |
||||
function attribute via the `has_function_attribute()` method on the |
||||
[[@compiler]] object. |
||||
|
||||
```meson |
||||
cc = meson.get_compiler('c') |
||||
|
||||
if cc.has_function_attribute('null_terminated_string_arg') |
||||
# We have it... |
||||
endif |
||||
``` |
@ -1,24 +0,0 @@ |
||||
## A new dependency for ObjFW is now supported |
||||
|
||||
For example, you can create a simple application written using ObjFW like this: |
||||
|
||||
```meson |
||||
project('SimpleApp', 'objc') |
||||
|
||||
objfw_dep = dependency('objfw', version: '>= 1.0') |
||||
|
||||
executable('SimpleApp', 'SimpleApp.m', |
||||
dependencies: [objfw_dep]) |
||||
``` |
||||
|
||||
Modules are also supported. A test case using ObjFWTest can be created like |
||||
this: |
||||
|
||||
```meson |
||||
project('Tests', 'objc') |
||||
|
||||
objfwtest_dep = dependency('objfw', version: '>= 1.1', modules: ['ObjFWTest']) |
||||
|
||||
executable('Tests', ['FooTest.m', 'BarTest.m'], |
||||
dependencies: [objfwtest_dep]) |
||||
``` |
@ -1,11 +0,0 @@ |
||||
## Support of indexed `@PLAINNAME@` and `@BASENAME@` |
||||
|
||||
In `custom_target()` and `configure_file()` with multiple inputs, |
||||
it is now possible to specify index for `@PLAINNAME@` and `@BASENAME@` |
||||
macros in `output`: |
||||
``` |
||||
custom_target('target_name', |
||||
output: '@PLAINNAME0@.dl', |
||||
input: [dep1, dep2], |
||||
command: cmd) |
||||
``` |
@ -1,21 +0,0 @@ |
||||
## Required kwarg on more `compiler` methods |
||||
|
||||
The following `compiler` methods now support the `required` keyword argument: |
||||
|
||||
- `compiler.compiles()` |
||||
- `compiler.links()` |
||||
- `compiler.runs()` |
||||
|
||||
```meson |
||||
cc.compiles(valid, name: 'valid', required : true) |
||||
cc.links(valid, name: 'valid', required : true) |
||||
cc.run(valid, name: 'valid', required : true) |
||||
|
||||
assert(not cc.compiles(valid, name: 'valid', required : opt)) |
||||
assert(not cc.links(valid, name: 'valid', required : opt)) |
||||
res = cc.run(valid, name: 'valid', required : opt) |
||||
assert(res.compiled()) |
||||
assert(res.returncode() == 0) |
||||
assert(res.stdout() == '') |
||||
assert(res.stderr() == '') |
||||
``` |
@ -1,6 +0,0 @@ |
||||
## The Meson test program supports a new "--interactive" argument |
||||
|
||||
`meson test --interactive` invokes tests with stdout, stdin and stderr |
||||
connected directly to the calling terminal. This can be useful when running |
||||
integration tests that run in containers or virtual machines which can spawn a |
||||
debug shell if a test fails. |
@ -1,5 +0,0 @@ |
||||
## meson test now sets the `MESON_TEST_ITERATION` environment variable |
||||
|
||||
`meson test` will now set the `MESON_TEST_ITERATION` environment variable to the |
||||
current iteration of the test. This will always be `1` unless `--repeat` is used |
||||
to run the same test multiple times. |
@ -1,6 +0,0 @@ |
||||
## The Meson test program supports a new "--max-lines" argument |
||||
|
||||
By default `meson test` only shows the last 100 lines of test output from tests |
||||
that produce large amounts of output. This default can now be changed with the |
||||
new `--max-lines` option. For example, `--max-lines=1000` will increase the |
||||
maximum number of log output lines from 100 to 1000. |
@ -1,3 +0,0 @@ |
||||
## Basic support for TI Arm Clang (tiarmclang) |
||||
|
||||
Support for TI's newer [Clang-based ARM toolchain](https://www.ti.com/tool/ARM-CGT). |
@ -1,4 +0,0 @@ |
||||
## Support for Texas Instruments C6000 C/C++ compiler |
||||
|
||||
Meson now supports the TI C6000 C/C++ compiler use for the C6000 cpu family. |
||||
The example cross file is available in `cross/ti-c6000.txt`. |
@ -1,13 +0,0 @@ |
||||
## Wayland stable protocols can be versioned |
||||
|
||||
The wayland module now accepts a version number for stable protocols. |
||||
|
||||
```meson |
||||
wl_mod = import('unstable-wayland') |
||||
|
||||
wl_mod.find_protocol( |
||||
'linux-dmabuf', |
||||
state: 'stable' |
||||
version: 1 |
||||
) |
||||
``` |
Loading…
Reference in new issue