diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-07-18 12:59:40 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-07-18 13:39:53 +0300 |
commit | 116e4d4850a61a740d2a8642866452740e359750 (patch) | |
tree | 2de27f2a299f9cd9482ad982dabe0ba408f446af | |
parent | 7b8fecf5734503f818ac978c279629d3564ac970 (diff) | |
download | meson-0.59.0.zip meson-0.59.0.tar.gz meson-0.59.0.tar.bz2 |
Set up the 0.59.0 release.0.59.0
20 files changed, 237 insertions, 212 deletions
diff --git a/docs/markdown/Release-notes-for-0.59.0.md b/docs/markdown/Release-notes-for-0.59.0.md new file mode 100644 index 0000000..b6ce654 --- /dev/null +++ b/docs/markdown/Release-notes-for-0.59.0.md @@ -0,0 +1,235 @@ +--- +title: Release 0.59.0 +short-description: Release notes for 0.59.0 +... + +# New features + +## Unescaped variables in pkgconfig files + +Spaces in variable values are escaped with `\`, this is required in the case the +value is a path that and is used in `cflags` or `libs` arguments. This was an +undocumented behaviour that caused issues in the case the variable is a space +separated list of items. + +For backward compatibility reasons this behaviour could not be changed, new +keyword arguments have thus been added: `unescaped_variables` and +`unescaped_uninstalled_variables`. + +```meson +pkg = import('pkgconfig') +... +pkg.generate(lib, + variables: { + 'mypath': '/path/with spaces/are/escaped', + }, + unescaped_variables: { + 'mylist': 'Hello World Is Not Escaped', + }, +) +``` + +## The custom_target() function now accepts a feed argument + +It is now possible to provide a `feed: true` argument to `custom_target()` to +pipe the target's input file to the program's standard input. + +## Separate functions for qt preprocess + +`qt.preprocess` is a large, complicated function that does a lot of things, +a new set of `compile_*` functions have been provided as well. These are +conceptually simpler, as they do a single thing. + +## Cython as as first class language + +Meson now supports Cython as a first class language. This means you can write: + +```meson +project('my project', 'cython') + +py = import('python').find_installation() +dep_py = py.dependency() + +py.extension_module( + 'foo', + 'foo.pyx', + dependencies : dep_py, +) +``` + +And avoid the step through a generator that was previously required. + +## Support for the Wine Resource Compiler + +Users can now choose `wrc` as the `windres` binary in their cross files and +`windows.compile_resources` will handle it correctly. Together with `winegcc` +patches in Wine 6.12 this enables basic support for compiling projects as a +winelib by specifying `winegcc`/`wineg++` as the compiler and `wrc` as the +resource compiler in a cross file. + +## New `vs2012` and `vs2013` backend options + +Adds the ability to generate Visual Studio 2012 and 2013 projects. This is an +extension to the existing Visual Studio 2010 projects so that it is no longer +required to manually upgrade the generated Visual Studio 2010 projects. + +Generating Visual Studio 2010 projects has also been fixed since its developer +command prompt does not provide a `%VisualStudioVersion%` envvar. + +## Developer environment + +Expand the support for the `link_whole:` project option for pre-Visual Studio 2015 +Update 2, where previously Visual Studio 2015 Update 2 or later was required for +this, for the Ninja backend as well as the vs2010 (as well as the newly-added +vs2012 and vs2013 backends). + +## Fs Module now accepts files objects + +It is now possible to define a `files()` object and run most Fs module +functions on the file, rather than passing a string and hoping it is in the +same directory. + + +## Compiler argument checking for `get_supported_arguments` + +The compiler method `get_supported_arguments` now supports +a new keyword argument named `checked` that can be set to +one of `warn`, `require` or `off` (defaults to `off`) to +enforce argument checks. + +## New custom dependency for libintl + +Meson can now find the library needed for translating messages via gettext. +This works both on systems where libc provides gettext, such as GNU or musl, +and on systems where the gettext project's standalone intl support library is +required, such as macOS. + +Rather than doing something such as: + +``` +intl_dep = dependency('', required: false) + +if cc.has_function('ngettext') + intl_found = true +else + intl_dep = cc.find_library('intl', required: false) + intl_found = intl_dep.found() +endif + +if intl_found + # build options that need gettext + conf.set('ENABLE_NLS', 1) +endif +``` + +one may simply use: + +``` +intl_dep = dependency('intl') + +if intl_dep.found() + # build options that need gettext + conf.set('ENABLE_NLS', 1) +endif +``` + +## Parallelized `meson subprojects` commands + +All `meson subprojects` commands are now run on each subproject in parallel by +default. The number of processes can be controlled with `--num-processes` +argument. + +This speeds up considerably IO-bound operations such as downloads and git fetch. + +## Using Vala no longer requires C in the project languages + +Meson will now add C automatically. Since the use of C is an implementation +detail of Vala, Meson shouldn't require users to add it. + +## The `import()` function gains `required` and `disabler` arguments + +In addition, modules now have a `found()` method, like programs and +dependencies. This allows them to be conditionally required, and used in most +places that an object with a `found()` method can be. + +## Objective C/C++ standard versions + +Objective C and C++ compilations will from now on use the language +versions set in `c_std` and `cpp_std`, respectively. It is not +possible to set the language version separately for Objective C and +plain C. + +## Qt.preprocess source arguments deprecated + +The `qt.preprocess` method currently has this signature: +`qt.preprocess(name: str | None, *srcs: str)`, this is not a nice signature +because it's confusing, and there's a `sources` keyword argument as well. +Both of these pass sources through unmodified, this is a bit of a historical +accident, and not the way that any other module works. These have been +deprecated, so instead of: +```meson +sources = qt.preprocess( + name, + list, of, sources, + sources : [more, sources], + ... # things to process, +) + +executable( + 'foo', + sources, +) +``` +use +```meson +processed = qt.preprocess( + name, + ... # thins to process +) + +executable( + 'foo', + 'list', 'of', 'sources', 'more', 'sources', processed, +) +``` + +## New `build target` methods + +The [`build target` object](Reference-manual.md#build-target-object) now supports +the following two functions, to ensure feature compatebility with +[`external program` objects](Reference-manual.html#external-program-object): + +- `found()`: Always returns `true`. This function is meant + to make executables objects feature compatible with + `external program` objects. This simplifies + use-cases where an executable is used instead of an external program. + +- `path()`: **(deprecated)** does the exact same as `full_path()`. + **NOTE:** This function is solely kept for compatebility + with `external program` objects. It will be + removed once the, also deprecated, corresponding `path()` function in the + `external program` object is removed. + +## Automatically set up Visual Studio environment + +When Meson is run on Windows it will automatically set up the +environment to use Visual Studio if no other compiler toolchain +can be detected. This means that you can run Meson commands from +any command prompt or directly from any IDE. This sets up the +64 bit native environment. If you need any other, then you +need to set it up manually as before. + +## `gnome.compile_schemas()` sets `GSETTINGS_SCHEMA_DIR` into devenv + +When using `gnome.compile_schemas()` the location of the compiled schema is +added to `GSETTINGS_SCHEMA_DIR` environment variable when using +[`meson devenv`](Commands.md#devenv) command. + +## `update_desktop_database` added to `gnome.post_install()` + +Applications that install a `.desktop` file containing a `MimeType` need to update +the cache upon installation. Most applications do that using a custom script, +but it can now be done by Meson directly. + +See [`gnome.post_install()`](Gnome-module.md#gnomepost_install). + diff --git a/docs/markdown/snippets/build-target-found.md b/docs/markdown/snippets/build-target-found.md deleted file mode 100644 index 60c5083..0000000 --- a/docs/markdown/snippets/build-target-found.md +++ /dev/null @@ -1,16 +0,0 @@ -## New `build target` methods - -The [`build target` object](Reference-manual.md#build-target-object) now supports -the following two functions, to ensure feature compatebility with -[`external program` objects](Reference-manual.html#external-program-object): - -- `found()`: Always returns `true`. This function is meant - to make executables objects feature compatible with - `external program` objects. This simplifies - use-cases where an executable is used instead of an external program. - -- `path()`: **(deprecated)** does the exact same as `full_path()`. - **NOTE:** This function is solely kept for compatebility - with `external program` objects. It will be - removed once the, also deprecated, corresponding `path()` function in the - `external program` object is removed. diff --git a/docs/markdown/snippets/compiler_argument_checking.md b/docs/markdown/snippets/compiler_argument_checking.md deleted file mode 100644 index 0e038ec..0000000 --- a/docs/markdown/snippets/compiler_argument_checking.md +++ /dev/null @@ -1,6 +0,0 @@ -## Compiler argument checking for `get_supported_arguments` - -The compiler method `get_supported_arguments` now supports -a new keyword argument named `checked` that can be set to -one of `warn`, `require` or `off` (defaults to `off`) to -enforce argument checks. diff --git a/docs/markdown/snippets/custom-target-feed.md b/docs/markdown/snippets/custom-target-feed.md deleted file mode 100644 index f965152..0000000 --- a/docs/markdown/snippets/custom-target-feed.md +++ /dev/null @@ -1,4 +0,0 @@ -## The custom_target() function now accepts a feed argument - -It is now possible to provide a `feed: true` argument to `custom_target()` to -pipe the target's input file to the program's standard input. diff --git a/docs/markdown/snippets/first-class-cython.md b/docs/markdown/snippets/first-class-cython.md deleted file mode 100644 index 54f9367..0000000 --- a/docs/markdown/snippets/first-class-cython.md +++ /dev/null @@ -1,18 +0,0 @@ -## Cython as as first class language - -Meson now supports Cython as a first class language. This means you can write: - -```meson -project('my project', 'cython') - -py = import('python').find_installation() -dep_py = py.dependency() - -py.extension_module( - 'foo', - 'foo.pyx', - dependencies : dep_py, -) -``` - -And avoid the step through a generator that was previously required. diff --git a/docs/markdown/snippets/fs-module-accepts-files.md b/docs/markdown/snippets/fs-module-accepts-files.md deleted file mode 100644 index 8c602fd..0000000 --- a/docs/markdown/snippets/fs-module-accepts-files.md +++ /dev/null @@ -1,6 +0,0 @@ -## Fs Module now accepts files objects - -It is now possible to define a `files()` object and run most Fs module -functions on the file, rather than passing a string and hoping it is in the -same directory. - diff --git a/docs/markdown/snippets/gnome.md b/docs/markdown/snippets/gnome.md deleted file mode 100644 index d185da2..0000000 --- a/docs/markdown/snippets/gnome.md +++ /dev/null @@ -1,13 +0,0 @@ -## `gnome.compile_schemas()` sets `GSETTINGS_SCHEMA_DIR` into devenv - -When using `gnome.compile_schemas()` the location of the compiled schema is -added to `GSETTINGS_SCHEMA_DIR` environment variable when using -[`meson devenv`](Commands.md#devenv) command. - -## `update_desktop_database` added to `gnome.post_install()` - -Applications that install a `.desktop` file containing a `MimeType` need to update -the cache upon installation. Most applications do that using a custom script, -but it can now be done by Meson directly. - -See [`gnome.post_install()`](Gnome-module.md#gnomepost_install). diff --git a/docs/markdown/snippets/intl-dependency.md b/docs/markdown/snippets/intl-dependency.md deleted file mode 100644 index 8e0cd40..0000000 --- a/docs/markdown/snippets/intl-dependency.md +++ /dev/null @@ -1,35 +0,0 @@ -## New custom dependency for libintl - -Meson can now find the library needed for translating messages via gettext. -This works both on systems where libc provides gettext, such as GNU or musl, -and on systems where the gettext project's standalone intl support library is -required, such as macOS. - -Rather than doing something such as: - -``` -intl_dep = dependency('', required: false) - -if cc.has_function('ngettext') - intl_found = true -else - intl_dep = cc.find_library('intl', required: false) - intl_found = intl_dep.found() -endif - -if intl_found - # build options that need gettext - conf.set('ENABLE_NLS', 1) -endif -``` - -one may simply use: - -``` -intl_dep = dependency('intl') - -if intl_dep.found() - # build options that need gettext - conf.set('ENABLE_NLS', 1) -endif -``` diff --git a/docs/markdown/snippets/newvsbackends.md b/docs/markdown/snippets/newvsbackends.md deleted file mode 100644 index cb7437a..0000000 --- a/docs/markdown/snippets/newvsbackends.md +++ /dev/null @@ -1,15 +0,0 @@ -## New `vs2012` and `vs2013` backend options - -Adds the ability to generate Visual Studio 2012 and 2013 projects. This is an -extension to the existing Visual Studio 2010 projects so that it is no longer -required to manually upgrade the generated Visual Studio 2010 projects. - -Generating Visual Studio 2010 projects has also been fixed since its developer -command prompt does not provide a `%VisualStudioVersion%` envvar. - -## Developer environment - -Expand the support for the `link_whole:` project option for pre-Visual Studio 2015 -Update 2, where previously Visual Studio 2015 Update 2 or later was required for -this, for the Ninja backend as well as the vs2010 (as well as the newly-added -vs2012 and vs2013 backends). diff --git a/docs/markdown/snippets/objcversion.md b/docs/markdown/snippets/objcversion.md deleted file mode 100644 index 9825c80..0000000 --- a/docs/markdown/snippets/objcversion.md +++ /dev/null @@ -1,6 +0,0 @@ -## Objective C/C++ standard versions - -Objective C and C++ compilations will from now on use the language -versions set in `c_std` and `cpp_std`, respectively. It is not -possible to set the language version separately for Objective C and -plain C. diff --git a/docs/markdown/snippets/pkgconfig_var_escaping.md b/docs/markdown/snippets/pkgconfig_var_escaping.md deleted file mode 100644 index de0ee96..0000000 --- a/docs/markdown/snippets/pkgconfig_var_escaping.md +++ /dev/null @@ -1,23 +0,0 @@ -## Unescaped variables in pkgconfig files - -Spaces in variable values are escaped with `\`, this is required in the case the -value is a path that and is used in `cflags` or `libs` arguments. This was an -undocumented behaviour that caused issues in the case the variable is a space -separated list of items. - -For backward compatibility reasons this behaviour could not be changed, new -keyword arguments have thus been added: `unescaped_variables` and -`unescaped_uninstalled_variables`. - -```meson -pkg = import('pkgconfig') -... -pkg.generate(lib, - variables: { - 'mypath': '/path/with spaces/are/escaped', - }, - unescaped_variables: { - 'mylist': 'Hello World Is Not Escaped', - }, -) -``` diff --git a/docs/markdown/snippets/qt_preprocess_separate.md b/docs/markdown/snippets/qt_preprocess_separate.md deleted file mode 100644 index 1035f9a..0000000 --- a/docs/markdown/snippets/qt_preprocess_separate.md +++ /dev/null @@ -1,5 +0,0 @@ -## Separate functions for qt preprocess - -`qt.preprocess` is a large, complicated function that does a lot of things, -a new set of `compile_*` functions have been provided as well. These are -conceptually simpler, as they do a single thing. diff --git a/docs/markdown/snippets/qt_preprocessed_varargs_deprecated.md b/docs/markdown/snippets/qt_preprocessed_varargs_deprecated.md deleted file mode 100644 index 5418eb3..0000000 --- a/docs/markdown/snippets/qt_preprocessed_varargs_deprecated.md +++ /dev/null @@ -1,33 +0,0 @@ -## Qt.preprocess source arguments deprecated - -The `qt.preprocess` method currently has this signature: -`qt.preprocess(name: str | None, *srcs: str)`, this is not a nice signature -because it's confusing, and there's a `sources` keyword argument as well. -Both of these pass sources through unmodified, this is a bit of a historical -accident, and not the way that any other module works. These have been -deprecated, so instead of: -```meson -sources = qt.preprocess( - name, - list, of, sources, - sources : [more, sources], - ... # things to process, -) - -executable( - 'foo', - sources, -) -``` -use -```meson -processed = qt.preprocess( - name, - ... # thins to process -) - -executable( - 'foo', - 'list', 'of', 'sources', 'more', 'sources', processed, -) -``` diff --git a/docs/markdown/snippets/required_and_disabled_import.md b/docs/markdown/snippets/required_and_disabled_import.md deleted file mode 100644 index 39ca307..0000000 --- a/docs/markdown/snippets/required_and_disabled_import.md +++ /dev/null @@ -1,5 +0,0 @@ -## The `import()` function gains `required` and `disabler` arguments - -In addition, modules now have a `found()` method, like programs and -dependencies. This allows them to be conditionally required, and used in most -places that an object with a `found()` method can be. diff --git a/docs/markdown/snippets/subprojects_command_parallel.md b/docs/markdown/snippets/subprojects_command_parallel.md deleted file mode 100644 index 4d992e7..0000000 --- a/docs/markdown/snippets/subprojects_command_parallel.md +++ /dev/null @@ -1,7 +0,0 @@ -## Parallelized `meson subprojects` commands - -All `meson subprojects` commands are now run on each subproject in parallel by -default. The number of processes can be controlled with `--num-processes` -argument. - -This speeds up considerably IO-bound operations such as downloads and git fetch. diff --git a/docs/markdown/snippets/vala-no-longer-requires-c.md b/docs/markdown/snippets/vala-no-longer-requires-c.md deleted file mode 100644 index 5744877..0000000 --- a/docs/markdown/snippets/vala-no-longer-requires-c.md +++ /dev/null @@ -1,4 +0,0 @@ -## Using Vala no longer requires C in the project languages - -Meson will now add C automatically. Since the use of C is an implementation -detail of Vala, Meson shouldn't require users to add it. diff --git a/docs/markdown/snippets/vsenv.md b/docs/markdown/snippets/vsenv.md deleted file mode 100644 index 96d3979..0000000 --- a/docs/markdown/snippets/vsenv.md +++ /dev/null @@ -1,8 +0,0 @@ -## Automatically set up Visual Studio environment - -When Meson is run on Windows it will automatically set up the -environment to use Visual Studio if no other compiler toolchain -can be detected. This means that you can run Meson commands from -any command prompt or directly from any IDE. This sets up the -64 bit native environment. If you need any other, then you -need to set it up manually as before. diff --git a/docs/markdown/snippets/wrc.md b/docs/markdown/snippets/wrc.md deleted file mode 100644 index 0d60f4f..0000000 --- a/docs/markdown/snippets/wrc.md +++ /dev/null @@ -1,7 +0,0 @@ -## Support for the Wine Resource Compiler - -Users can now choose `wrc` as the `windres` binary in their cross files and -`windows.compile_resources` will handle it correctly. Together with `winegcc` -patches in Wine 6.12 this enables basic support for compiling projects as a -winelib by specifying `winegcc`/`wineg++` as the compiler and `wrc` as the -resource compiler in a cross file. diff --git a/docs/sitemap.txt b/docs/sitemap.txt index e1efe65..d96d865 100644 --- a/docs/sitemap.txt +++ b/docs/sitemap.txt @@ -87,6 +87,7 @@ index.md Shipping-prebuilt-binaries-as-wraps.md fallback-wraptool.md Release-notes.md + Release-notes-for-0.59.0.md Release-notes-for-0.58.0.md Release-notes-for-0.57.0.md Release-notes-for-0.56.0.md diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index d634ab7..8466d3e 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -43,7 +43,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.59.0.rc2' +version = '0.59.0' backendlist = ['ninja', 'vs', 'vs2010', 'vs2012', 'vs2013', 'vs2015', 'vs2017', 'vs2019', 'xcode'] default_yielding = False |