From 5d651e76b5b6dba5dd03ffec609719b02d703bb7 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sun, 14 Feb 2021 21:28:44 +0200 Subject: [PATCH] Set up release 0.57. --- docs/markdown/Release-notes-for-0.57.0.md | 353 ++++++++++++++++++ docs/markdown/snippets/buildtyperemains.md | 12 - .../snippets/cmake_package_version.md | 5 - .../snippets/compiler_method_internal_deps.md | 6 - docs/markdown/snippets/customtarget_env.md | 11 - docs/markdown/snippets/destdir.md | 11 - docs/markdown/snippets/dist_subproject.md | 16 - docs/markdown/snippets/external_project.md | 13 - docs/markdown/snippets/fs_read.md | 40 -- .../markdown/snippets/gnome_install_script.md | 9 - docs/markdown/snippets/install_dry_run.md | 4 - .../snippets/keys_of_configuration_data.md | 4 - docs/markdown/snippets/lto_mode.md | 5 - docs/markdown/snippets/lto_threads.md | 7 - docs/markdown/snippets/meson_test_depends.md | 16 - .../markdown/snippets/meson_test_interrupt.md | 5 - docs/markdown/snippets/meson_test_logs.md | 29 -- .../snippets/msvc_argument_changes.md | 16 - docs/markdown/snippets/msvc_no_zi.md | 14 - .../snippets/pass_file_to_add_script.md | 15 - docs/markdown/snippets/prelink.md | 6 - docs/markdown/snippets/pythonbump.md | 6 - docs/markdown/snippets/qt6_module.md | 8 - .../rewrite_allow_double_slash_project_id.md | 7 - docs/markdown/snippets/rust_std_option.md | 5 - .../snippets/rust_test_format_support.md | 4 - docs/markdown/snippets/summary_alignment.md | 4 - docs/markdown/snippets/summary_prog_dep.md | 4 - docs/markdown/snippets/test_timeout.md | 9 - .../markdown/snippets/unstable-rust-module.md | 5 - .../snippets/vala_unity_builds_disabled.md | 7 - docs/markdown/snippets/versionfile.md | 12 - docs/sitemap.txt | 1 + mesonbuild/coredata.py | 2 +- 34 files changed, 355 insertions(+), 316 deletions(-) create mode 100644 docs/markdown/Release-notes-for-0.57.0.md delete mode 100644 docs/markdown/snippets/buildtyperemains.md delete mode 100644 docs/markdown/snippets/cmake_package_version.md delete mode 100644 docs/markdown/snippets/compiler_method_internal_deps.md delete mode 100644 docs/markdown/snippets/customtarget_env.md delete mode 100644 docs/markdown/snippets/destdir.md delete mode 100644 docs/markdown/snippets/dist_subproject.md delete mode 100644 docs/markdown/snippets/external_project.md delete mode 100644 docs/markdown/snippets/fs_read.md delete mode 100644 docs/markdown/snippets/gnome_install_script.md delete mode 100644 docs/markdown/snippets/install_dry_run.md delete mode 100644 docs/markdown/snippets/keys_of_configuration_data.md delete mode 100644 docs/markdown/snippets/lto_mode.md delete mode 100644 docs/markdown/snippets/lto_threads.md delete mode 100644 docs/markdown/snippets/meson_test_depends.md delete mode 100644 docs/markdown/snippets/meson_test_interrupt.md delete mode 100644 docs/markdown/snippets/meson_test_logs.md delete mode 100644 docs/markdown/snippets/msvc_argument_changes.md delete mode 100644 docs/markdown/snippets/msvc_no_zi.md delete mode 100644 docs/markdown/snippets/pass_file_to_add_script.md delete mode 100644 docs/markdown/snippets/prelink.md delete mode 100644 docs/markdown/snippets/pythonbump.md delete mode 100644 docs/markdown/snippets/qt6_module.md delete mode 100644 docs/markdown/snippets/rewrite_allow_double_slash_project_id.md delete mode 100644 docs/markdown/snippets/rust_std_option.md delete mode 100644 docs/markdown/snippets/rust_test_format_support.md delete mode 100644 docs/markdown/snippets/summary_alignment.md delete mode 100644 docs/markdown/snippets/summary_prog_dep.md delete mode 100644 docs/markdown/snippets/test_timeout.md delete mode 100644 docs/markdown/snippets/unstable-rust-module.md delete mode 100644 docs/markdown/snippets/vala_unity_builds_disabled.md delete mode 100644 docs/markdown/snippets/versionfile.md diff --git a/docs/markdown/Release-notes-for-0.57.0.md b/docs/markdown/Release-notes-for-0.57.0.md new file mode 100644 index 000000000..93db6832d --- /dev/null +++ b/docs/markdown/Release-notes-for-0.57.0.md @@ -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 `/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 + git bisect run meson test + +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. + diff --git a/docs/markdown/snippets/buildtyperemains.md b/docs/markdown/snippets/buildtyperemains.md deleted file mode 100644 index 4b27187ca..000000000 --- a/docs/markdown/snippets/buildtyperemains.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/cmake_package_version.md b/docs/markdown/snippets/cmake_package_version.md deleted file mode 100644 index 72446dd4d..000000000 --- a/docs/markdown/snippets/cmake_package_version.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/compiler_method_internal_deps.md b/docs/markdown/snippets/compiler_method_internal_deps.md deleted file mode 100644 index bde6b4fc4..000000000 --- a/docs/markdown/snippets/compiler_method_internal_deps.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/customtarget_env.md b/docs/markdown/snippets/customtarget_env.md deleted file mode 100644 index f2d651b78..000000000 --- a/docs/markdown/snippets/customtarget_env.md +++ /dev/null @@ -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']) -``` diff --git a/docs/markdown/snippets/destdir.md b/docs/markdown/snippets/destdir.md deleted file mode 100644 index c698c9916..000000000 --- a/docs/markdown/snippets/destdir.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/dist_subproject.md b/docs/markdown/snippets/dist_subproject.md deleted file mode 100644 index a3127ddc8..000000000 --- a/docs/markdown/snippets/dist_subproject.md +++ /dev/null @@ -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 -``` diff --git a/docs/markdown/snippets/external_project.md b/docs/markdown/snippets/external_project.md deleted file mode 100644 index 1608d49a4..000000000 --- a/docs/markdown/snippets/external_project.md +++ /dev/null @@ -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 `/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`). diff --git a/docs/markdown/snippets/fs_read.md b/docs/markdown/snippets/fs_read.md deleted file mode 100644 index 05c215a1c..000000000 --- a/docs/markdown/snippets/fs_read.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/gnome_install_script.md b/docs/markdown/snippets/gnome_install_script.md deleted file mode 100644 index 03fcfe496..000000000 --- a/docs/markdown/snippets/gnome_install_script.md +++ /dev/null @@ -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`. diff --git a/docs/markdown/snippets/install_dry_run.md b/docs/markdown/snippets/install_dry_run.md deleted file mode 100644 index 8106a0668..000000000 --- a/docs/markdown/snippets/install_dry_run.md +++ /dev/null @@ -1,4 +0,0 @@ -## meson install --dry-run - -New option to meson install command that does not actually install files, but -only print messages. diff --git a/docs/markdown/snippets/keys_of_configuration_data.md b/docs/markdown/snippets/keys_of_configuration_data.md deleted file mode 100644 index c0cbfc222..000000000 --- a/docs/markdown/snippets/keys_of_configuration_data.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/lto_mode.md b/docs/markdown/snippets/lto_mode.md deleted file mode 100644 index c1df0661e..000000000 --- a/docs/markdown/snippets/lto_mode.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/lto_threads.md b/docs/markdown/snippets/lto_threads.md deleted file mode 100644 index 77c804758..000000000 --- a/docs/markdown/snippets/lto_threads.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/meson_test_depends.md b/docs/markdown/snippets/meson_test_depends.md deleted file mode 100644 index 46ec32875..000000000 --- a/docs/markdown/snippets/meson_test_depends.md +++ /dev/null @@ -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 - git bisect run meson test - -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`. diff --git a/docs/markdown/snippets/meson_test_interrupt.md b/docs/markdown/snippets/meson_test_interrupt.md deleted file mode 100644 index 2d1ed262c..000000000 --- a/docs/markdown/snippets/meson_test_interrupt.md +++ /dev/null @@ -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`. diff --git a/docs/markdown/snippets/meson_test_logs.md b/docs/markdown/snippets/meson_test_logs.md deleted file mode 100644 index 965ba6c3c..000000000 --- a/docs/markdown/snippets/meson_test_logs.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/msvc_argument_changes.md b/docs/markdown/snippets/msvc_argument_changes.md deleted file mode 100644 index 26f849b12..000000000 --- a/docs/markdown/snippets/msvc_argument_changes.md +++ /dev/null @@ -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. \ No newline at end of file diff --git a/docs/markdown/snippets/msvc_no_zi.md b/docs/markdown/snippets/msvc_no_zi.md deleted file mode 100644 index 711598d58..000000000 --- a/docs/markdown/snippets/msvc_no_zi.md +++ /dev/null @@ -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. \ No newline at end of file diff --git a/docs/markdown/snippets/pass_file_to_add_script.md b/docs/markdown/snippets/pass_file_to_add_script.md deleted file mode 100644 index 96a4aa2f7..000000000 --- a/docs/markdown/snippets/pass_file_to_add_script.md +++ /dev/null @@ -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) -``` diff --git a/docs/markdown/snippets/prelink.md b/docs/markdown/snippets/prelink.md deleted file mode 100644 index 26f5bbbc2..000000000 --- a/docs/markdown/snippets/prelink.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/pythonbump.md b/docs/markdown/snippets/pythonbump.md deleted file mode 100644 index 5a3129170..000000000 --- a/docs/markdown/snippets/pythonbump.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/qt6_module.md b/docs/markdown/snippets/qt6_module.md deleted file mode 100644 index 0e2145e71..000000000 --- a/docs/markdown/snippets/qt6_module.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/rewrite_allow_double_slash_project_id.md b/docs/markdown/snippets/rewrite_allow_double_slash_project_id.md deleted file mode 100644 index 1fa32f7f7..000000000 --- a/docs/markdown/snippets/rewrite_allow_double_slash_project_id.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/rust_std_option.md b/docs/markdown/snippets/rust_std_option.md deleted file mode 100644 index 5b1ba3d52..000000000 --- a/docs/markdown/snippets/rust_std_option.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/rust_test_format_support.md b/docs/markdown/snippets/rust_test_format_support.md deleted file mode 100644 index 969eb570e..000000000 --- a/docs/markdown/snippets/rust_test_format_support.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/summary_alignment.md b/docs/markdown/snippets/summary_alignment.md deleted file mode 100644 index 49e8748de..000000000 --- a/docs/markdown/snippets/summary_alignment.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/summary_prog_dep.md b/docs/markdown/snippets/summary_prog_dep.md deleted file mode 100644 index 6f0262f2d..000000000 --- a/docs/markdown/snippets/summary_prog_dep.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/test_timeout.md b/docs/markdown/snippets/test_timeout.md deleted file mode 100644 index e436d2efa..000000000 --- a/docs/markdown/snippets/test_timeout.md +++ /dev/null @@ -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. - diff --git a/docs/markdown/snippets/unstable-rust-module.md b/docs/markdown/snippets/unstable-rust-module.md deleted file mode 100644 index 87ffe3306..000000000 --- a/docs/markdown/snippets/unstable-rust-module.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/vala_unity_builds_disabled.md b/docs/markdown/snippets/vala_unity_builds_disabled.md deleted file mode 100644 index 80e65231d..000000000 --- a/docs/markdown/snippets/vala_unity_builds_disabled.md +++ /dev/null @@ -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. diff --git a/docs/markdown/snippets/versionfile.md b/docs/markdown/snippets/versionfile.md deleted file mode 100644 index a18803ecd..000000000 --- a/docs/markdown/snippets/versionfile.md +++ /dev/null @@ -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. diff --git a/docs/sitemap.txt b/docs/sitemap.txt index 3164440aa..de98cd015 100644 --- a/docs/sitemap.txt +++ b/docs/sitemap.txt @@ -81,6 +81,7 @@ index.md Shipping-prebuilt-binaries-as-wraps.md fallback-wraptool.md Release-notes.md + Release-notes-for-0.57.0.md Release-notes-for-0.56.0.md Release-notes-for-0.55.0.md Release-notes-for-0.54.0.md diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 232c6084a..9531319d6 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -41,7 +41,7 @@ if T.TYPE_CHECKING: KeyedOptionDictType = T.Union[T.Dict['OptionKey', 'UserOption[T.Any]'], OptionOverrideProxy] CompilerCheckCacheKey = T.Tuple[T.Tuple[str, ...], str, str, T.Tuple[str, ...], str] -version = '0.57.0.rc1' +version = '0.57.0' backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'vs2019', 'xcode'] default_yielding = False