diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2024-07-10 20:25:01 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2024-07-10 20:25:01 +0300 |
commit | 183084a9e854ff627467279384330750016bad92 (patch) | |
tree | ba40a940aee6b036b34d0ca01da222a95a26e98b | |
parent | 07777c725cf82a5ef4bb5c6d33fdcdbe3d688464 (diff) | |
download | meson-183084a9e854ff627467279384330750016bad92.zip meson-183084a9e854ff627467279384330750016bad92.tar.gz meson-183084a9e854ff627467279384330750016bad92.tar.bz2 |
Release 1.5.0 time.1.5.0
22 files changed, 216 insertions, 188 deletions
diff --git a/docs/markdown/Release-notes-for-1.5.0.md b/docs/markdown/Release-notes-for-1.5.0.md new file mode 100644 index 0000000..7dfea9a --- /dev/null +++ b/docs/markdown/Release-notes-for-1.5.0.md @@ -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 +) +``` + diff --git a/docs/markdown/snippets/bztar_support.md b/docs/markdown/snippets/bztar_support.md deleted file mode 100644 index 3ee4a91..0000000 --- a/docs/markdown/snippets/bztar_support.md +++ /dev/null @@ -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`. diff --git a/docs/markdown/snippets/cargo_dep_name.md b/docs/markdown/snippets/cargo_dep_name.md deleted file mode 100644 index b769f2b..0000000 --- a/docs/markdown/snippets/cargo_dep_name.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/cargo_lock.md b/docs/markdown/snippets/cargo_lock.md deleted file mode 100644 index e38c5ed..0000000 --- a/docs/markdown/snippets/cargo_lock.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/cmake_build_type.md b/docs/markdown/snippets/cmake_build_type.md deleted file mode 100644 index af9e84d..0000000 --- a/docs/markdown/snippets/cmake_build_type.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/compiler_run.md b/docs/markdown/snippets/compiler_run.md deleted file mode 100644 index f4b0847..0000000 --- a/docs/markdown/snippets/compiler_run.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/find_library_name.md b/docs/markdown/snippets/find_library_name.md deleted file mode 100644 index e7b0e1a..0000000 --- a/docs/markdown/snippets/find_library_name.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/find_program_version_argument.md b/docs/markdown/snippets/find_program_version_argument.md deleted file mode 100644 index 99fe621..0000000 --- a/docs/markdown/snippets/find_program_version_argument.md +++ /dev/null @@ -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`. diff --git a/docs/markdown/snippets/meson_configure_options_changes.md b/docs/markdown/snippets/meson_configure_options_changes.md deleted file mode 100644 index c86792c..0000000 --- a/docs/markdown/snippets/meson_configure_options_changes.md +++ /dev/null @@ -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 -``` diff --git a/docs/markdown/snippets/meson_format_cmd.md b/docs/markdown/snippets/meson_format_cmd.md deleted file mode 100644 index 390f15d..0000000 --- a/docs/markdown/snippets/meson_format_cmd.md +++ /dev/null @@ -1,4 +0,0 @@ -## New meson format command - -This command is similar to `muon fmt` and allows to format a `meson.build` -document. diff --git a/docs/markdown/snippets/null_terminated_string_arg.md b/docs/markdown/snippets/null_terminated_string_arg.md deleted file mode 100644 index 2ba1755..0000000 --- a/docs/markdown/snippets/null_terminated_string_arg.md +++ /dev/null @@ -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 -``` diff --git a/docs/markdown/snippets/objfw_dep.md b/docs/markdown/snippets/objfw_dep.md deleted file mode 100644 index e65da28..0000000 --- a/docs/markdown/snippets/objfw_dep.md +++ /dev/null @@ -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]) -``` diff --git a/docs/markdown/snippets/pln_bsn_support.md b/docs/markdown/snippets/pln_bsn_support.md deleted file mode 100644 index 394339f..0000000 --- a/docs/markdown/snippets/pln_bsn_support.md +++ /dev/null @@ -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) -``` diff --git a/docs/markdown/snippets/requires_kwarg_on_more_compiler_methods.md b/docs/markdown/snippets/requires_kwarg_on_more_compiler_methods.md deleted file mode 100644 index 693313c..0000000 --- a/docs/markdown/snippets/requires_kwarg_on_more_compiler_methods.md +++ /dev/null @@ -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() == '') -``` diff --git a/docs/markdown/snippets/test_interactive.md b/docs/markdown/snippets/test_interactive.md deleted file mode 100644 index 907147f..0000000 --- a/docs/markdown/snippets/test_interactive.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/test_iteration.md b/docs/markdown/snippets/test_iteration.md deleted file mode 100644 index 67daf27..0000000 --- a/docs/markdown/snippets/test_iteration.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/test_max_lines.md b/docs/markdown/snippets/test_max_lines.md deleted file mode 100644 index ea10fbb..0000000 --- a/docs/markdown/snippets/test_max_lines.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/ti_armclang.md b/docs/markdown/snippets/ti_armclang.md deleted file mode 100644 index 7f0f912..0000000 --- a/docs/markdown/snippets/ti_armclang.md +++ /dev/null @@ -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). diff --git a/docs/markdown/snippets/ti_c6000_compiler_support.md b/docs/markdown/snippets/ti_c6000_compiler_support.md deleted file mode 100644 index 03533e6..0000000 --- a/docs/markdown/snippets/ti_c6000_compiler_support.md +++ /dev/null @@ -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`. diff --git a/docs/markdown/snippets/wayland_stable_prot_version.md b/docs/markdown/snippets/wayland_stable_prot_version.md deleted file mode 100644 index 78d0a50..0000000 --- a/docs/markdown/snippets/wayland_stable_prot_version.md +++ /dev/null @@ -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 -) -``` diff --git a/docs/sitemap.txt b/docs/sitemap.txt index 04f7fda..79fdeef 100644 --- a/docs/sitemap.txt +++ b/docs/sitemap.txt @@ -88,6 +88,7 @@ index.md Wrap-best-practices-and-tips.md Shipping-prebuilt-binaries-as-wraps.md Release-notes.md + Release-notes-for-1.5.0.md Release-notes-for-1.4.0.md Release-notes-for-1.3.0.md Release-notes-for-1.2.0.md diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index afe4c1b..642e334 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -72,7 +72,7 @@ if T.TYPE_CHECKING: # # Pip requires that RCs are named like this: '0.1.0.rc1' # But the corresponding Git tag needs to be '0.1.0rc1' -version = '1.5.0.rc3' +version = '1.5.0' # The next stable version when we are in dev. This is used to allow projects to # require meson version >=1.2.0 when using 1.1.99. FeatureNew won't warn when |