From 4c6c89ca7afa6244ba888ce08936acb470e126aa Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sun, 20 Oct 2024 19:33:06 +0300 Subject: [PATCH] Update docs and version number for release. --- docs/markdown/Release-notes-for-1.6.0.md | 175 ++++++++++++++++++ .../add_support_for_ibm_clang_for_AIX.md | 7 - .../alias_target_of_both_libraries.md | 5 - .../snippets/always_report_deprecations.md | 29 --- docs/markdown/snippets/cargo_exp.md | 8 - .../cmake_only_public_link_flags_in_dep.md | 8 - .../snippets/default_both_libraries.md | 11 -- .../snippets/dep_as_shared_as_static.md | 8 - docs/markdown/snippets/dia_sdk.md | 3 - docs/markdown/snippets/llvm_flang.md | 9 - .../snippets/nvc_now_support_setting_std.md | 6 - docs/markdown/snippets/qt_has_tools_ignore.md | 12 -- docs/markdown/snippets/reprotester.md | 15 -- .../snippets/system_variable_in_dep.md | 3 - .../test_args_accepts_external_program.md | 10 - docs/markdown/snippets/zig_ld.md | 18 -- docs/sitemap.txt | 1 + mesonbuild/coredata.py | 2 +- 18 files changed, 177 insertions(+), 153 deletions(-) create mode 100644 docs/markdown/Release-notes-for-1.6.0.md delete mode 100644 docs/markdown/snippets/add_support_for_ibm_clang_for_AIX.md delete mode 100644 docs/markdown/snippets/alias_target_of_both_libraries.md delete mode 100644 docs/markdown/snippets/always_report_deprecations.md delete mode 100644 docs/markdown/snippets/cargo_exp.md delete mode 100644 docs/markdown/snippets/cmake_only_public_link_flags_in_dep.md delete mode 100644 docs/markdown/snippets/default_both_libraries.md delete mode 100644 docs/markdown/snippets/dep_as_shared_as_static.md delete mode 100644 docs/markdown/snippets/dia_sdk.md delete mode 100644 docs/markdown/snippets/llvm_flang.md delete mode 100644 docs/markdown/snippets/nvc_now_support_setting_std.md delete mode 100644 docs/markdown/snippets/qt_has_tools_ignore.md delete mode 100644 docs/markdown/snippets/reprotester.md delete mode 100644 docs/markdown/snippets/system_variable_in_dep.md delete mode 100644 docs/markdown/snippets/test_args_accepts_external_program.md delete mode 100644 docs/markdown/snippets/zig_ld.md diff --git a/docs/markdown/Release-notes-for-1.6.0.md b/docs/markdown/Release-notes-for-1.6.0.md new file mode 100644 index 000000000000..9e5cea6d17d5 --- /dev/null +++ b/docs/markdown/Release-notes-for-1.6.0.md @@ -0,0 +1,175 @@ +--- +title: Release 1.6.0 +short-description: Release notes for 1.6.0 +... + +# New features + +Meson 1.6.0 was released on 20 October 2024 +## Support for OpenXL compiler in AIX. + +The OpenXL compiler is now supported from Meson 1.6.0 onwards. +So currently, in AIX Operating system we support GCC and openXL compilers for Meson build system. + +Both the compilers will archive shared libraries and generate a shared object +for a shared module while using Meson in AIX. + +## `alias_target` of `both_libraries` + +Previously, when passing a [[@both_libs]] object to [[alias_target]], the alias +would only point to the shared library. It now points to both the static and the +shared library. + +## Default to printing deprecations when no minimum version is specified. + +For a long time, the [[project]] function has supported specifying the minimum +`meson_version:` needed by a project. When this is used, deprecated features +from before that version produce warnings, as do features which aren't +available in all supported versions. + +When no minimum version was specified, meson didn't warn you even about +deprecated functionality that might go away in an upcoming semver major release +of meson. + +Now, meson will treat an unspecified minimum version following semver: + +- For new features introduced in the current meson semver major cycle + (currently: all features added since 1.0) a warning is printed. Features that + have been available since the initial 1.0 release are assumed to be widely + available. + +- For features that have been deprecated by any version of meson, a warning is + printed. Since no minimum version was specified, it is assumed that the + project wishes to follow the latest and greatest functionality. + +These warnings will overlap for functionality that was both deprecated and +replaced with an alternative in the current release cycle. The combination +means that projects without a minimum version specified are assumed to want +broad compatibility with the current release cycle (1.x). + +Projects that specify a minimum `meson_version:` will continue to only receive +actionable warnings based on their current minimum version. + +## Cargo subprojects is experimental + +Cargo subprojects was intended to be experimental with no stability guarantees. +That notice was unfortunately missing from documentation. Meson will now start +warning about usage of experimental features and future releases might do breaking +changes. + +This is aligned with our general policy regarding [mixing build systems](Mixing-build-systems.md). + +## Dependencies from CMake subprojects now use only PUBLIC link flags + +Any [[@dep]] obtained from a CMake subproject (or `.wrap` with `method = cmake`) +now only includes link flags marked in CMake as `PUBLIC` or `INTERFACE`. +Flags marked as `PRIVATE` are now only applied when building the subproject +library and not when using it as a dependency. This better matches how CMake +handles link flags and fixes link errors when using some CMake projects as +subprojects. + +## New built-in option for default both_libraries + +`both_libraries` targets used to be considered as a shared library by default. +There is now the `default_both_libraries` option to change this default. + +When `default_both_libraries` is 'auto', [[both_libraries]] with dependencies +that are [[@both_libs]] themselves will link with the same kind of library. +For example, if `libA` is a [[@both_libs]] and `libB` is a [[@both_libs]] +linked with `libA` (or with an internal dependency on `libA`), +the static lib of `libB` will link with the static lib of `libA`, and the +shared lib of `libA` will link with the shared lib of `libB`. + +## New `as_static` and `as_shared` methods on internal dependencies + +[[@dep]] object returned by [[declare_dependency]] now has `.as_static()` and +`.as_shared()` methods, to convert to a dependency that prefers the `static` +or the `shared` version of the linked [[@both_libs]] target. + +When the same dependency is used without those methods, the +`default_both_libraries` option determines which version is used. + +## Support for DIA SDK + +Added support for Windows Debug Interface Access SDK (DIA SDK) dependency. It allows reading with MSVC debugging information (.PDB format). This dependency can only be used on Windows, with msvc, clang or clang-cl compiler. + +## Support for LLVM-based flang compiler + +Added basic handling for the [flang](https://flang.llvm.org/docs/) compiler +that's now part of LLVM. It is the successor of another compiler named +[flang](https://github.com/flang-compiler/flang) by largely the same +group of developers, who now refer to the latter as "classic flang". + +Meson already supports classic flang, and the LLVM-based flang now +uses the compiler-id `'llvm-flang'`. + +## nvc and nvc++ now support setting std + +The following standards are available for nvc: c89, c90, c99, c11, +c17, c18, gnu90, gnu89, gnu99, gnu11, gnu17, gnu18. For nvc++: +c++98, c++03, c++11, c++14, c++17, c++20, c++23, gnu++98, gnu++03, +gnu++11, gnu++14, gnu++17, gnu++20 + +## Tools can be selected when calling `has_tools()` on the Qt modules + +When checking for the presence of Qt tools, you can now explictly ask Meson +which tools you need. This is particularly useful when you do not need +`lrelease` because you are not shipping any translations. For example: + +```meson +qt6_mod = import('qt6') +qt6_mod.has_tools(required: true, tools: ['moc', 'uic', 'rcc']) +``` + +valid tools are `moc`, `uic`, `rcc` and `lrelease`. + +## Simple tool to test build reproducibility + +Meson now ships with a command for testing whether your project can be +[built reprodicibly](https://reproducible-builds.org/). It can be used +by running a command like the following in the source root of your +project: + + meson reprotest --intermediaries -- --buildtype=debugoptimized + +All command line options after the `--` are passed to the build +invocations directly. + +This tool is not meant to be exhaustive, but instead easy and +convenient to run. It will detect some but definitely not all +reproducibility issues. + +## Support for variable in system dependencies + +System Dependency method `get_variable()` now supports `system` variable. + +## test() and benchmark() functions accept new types + +`test` and `benchmark` now accept ExternalPrograms (as returned by +`find_program`) in the `args` list. This can be useful where the test +executable is a wrapper which invokes another program given as an +argument. + +```meson +test('some_test', find_program('sudo'), args : [ find_program('sh'), 'script.sh' ]) +``` + +## Zig 0.11 can be used as a C/C++ compiler frontend + +Zig offers +[a C/C++ frontend](https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html) as a drop-in replacement for Clang. It worked fine with Meson up to Zig 0.10. Since 0.11, Zig's +dynamic linker reports itself as `zig ld`, which wasn't known to Meson. Meson now correctly handles +Zig's linker. + +You can use Zig's frontend via a [machine file](Machine-files.md): + +```ini +[binaries] +c = ['zig', 'cc'] +cpp = ['zig', 'c++'] +ar = ['zig', 'ar'] +ranlib = ['zig', 'ranlib'] +lib = ['zig', 'lib'] +dlltool = ['zig', 'dlltool'] +``` + diff --git a/docs/markdown/snippets/add_support_for_ibm_clang_for_AIX.md b/docs/markdown/snippets/add_support_for_ibm_clang_for_AIX.md deleted file mode 100644 index 526bbb3cc41d..000000000000 --- a/docs/markdown/snippets/add_support_for_ibm_clang_for_AIX.md +++ /dev/null @@ -1,7 +0,0 @@ -## Support for OpenXL compiler in AIX. - -The OpenXL compiler is now supported from Meson 1.6.0 onwards. -So currently, in AIX Operating system we support GCC and openXL compilers for Meson build system. - -Both the compilers will archive shared libraries and generate a shared object -for a shared module while using Meson in AIX. diff --git a/docs/markdown/snippets/alias_target_of_both_libraries.md b/docs/markdown/snippets/alias_target_of_both_libraries.md deleted file mode 100644 index ab77a6556576..000000000000 --- a/docs/markdown/snippets/alias_target_of_both_libraries.md +++ /dev/null @@ -1,5 +0,0 @@ -## `alias_target` of `both_libraries` - -Previously, when passing a [[@both_libs]] object to [[alias_target]], the alias -would only point to the shared library. It now points to both the static and the -shared library. diff --git a/docs/markdown/snippets/always_report_deprecations.md b/docs/markdown/snippets/always_report_deprecations.md deleted file mode 100644 index fbf4cdf4701e..000000000000 --- a/docs/markdown/snippets/always_report_deprecations.md +++ /dev/null @@ -1,29 +0,0 @@ -## Default to printing deprecations when no minimum version is specified. - -For a long time, the [[project]] function has supported specifying the minimum -`meson_version:` needed by a project. When this is used, deprecated features -from before that version produce warnings, as do features which aren't -available in all supported versions. - -When no minimum version was specified, meson didn't warn you even about -deprecated functionality that might go away in an upcoming semver major release -of meson. - -Now, meson will treat an unspecified minimum version following semver: - -- For new features introduced in the current meson semver major cycle - (currently: all features added since 1.0) a warning is printed. Features that - have been available since the initial 1.0 release are assumed to be widely - available. - -- For features that have been deprecated by any version of meson, a warning is - printed. Since no minimum version was specified, it is assumed that the - project wishes to follow the latest and greatest functionality. - -These warnings will overlap for functionality that was both deprecated and -replaced with an alternative in the current release cycle. The combination -means that projects without a minimum version specified are assumed to want -broad compatibility with the current release cycle (1.x). - -Projects that specify a minimum `meson_version:` will continue to only receive -actionable warnings based on their current minimum version. diff --git a/docs/markdown/snippets/cargo_exp.md b/docs/markdown/snippets/cargo_exp.md deleted file mode 100644 index 34d379a70c4b..000000000000 --- a/docs/markdown/snippets/cargo_exp.md +++ /dev/null @@ -1,8 +0,0 @@ -## Cargo subprojects is experimental - -Cargo subprojects was intended to be experimental with no stability guarantees. -That notice was unfortunately missing from documentation. Meson will now start -warning about usage of experimental features and future releases might do breaking -changes. - -This is aligned with our general policy regarding [mixing build systems](Mixing-build-systems.md). diff --git a/docs/markdown/snippets/cmake_only_public_link_flags_in_dep.md b/docs/markdown/snippets/cmake_only_public_link_flags_in_dep.md deleted file mode 100644 index 83ccfd439166..000000000000 --- a/docs/markdown/snippets/cmake_only_public_link_flags_in_dep.md +++ /dev/null @@ -1,8 +0,0 @@ -## Dependencies from CMake subprojects now use only PUBLIC link flags - -Any [[@dep]] obtained from a CMake subproject (or `.wrap` with `method = cmake`) -now only includes link flags marked in CMake as `PUBLIC` or `INTERFACE`. -Flags marked as `PRIVATE` are now only applied when building the subproject -library and not when using it as a dependency. This better matches how CMake -handles link flags and fixes link errors when using some CMake projects as -subprojects. diff --git a/docs/markdown/snippets/default_both_libraries.md b/docs/markdown/snippets/default_both_libraries.md deleted file mode 100644 index dc9cb6bca3a8..000000000000 --- a/docs/markdown/snippets/default_both_libraries.md +++ /dev/null @@ -1,11 +0,0 @@ -## New built-in option for default both_libraries - -`both_libraries` targets used to be considered as a shared library by default. -There is now the `default_both_libraries` option to change this default. - -When `default_both_libraries` is 'auto', [[both_libraries]] with dependencies -that are [[@both_libs]] themselves will link with the same kind of library. -For example, if `libA` is a [[@both_libs]] and `libB` is a [[@both_libs]] -linked with `libA` (or with an internal dependency on `libA`), -the static lib of `libB` will link with the static lib of `libA`, and the -shared lib of `libA` will link with the shared lib of `libB`. diff --git a/docs/markdown/snippets/dep_as_shared_as_static.md b/docs/markdown/snippets/dep_as_shared_as_static.md deleted file mode 100644 index a84e9eeaa182..000000000000 --- a/docs/markdown/snippets/dep_as_shared_as_static.md +++ /dev/null @@ -1,8 +0,0 @@ -## New `as_static` and `as_shared` methods on internal dependencies - -[[@dep]] object returned by [[declare_dependency]] now has `.as_static()` and -`.as_shared()` methods, to convert to a dependency that prefers the `static` -or the `shared` version of the linked [[@both_libs]] target. - -When the same dependency is used without those methods, the -`default_both_libraries` option determines which version is used. diff --git a/docs/markdown/snippets/dia_sdk.md b/docs/markdown/snippets/dia_sdk.md deleted file mode 100644 index eb704230da4f..000000000000 --- a/docs/markdown/snippets/dia_sdk.md +++ /dev/null @@ -1,3 +0,0 @@ -## Support for DIA SDK - -Added support for Windows Debug Interface Access SDK (DIA SDK) dependency. It allows reading with MSVC debugging information (.PDB format). This dependency can only be used on Windows, with msvc, clang or clang-cl compiler. diff --git a/docs/markdown/snippets/llvm_flang.md b/docs/markdown/snippets/llvm_flang.md deleted file mode 100644 index 4575fe054ca9..000000000000 --- a/docs/markdown/snippets/llvm_flang.md +++ /dev/null @@ -1,9 +0,0 @@ -## Support for LLVM-based flang compiler - -Added basic handling for the [flang](https://flang.llvm.org/docs/) compiler -that's now part of LLVM. It is the successor of another compiler named -[flang](https://github.com/flang-compiler/flang) by largely the same -group of developers, who now refer to the latter as "classic flang". - -Meson already supports classic flang, and the LLVM-based flang now -uses the compiler-id `'llvm-flang'`. diff --git a/docs/markdown/snippets/nvc_now_support_setting_std.md b/docs/markdown/snippets/nvc_now_support_setting_std.md deleted file mode 100644 index 5e537ae9fb6b..000000000000 --- a/docs/markdown/snippets/nvc_now_support_setting_std.md +++ /dev/null @@ -1,6 +0,0 @@ -## nvc and nvc++ now support setting std - -The following standards are available for nvc: c89, c90, c99, c11, -c17, c18, gnu90, gnu89, gnu99, gnu11, gnu17, gnu18. For nvc++: -c++98, c++03, c++11, c++14, c++17, c++20, c++23, gnu++98, gnu++03, -gnu++11, gnu++14, gnu++17, gnu++20 diff --git a/docs/markdown/snippets/qt_has_tools_ignore.md b/docs/markdown/snippets/qt_has_tools_ignore.md deleted file mode 100644 index 4def48db2b51..000000000000 --- a/docs/markdown/snippets/qt_has_tools_ignore.md +++ /dev/null @@ -1,12 +0,0 @@ -## Tools can be selected when calling `has_tools()` on the Qt modules - -When checking for the presence of Qt tools, you can now explictly ask Meson -which tools you need. This is particularly useful when you do not need -`lrelease` because you are not shipping any translations. For example: - -```meson -qt6_mod = import('qt6') -qt6_mod.has_tools(required: true, tools: ['moc', 'uic', 'rcc']) -``` - -valid tools are `moc`, `uic`, `rcc` and `lrelease`. diff --git a/docs/markdown/snippets/reprotester.md b/docs/markdown/snippets/reprotester.md deleted file mode 100644 index dc86acdb988d..000000000000 --- a/docs/markdown/snippets/reprotester.md +++ /dev/null @@ -1,15 +0,0 @@ -## Simple tool to test build reproducibility - -Meson now ships with a command for testing whether your project can be -[built reprodicibly](https://reproducible-builds.org/). It can be used -by running a command like the following in the source root of your -project: - - meson reprotest --intermediaries -- --buildtype=debugoptimized - -All command line options after the `--` are passed to the build -invocations directly. - -This tool is not meant to be exhaustive, but instead easy and -convenient to run. It will detect some but definitely not all -reproducibility issues. diff --git a/docs/markdown/snippets/system_variable_in_dep.md b/docs/markdown/snippets/system_variable_in_dep.md deleted file mode 100644 index 0cd936322bd9..000000000000 --- a/docs/markdown/snippets/system_variable_in_dep.md +++ /dev/null @@ -1,3 +0,0 @@ -## Support for variable in system dependencies - -System Dependency method `get_variable()` now supports `system` variable. diff --git a/docs/markdown/snippets/test_args_accepts_external_program.md b/docs/markdown/snippets/test_args_accepts_external_program.md deleted file mode 100644 index d730ad5f3be5..000000000000 --- a/docs/markdown/snippets/test_args_accepts_external_program.md +++ /dev/null @@ -1,10 +0,0 @@ -## test() and benchmark() functions accept new types - -`test` and `benchmark` now accept ExternalPrograms (as returned by -`find_program`) in the `args` list. This can be useful where the test -executable is a wrapper which invokes another program given as an -argument. - -```meson -test('some_test', find_program('sudo'), args : [ find_program('sh'), 'script.sh' ]) -``` diff --git a/docs/markdown/snippets/zig_ld.md b/docs/markdown/snippets/zig_ld.md deleted file mode 100644 index 8835c38ca4f7..000000000000 --- a/docs/markdown/snippets/zig_ld.md +++ /dev/null @@ -1,18 +0,0 @@ -## Zig 0.11 can be used as a C/C++ compiler frontend - -Zig offers -[a C/C++ frontend](https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html) as a drop-in replacement for Clang. It worked fine with Meson up to Zig 0.10. Since 0.11, Zig's -dynamic linker reports itself as `zig ld`, which wasn't known to Meson. Meson now correctly handles -Zig's linker. - -You can use Zig's frontend via a [machine file](Machine-files.md): - -```ini -[binaries] -c = ['zig', 'cc'] -cpp = ['zig', 'c++'] -ar = ['zig', 'ar'] -ranlib = ['zig', 'ranlib'] -lib = ['zig', 'lib'] -dlltool = ['zig', 'dlltool'] -``` diff --git a/docs/sitemap.txt b/docs/sitemap.txt index 79fdeeffe70f..8d7d157e1506 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.6.0.md Release-notes-for-1.5.0.md Release-notes-for-1.4.0.md Release-notes-for-1.3.0.md diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index ced1eecdac63..963aedb402d4 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -74,7 +74,7 @@ class SharedCMDOptions(Protocol): # # 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.6.0.rc2' +version = '1.6.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