aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2021-10-24 18:45:35 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2021-10-24 18:45:35 +0300
commit39c268ce0d3c395ce53ef8231f0b6107f6c686bd (patch)
treefff1beb32c2a88d31d0f8ac6cccc2dd177b9db6c /docs
parentf64e5cee6bc7ab8c00c31f341afc6043867773d0 (diff)
downloadmeson-39c268ce0d3c395ce53ef8231f0b6107f6c686bd.zip
meson-39c268ce0d3c395ce53ef8231f0b6107f6c686bd.tar.gz
meson-39c268ce0d3c395ce53ef8231f0b6107f6c686bd.tar.bz2
Create release notes page for 0.60.
Diffstat (limited to 'docs')
-rw-r--r--docs/markdown/Release-notes-for-0.60.0.md398
-rw-r--r--docs/markdown/snippets/Cross_compilation_with_C2000_toolchain_supports_CLA_files.md3
-rw-r--r--docs/markdown/snippets/comp_error.md5
-rw-r--r--docs/markdown/snippets/custom_target_name.md4
-rw-r--r--docs/markdown/snippets/cython-c++-intermediate.md22
-rw-r--r--docs/markdown/snippets/dependency_names.md8
-rw-r--r--docs/markdown/snippets/deprecated_option.md23
-rw-r--r--docs/markdown/snippets/gnome_yelp_sources.md6
-rw-r--r--docs/markdown/snippets/i18n-return.md6
-rw-r--r--docs/markdown/snippets/iconv-dependency.md8
-rw-r--r--docs/markdown/snippets/install_emptydir.md18
-rw-r--r--docs/markdown/snippets/install_tag.md6
-rw-r--r--docs/markdown/snippets/java_module.md18
-rw-r--r--docs/markdown/snippets/mixed_language_linker_tests.md21
-rw-r--r--docs/markdown/snippets/msvc_utf8.md16
-rw-r--r--docs/markdown/snippets/python_dependency_args_removed.md3
-rw-r--r--docs/markdown/snippets/python_install_path.md12
-rw-r--r--docs/markdown/snippets/qt_module_generated_inputs.md13
-rw-r--r--docs/markdown/snippets/relative_destdir.md6
-rw-r--r--docs/markdown/snippets/remove_unittest_args_method.md4
-rw-r--r--docs/markdown/snippets/run_target-depends.md20
-rw-r--r--docs/markdown/snippets/rust-clippy-driver-support.md6
-rw-r--r--docs/markdown/snippets/rustc-improvements.md6
-rw-r--r--docs/markdown/snippets/static_fallback_override.md46
-rw-r--r--docs/markdown/snippets/str_join.md5
-rw-r--r--docs/markdown/snippets/subprojects_packagefiles.md11
-rw-r--r--docs/markdown/snippets/uninstalled_static_linker.md11
-rw-r--r--docs/markdown/snippets/unknown-options-always-fatal.md5
-rw-r--r--docs/markdown/snippets/unset_variable.md16
-rw-r--r--docs/markdown/snippets/vsenv.md14
-rw-r--r--docs/markdown/snippets/waf.md5
-rw-r--r--docs/markdown/snippets/wasmlibs.md13
-rw-r--r--docs/sitemap.txt1
33 files changed, 399 insertions, 360 deletions
diff --git a/docs/markdown/Release-notes-for-0.60.0.md b/docs/markdown/Release-notes-for-0.60.0.md
new file mode 100644
index 0000000..969944b
--- /dev/null
+++ b/docs/markdown/Release-notes-for-0.60.0.md
@@ -0,0 +1,398 @@
+---
+title: Release 0.60.0
+short-description: Release notes for 0.60.0
+...
+
+# New features
+
+## `run_target` can now be used as a dependency
+
+A `run_target()` can now be saved in a variable and reused as a dependency in
+an `alias_target()`. This can be used to create custom alias rules that ensure
+multiple other targets are run, even if those targets don't produce output
+files.
+
+For example:
+
+```
+i18n = import('i18n')
+
+all_pot_targets = []
+
+foo_i18n = i18n.gettext('foo')
+
+all_pot_targets += foo_i18n[1]
+
+alias_target('all-pot', all_pot_targets)
+```
+
+## The Python Modules dependency method no longer accepts positional arguments
+
+Previously these were igrnoed with a warning, now they're a hard error.
+
+## `unset_variable()`
+
+`unset_variable()` can be used to unset a variable. Reading a variable after
+calling `unset_variable()` will raise an exception unless the variable is set
+again.
+
+```meson
+# tests/meson.build
+tests = ['test1', 'test2']
+
+# ...
+
+unset_variable('tests')
+
+# tests is no longer usable until it is set again
+```
+
+## Override python installation paths
+
+The `python` module now has options to control where modules are installed:
+- python.platlibdir: Directory for site-specific, platform-specific files.
+- python.purelibdir: Directory for site-specific, non-platform-specific files.
+
+Those options are used by python module methods `python.install_sources()` and
+`python.get_install_dir()`. By default Meson tries to detect the correct installation
+path, but make them relative to the installation `prefix`, which will often result
+in installed python modules to not be found by the interpreter unless `prefix`
+is `/usr` on Linux, or for example `C:\Python39` on Windows. These new options
+can be absolute paths outside of `prefix`.
+
+## New `subprojects packagefiles` subcommand
+
+It is now possible to re-apply `meson.build` overlays (`patch_filename` or
+`patch_directory` in the wrap ini file) after a subproject was downloaded and
+set up, via `meson subprojects packagefiles --apply <wrap-name>`.
+
+It is also possible for `patch_directory` overlays in a `[wrap-file]`, to copy
+the packagefiles out of the subproject and back into `packagefiles/<patch_directory>/`
+via `meson subprojects packagefiles --save <wrap-name>`. This is useful for
+testing an edit in the subproject and then saving it back to the overlay which
+is checked into git.
+
+## Deprecated project options
+
+Project options declared in `meson_options.txt` can now be marked as deprecated
+and Meson will warn when user sets a value to it. It is also possible to deprecate
+only some of the choices, and map deprecated values to a new value.
+
+```meson
+# Option fully deprecated, it warns when any value is set.
+option('o1', type: 'boolean', deprecated: true)
+
+# One of the choices is deprecated, it warns only when 'a' is in the list of values.
+option('o2', type: 'array', choices: ['a', 'b'], deprecated: ['a'])
+
+# One of the choices is deprecated, it warns only when 'a' is in the list of values
+# and replace it by 'c'.
+option('o3', type: 'array', choices: ['a', 'b', 'c'], deprecated: {'a': 'c'})
+
+# A boolean option has been replaced by a feature, old true/false values are remapped.
+option('o4', type: 'feature', deprecated: {'true': 'enabled', 'false': 'disabled'})
+
+# A feature option has been replaced by a boolean, enabled/disabled/auto values are remapped.
+option('o5', type: 'boolean', deprecated: {'enabled': 'true', 'disabled': 'false', 'auto': 'false'})
+```
+
+## More efficient static linking of uninstalled libraries
+
+A somewhat common use case of [[static_library]] is to create uninstalled
+internal convenience libraries which are solely meant to be linked to other
+targets. Some build systems call these "object libraries". Meson's
+implementation does always create a static archive.
+
+This will now check to see if the static linker supports "thin archives"
+(archives which do not contain the actual object code, only references to their
+location on disk) and if so, use them to minimize space usage and speed up
+linking.
+
+## gnome.yelp variadic argument deprecation
+
+`gnome.yelp` previously allowed sources to be passed either as variadic
+arguments or as a keyword argument. If the keyword argument was given the
+variadic arguments would be silently ignored. This has changed in 0.60.0, the
+variadic form has been deprecated, and a warning is printed if both are given.
+
+## `static` keyword argument to `meson.override_dependency()`
+
+It is now possible to override shared and/or static dependencies separately.
+When the `static` keyword argument is not specified in `dependency()`, the first
+override will be used (`static_dep` in the example below).
+```meson
+static_lib = static_library()
+static_dep = declare_dependency(link_with: static_lib)
+meson.override_dependency('foo', static_dep, static: true)
+
+shared_lib = shared_library()
+shared_dep = declare_dependency(link_with: shared_lib)
+meson.override_dependency('foo', shared_dep, static: false)
+
+# Returns static_dep
+dependency('foo')
+
+# Returns static_dep
+dependency('foo', static: true)
+
+# Returns shared_dep
+dependency('foo', static: false)
+```
+
+When the `static` keyword argument is not specified in `meson.override_dependency()`,
+the dependency is assumed to follow the value of `default_library` option.
+```meson
+dep = declare_dependency(...)
+meson.override_dependency('foo', dep)
+
+# Always works
+dependency('foo')
+
+# Works only if default_library is 'static' or 'both'
+dependency('foo', static: true)
+
+# Works only if default_library is 'shared' or 'both'
+dependency('foo', static: false)
+```
+
+## `dependency()` sets `default_library` on fallback subproject
+
+When the `static` keyword argument is set but `default_library` is missing in
+`default_options`, `dependency()` will set it when configuring fallback
+subproject. `dependency('foo', static: true)` is now equivalent to
+`dependency('foo', static: true, default_options: ['default_library=static'])`.
+
+## install_emptydir function
+
+It is now possible to define a directory which will be created during
+installation, without creating it as a side effect of installing files into it.
+This replaces custom `meson.add_install_script()` routines. For example:
+
+```meson
+meson.add_install_script('sh', '-c', 'mkdir -p "$DESTDIR/@0@"'.format(path))
+```
+
+can be replaced by:
+
+```meson
+install_emptydir(path)
+```
+
+and as a bonus this works reliably on Windows, prints a sensible progress
+message, will be uninstalled by `ninja uninstall`, etc.
+
+## Cython can now transpile to C++ as an intermediate language
+
+Built-in cython support currently only allows C as an intermediate language, now
+C++ is also allowed. This can be set via the `cython_language` option, either on
+the command line, or in the meson.build files.
+
+```meson
+project(
+ 'myproject',
+ 'cython',
+ default_options : ['cython_language=cpp'],
+)
+```
+
+or on a per target basis with:
+```meson
+python.extension_module(
+ 'mod',
+ 'mod.pyx',
+ override_options : ['cython_language=cpp'],
+)
+```
+
+## New custom dependency for iconv
+
+```
+dependency('iconv')
+```
+
+will now check for the functionality of libiconv.so, but first check if it is
+provided in the libc (for example in glibc or musl libc on Linux).
+
+## Unknown options are now always fatal
+
+Passing unknown options to "meson setup" or "meson configure" is now
+always fatal. That is, Meson will exit with an error code if this
+happens. Previous Meson versions only showed a warning message.
+
+## Install DESTDIR relative to build directory
+
+When `DESTDIR` environment or `meson install --destdir` option is a relative path,
+it is now assumed to be relative to the build directory. An absolute path will be
+set into environment when executing scripts. It was undefined behavior in prior
+Meson versions but was working as relative to build directory most of the time.
+
+## Java Module
+
+The Java module has been added to Meson. The Java module allows users to
+generate native header files without needing to use a `custom_target()`.
+
+```meson
+jmod = import('java')
+
+native_header = jmod.generate_native_header('File.java', package: 'com.mesonbuild')
+native_header_includes = include_directories('.')
+
+jdkjava = shared_module(
+ 'jdkjava',
+ [native_header_includes, other_sources],
+ dependencies : [jdk],
+ include_directories : [native_header_includes]
+)
+```
+
+== Link tests can use sources for a different compiler ==
+
+Usually, the `links` method of the compiler object uses a single program
+invocation to do both compilation and linking. Starting with this version,
+whenever the argument to `links` is a file, Meson will check if the file
+suffix matches the compiler object's language. If they do not match,
+as in the following case:
+
+```
+cxx = meson.get_compiler('cpp')
+cxx.links(files('test.c'))
+```
+
+then Meson will separate compilation and linking. In the above example
+`test.c` will be compiled with a C compiler and the resulting object file
+will be linked with a C++ compiler. This makes it possible to detect
+misconfigurations of the compilation environment, for example when the
+C++ runtime is not compatible with the one expected by the C compiler.
+
+For this reason, passing file arguments with an unrecognized suffix to
+`links` will cause a warning.
+
+## Relax restrictions of `str.join()`
+
+Since 0.60.0, the [[str.join]] method can take an arbitrary number of arguments
+instead of just one list. Additionally, all lists past to [[str.join]] will now
+be flattened.
+
+## Improvements for the Rustc compiler
+
+- Werror now works, this set's `-D warnings`, which will cause rustc to error
+ for every warning not explicitly disabled
+- warning levels have been implemented
+- support for meson's pic has been enabled
+
+## The qt modules now accept generated outputs as inputs for qt.compile_*
+
+This means you can uset `custom_target`, custom_target indices
+(`custom_target[0]`, for example), or the output of `generator.process` as
+inputs to the various `qt.compile_*` methods.
+
+```meson
+qt = import('qt5')
+
+ct = custom_target(...)
+
+out = qt.compile_ui(sources : ct)
+```
+
+## Waf support in external-project module
+
+If the first argument is `'waf'`, special treatment is done for the
+[waf](https://waf.io/) build system. The waf executable must be
+found either in the current directory, or in system `PATH`.
+
+## Comparing two objects with different types is now an error
+
+Using the `==` and `!=` operators to compare objects of different (for instance
+`[1] == 1`) types was deprecated and undefined behavior since 0.45.0 and is
+now a hard error.
+
+## Installation tags
+
+It is now possible to install only a subset of the installable files using
+`meson install --tags tag1,tag2` command line.
+
+See [documentation](Installing.md#installation-tags) for more details.
+
+## Compiler.unittest_args has been removed
+
+It's never been documented, and it's been marked deprecated for a long time, so
+let's remove it.
+
+## Dependencies with multiple names
+
+More than one name can now be passed to `dependency()`, they will be tried in order
+and the first name to be found will be used. The fallback subproject will be
+used only if none of the names are found on the system. Once one of the name has
+been found, all other names are added into the cache so subsequent calls for any
+of those name will return the same value. This is useful in case a dependency
+could have different names, such as `png` and `libpng`.
+
+## i18n module now returns gettext targets
+
+`r = i18n.gettext('mydomain')` will now provide access to:
+- a list of built .mo files
+- the mydomain-pot maintainer target which updates .pot files
+- the mydomain-update-po maintainer target which updates .po files
+
+## Added support for CLA sources when cross-compiling with the C2000 toolchain
+
+Support for CLA sources has been added for cross-compilation with the C2000 toolchain.
+
+## Support for clippy-driver as a rustc wrapper
+
+Clippy is a popular linting tool for Rust, and is invoked in place of rustc as a
+wrapper. Unfortunately it doesn't proxy rustc's output, so we need to have a
+small wrapper around it so that Meson can correctly detect the underlying rustc,
+but still display clippy
+
+## Force Visual Studio environment activation
+
+Since `0.59.0`, meson automatically activates Visual Studio environment on Windows
+for all its subcommands, but only if no other compilers (e.g. `gcc` or `clang`)
+are found, and silently continue if Visual Studio activation fails.
+
+`meson setup --vsenv` command line argument can now be used to force Visual Studio
+activation even when other compilers are found. It also make Meson abort with an
+error message when activation fails. This is especially useful for Github Action
+because their Windows images have gcc in their PATH by default.
+
+`--vsenv` is set by default when using `vs` backend.
+
+Only `setup`, `compile`, `dist` and `devenv` subcommands now activate Visual Studio.
+
+## MSVC compiler now assumes UTF-8 source code by default
+
+Every project that uses UTF-8 source files had to add manually `/utf-8` C/C++
+compiler argument for MSVC otherwise they wouldn't work on non-English locale.
+Meson now switched the default to UTF-8 to be more consistent with all other
+compilers.
+
+This can be overridden but using `/source-charset`:
+```meson
+if cc.get_id() == 'msvc'
+ add_project_arguments('/source-charset:.XYZ', language: ['c', 'cpp'])
+endif
+```
+
+See Microsoft documentation for details:
+https://docs.microsoft.com/en-us/cpp/build/reference/source-charset-set-source-character-set.
+
+## Add support for `find_library` in Emscripten
+
+The `find_library` method can be used to find your own JavaScript
+libraries. The limitation is that they must have the file extension
+`.js`. Other library lookups will look up "native" libraries from the
+system like currently. A typical usage would look like this:
+
+```meson
+glue_lib = cc.find_library('gluefuncs.js',
+ dirs: meson.current_source_dir())
+executable('prog', 'prog.c',
+ dependencies: glue_lib)
+```
+
+## Optional `custom_target()` name
+
+The name argument is now optional and defaults to the basename of the first
+output.
+
diff --git a/docs/markdown/snippets/Cross_compilation_with_C2000_toolchain_supports_CLA_files.md b/docs/markdown/snippets/Cross_compilation_with_C2000_toolchain_supports_CLA_files.md
deleted file mode 100644
index 1a862b6..0000000
--- a/docs/markdown/snippets/Cross_compilation_with_C2000_toolchain_supports_CLA_files.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## Added support for CLA sources when cross-compiling with the C2000 toolchain
-
-Support for CLA sources has been added for cross-compilation with the C2000 toolchain.
diff --git a/docs/markdown/snippets/comp_error.md b/docs/markdown/snippets/comp_error.md
deleted file mode 100644
index 6d1bf46..0000000
--- a/docs/markdown/snippets/comp_error.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Comparing two objects with different types is now an error
-
-Using the `==` and `!=` operators to compare objects of different (for instance
-`[1] == 1`) types was deprecated and undefined behavior since 0.45.0 and is
-now a hard error.
diff --git a/docs/markdown/snippets/custom_target_name.md b/docs/markdown/snippets/custom_target_name.md
deleted file mode 100644
index 5ad136d..0000000
--- a/docs/markdown/snippets/custom_target_name.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Optional `custom_target()` name
-
-The name argument is now optional and defaults to the basename of the first
-output. \ No newline at end of file
diff --git a/docs/markdown/snippets/cython-c++-intermediate.md b/docs/markdown/snippets/cython-c++-intermediate.md
deleted file mode 100644
index 0a1c35f..0000000
--- a/docs/markdown/snippets/cython-c++-intermediate.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## Cython can now transpile to C++ as an intermediate language
-
-Built-in cython support currently only allows C as an intermediate language, now
-C++ is also allowed. This can be set via the `cython_language` option, either on
-the command line, or in the meson.build files.
-
-```meson
-project(
- 'myproject',
- 'cython',
- default_options : ['cython_language=cpp'],
-)
-```
-
-or on a per target basis with:
-```meson
-python.extension_module(
- 'mod',
- 'mod.pyx',
- override_options : ['cython_language=cpp'],
-)
-```
diff --git a/docs/markdown/snippets/dependency_names.md b/docs/markdown/snippets/dependency_names.md
deleted file mode 100644
index 3ea1019..0000000
--- a/docs/markdown/snippets/dependency_names.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Dependencies with multiple names
-
-More than one name can now be passed to `dependency()`, they will be tried in order
-and the first name to be found will be used. The fallback subproject will be
-used only if none of the names are found on the system. Once one of the name has
-been found, all other names are added into the cache so subsequent calls for any
-of those name will return the same value. This is useful in case a dependency
-could have different names, such as `png` and `libpng`.
diff --git a/docs/markdown/snippets/deprecated_option.md b/docs/markdown/snippets/deprecated_option.md
deleted file mode 100644
index 94ee20b..0000000
--- a/docs/markdown/snippets/deprecated_option.md
+++ /dev/null
@@ -1,23 +0,0 @@
-## Deprecated project options
-
-Project options declared in `meson_options.txt` can now be marked as deprecated
-and Meson will warn when user sets a value to it. It is also possible to deprecate
-only some of the choices, and map deprecated values to a new value.
-
-```meson
-# Option fully deprecated, it warns when any value is set.
-option('o1', type: 'boolean', deprecated: true)
-
-# One of the choices is deprecated, it warns only when 'a' is in the list of values.
-option('o2', type: 'array', choices: ['a', 'b'], deprecated: ['a'])
-
-# One of the choices is deprecated, it warns only when 'a' is in the list of values
-# and replace it by 'c'.
-option('o3', type: 'array', choices: ['a', 'b', 'c'], deprecated: {'a': 'c'})
-
-# A boolean option has been replaced by a feature, old true/false values are remapped.
-option('o4', type: 'feature', deprecated: {'true': 'enabled', 'false': 'disabled'})
-
-# A feature option has been replaced by a boolean, enabled/disabled/auto values are remapped.
-option('o5', type: 'boolean', deprecated: {'enabled': 'true', 'disabled': 'false', 'auto': 'false'})
-```
diff --git a/docs/markdown/snippets/gnome_yelp_sources.md b/docs/markdown/snippets/gnome_yelp_sources.md
deleted file mode 100644
index 3633d17..0000000
--- a/docs/markdown/snippets/gnome_yelp_sources.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## gnome.yelp variadic argument deprecation
-
-`gnome.yelp` previously allowed sources to be passed either as variadic
-arguments or as a keyword argument. If the keyword argument was given the
-variadic arguments would be silently ignored. This has changed in 0.60.0, the
-variadic form has been deprecated, and a warning is printed if both are given.
diff --git a/docs/markdown/snippets/i18n-return.md b/docs/markdown/snippets/i18n-return.md
deleted file mode 100644
index 1f732af..0000000
--- a/docs/markdown/snippets/i18n-return.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## i18n module now returns gettext targets
-
-`r = i18n.gettext('mydomain')` will now provide access to:
-- a list of built .mo files
-- the mydomain-pot maintainer target which updates .pot files
-- the mydomain-update-po maintainer target which updates .po files
diff --git a/docs/markdown/snippets/iconv-dependency.md b/docs/markdown/snippets/iconv-dependency.md
deleted file mode 100644
index 21a2985..0000000
--- a/docs/markdown/snippets/iconv-dependency.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## New custom dependency for iconv
-
-```
-dependency('iconv')
-```
-
-will now check for the functionality of libiconv.so, but first check if it is
-provided in the libc (for example in glibc or musl libc on Linux).
diff --git a/docs/markdown/snippets/install_emptydir.md b/docs/markdown/snippets/install_emptydir.md
deleted file mode 100644
index baedf58..0000000
--- a/docs/markdown/snippets/install_emptydir.md
+++ /dev/null
@@ -1,18 +0,0 @@
-## install_emptydir function
-
-It is now possible to define a directory which will be created during
-installation, without creating it as a side effect of installing files into it.
-This replaces custom `meson.add_install_script()` routines. For example:
-
-```meson
-meson.add_install_script('sh', '-c', 'mkdir -p "$DESTDIR/@0@"'.format(path))
-```
-
-can be replaced by:
-
-```meson
-install_emptydir(path)
-```
-
-and as a bonus this works reliably on Windows, prints a sensible progress
-message, will be uninstalled by `ninja uninstall`, etc.
diff --git a/docs/markdown/snippets/install_tag.md b/docs/markdown/snippets/install_tag.md
deleted file mode 100644
index 36df639..0000000
--- a/docs/markdown/snippets/install_tag.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Installation tags
-
-It is now possible to install only a subset of the installable files using
-`meson install --tags tag1,tag2` command line.
-
-See [documentation](Installing.md#installation-tags) for more details.
diff --git a/docs/markdown/snippets/java_module.md b/docs/markdown/snippets/java_module.md
deleted file mode 100644
index b806aee..0000000
--- a/docs/markdown/snippets/java_module.md
+++ /dev/null
@@ -1,18 +0,0 @@
-## Java Module
-
-The Java module has been added to Meson. The Java module allows users to
-generate native header files without needing to use a `custom_target()`.
-
-```meson
-jmod = import('java')
-
-native_header = jmod.generate_native_header('File.java', package: 'com.mesonbuild')
-native_header_includes = include_directories('.')
-
-jdkjava = shared_module(
- 'jdkjava',
- [native_header_includes, other_sources],
- dependencies : [jdk],
- include_directories : [native_header_includes]
-)
-```
diff --git a/docs/markdown/snippets/mixed_language_linker_tests.md b/docs/markdown/snippets/mixed_language_linker_tests.md
deleted file mode 100644
index 8b94edb..0000000
--- a/docs/markdown/snippets/mixed_language_linker_tests.md
+++ /dev/null
@@ -1,21 +0,0 @@
-== Link tests can use sources for a different compiler ==
-
-Usually, the `links` method of the compiler object uses a single program
-invocation to do both compilation and linking. Starting with this version,
-whenever the argument to `links` is a file, Meson will check if the file
-suffix matches the compiler object's language. If they do not match,
-as in the following case:
-
-```
-cxx = meson.get_compiler('cpp')
-cxx.links(files('test.c'))
-```
-
-then Meson will separate compilation and linking. In the above example
-`test.c` will be compiled with a C compiler and the resulting object file
-will be linked with a C++ compiler. This makes it possible to detect
-misconfigurations of the compilation environment, for example when the
-C++ runtime is not compatible with the one expected by the C compiler.
-
-For this reason, passing file arguments with an unrecognized suffix to
-`links` will cause a warning.
diff --git a/docs/markdown/snippets/msvc_utf8.md b/docs/markdown/snippets/msvc_utf8.md
deleted file mode 100644
index fb8763d..0000000
--- a/docs/markdown/snippets/msvc_utf8.md
+++ /dev/null
@@ -1,16 +0,0 @@
-## MSVC compiler now assumes UTF-8 source code by default
-
-Every project that uses UTF-8 source files had to add manually `/utf-8` C/C++
-compiler argument for MSVC otherwise they wouldn't work on non-English locale.
-Meson now switched the default to UTF-8 to be more consistent with all other
-compilers.
-
-This can be overridden but using `/source-charset`:
-```meson
-if cc.get_id() == 'msvc'
- add_project_arguments('/source-charset:.XYZ', language: ['c', 'cpp'])
-endif
-```
-
-See Microsoft documentation for details:
-https://docs.microsoft.com/en-us/cpp/build/reference/source-charset-set-source-character-set.
diff --git a/docs/markdown/snippets/python_dependency_args_removed.md b/docs/markdown/snippets/python_dependency_args_removed.md
deleted file mode 100644
index 7258083..0000000
--- a/docs/markdown/snippets/python_dependency_args_removed.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## The Python Modules dependency method no longer accepts positional arguments
-
-Previously these were igrnoed with a warning, now they're a hard error.
diff --git a/docs/markdown/snippets/python_install_path.md b/docs/markdown/snippets/python_install_path.md
deleted file mode 100644
index 4f22e50..0000000
--- a/docs/markdown/snippets/python_install_path.md
+++ /dev/null
@@ -1,12 +0,0 @@
-## Override python installation paths
-
-The `python` module now has options to control where modules are installed:
-- python.platlibdir: Directory for site-specific, platform-specific files.
-- python.purelibdir: Directory for site-specific, non-platform-specific files.
-
-Those options are used by python module methods `python.install_sources()` and
-`python.get_install_dir()`. By default Meson tries to detect the correct installation
-path, but make them relative to the installation `prefix`, which will often result
-in installed python modules to not be found by the interpreter unless `prefix`
-is `/usr` on Linux, or for example `C:\Python39` on Windows. These new options
-can be absolute paths outside of `prefix`.
diff --git a/docs/markdown/snippets/qt_module_generated_inputs.md b/docs/markdown/snippets/qt_module_generated_inputs.md
deleted file mode 100644
index a4dfc4c..0000000
--- a/docs/markdown/snippets/qt_module_generated_inputs.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## The qt modules now accept generated outputs as inputs for qt.compile_*
-
-This means you can uset `custom_target`, custom_target indices
-(`custom_target[0]`, for example), or the output of `generator.process` as
-inputs to the various `qt.compile_*` methods.
-
-```meson
-qt = import('qt5')
-
-ct = custom_target(...)
-
-out = qt.compile_ui(sources : ct)
-```
diff --git a/docs/markdown/snippets/relative_destdir.md b/docs/markdown/snippets/relative_destdir.md
deleted file mode 100644
index 1498646..0000000
--- a/docs/markdown/snippets/relative_destdir.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Install DESTDIR relative to build directory
-
-When `DESTDIR` environment or `meson install --destdir` option is a relative path,
-it is now assumed to be relative to the build directory. An absolute path will be
-set into environment when executing scripts. It was undefined behavior in prior
-Meson versions but was working as relative to build directory most of the time.
diff --git a/docs/markdown/snippets/remove_unittest_args_method.md b/docs/markdown/snippets/remove_unittest_args_method.md
deleted file mode 100644
index 4373332..0000000
--- a/docs/markdown/snippets/remove_unittest_args_method.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Compiler.unittest_args has been removed
-
-It's never been documented, and it's been marked deprecated for a long time, so
-let's remove it.
diff --git a/docs/markdown/snippets/run_target-depends.md b/docs/markdown/snippets/run_target-depends.md
deleted file mode 100644
index 11a459c..0000000
--- a/docs/markdown/snippets/run_target-depends.md
+++ /dev/null
@@ -1,20 +0,0 @@
-## `run_target` can now be used as a dependency
-
-A `run_target()` can now be saved in a variable and reused as a dependency in
-an `alias_target()`. This can be used to create custom alias rules that ensure
-multiple other targets are run, even if those targets don't produce output
-files.
-
-For example:
-
-```
-i18n = import('i18n')
-
-all_pot_targets = []
-
-foo_i18n = i18n.gettext('foo')
-
-all_pot_targets += foo_i18n[1]
-
-alias_target('all-pot', all_pot_targets)
-```
diff --git a/docs/markdown/snippets/rust-clippy-driver-support.md b/docs/markdown/snippets/rust-clippy-driver-support.md
deleted file mode 100644
index c486473..0000000
--- a/docs/markdown/snippets/rust-clippy-driver-support.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Support for clippy-driver as a rustc wrapper
-
-Clippy is a popular linting tool for Rust, and is invoked in place of rustc as a
-wrapper. Unfortunately it doesn't proxy rustc's output, so we need to have a
-small wrapper around it so that Meson can correctly detect the underlying rustc,
-but still display clippy
diff --git a/docs/markdown/snippets/rustc-improvements.md b/docs/markdown/snippets/rustc-improvements.md
deleted file mode 100644
index 869888c..0000000
--- a/docs/markdown/snippets/rustc-improvements.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Improvements for the Rustc compiler
-
-- Werror now works, this set's `-D warnings`, which will cause rustc to error
- for every warning not explicitly disabled
-- warning levels have been implemented
-- support for meson's pic has been enabled
diff --git a/docs/markdown/snippets/static_fallback_override.md b/docs/markdown/snippets/static_fallback_override.md
deleted file mode 100644
index 1a6faaf..0000000
--- a/docs/markdown/snippets/static_fallback_override.md
+++ /dev/null
@@ -1,46 +0,0 @@
-## `static` keyword argument to `meson.override_dependency()`
-
-It is now possible to override shared and/or static dependencies separately.
-When the `static` keyword argument is not specified in `dependency()`, the first
-override will be used (`static_dep` in the example below).
-```meson
-static_lib = static_library()
-static_dep = declare_dependency(link_with: static_lib)
-meson.override_dependency('foo', static_dep, static: true)
-
-shared_lib = shared_library()
-shared_dep = declare_dependency(link_with: shared_lib)
-meson.override_dependency('foo', shared_dep, static: false)
-
-# Returns static_dep
-dependency('foo')
-
-# Returns static_dep
-dependency('foo', static: true)
-
-# Returns shared_dep
-dependency('foo', static: false)
-```
-
-When the `static` keyword argument is not specified in `meson.override_dependency()`,
-the dependency is assumed to follow the value of `default_library` option.
-```meson
-dep = declare_dependency(...)
-meson.override_dependency('foo', dep)
-
-# Always works
-dependency('foo')
-
-# Works only if default_library is 'static' or 'both'
-dependency('foo', static: true)
-
-# Works only if default_library is 'shared' or 'both'
-dependency('foo', static: false)
-```
-
-## `dependency()` sets `default_library` on fallback subproject
-
-When the `static` keyword argument is set but `default_library` is missing in
-`default_options`, `dependency()` will set it when configuring fallback
-subproject. `dependency('foo', static: true)` is now equivalent to
-`dependency('foo', static: true, default_options: ['default_library=static'])`.
diff --git a/docs/markdown/snippets/str_join.md b/docs/markdown/snippets/str_join.md
deleted file mode 100644
index b430d66..0000000
--- a/docs/markdown/snippets/str_join.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Relax restrictions of `str.join()`
-
-Since 0.60.0, the [[str.join]] method can take an arbitrary number of arguments
-instead of just one list. Additionally, all lists past to [[str.join]] will now
-be flattened.
diff --git a/docs/markdown/snippets/subprojects_packagefiles.md b/docs/markdown/snippets/subprojects_packagefiles.md
deleted file mode 100644
index 7628f54..0000000
--- a/docs/markdown/snippets/subprojects_packagefiles.md
+++ /dev/null
@@ -1,11 +0,0 @@
-## New `subprojects packagefiles` subcommand
-
-It is now possible to re-apply `meson.build` overlays (`patch_filename` or
-`patch_directory` in the wrap ini file) after a subproject was downloaded and
-set up, via `meson subprojects packagefiles --apply <wrap-name>`.
-
-It is also possible for `patch_directory` overlays in a `[wrap-file]`, to copy
-the packagefiles out of the subproject and back into `packagefiles/<patch_directory>/`
-via `meson subprojects packagefiles --save <wrap-name>`. This is useful for
-testing an edit in the subproject and then saving it back to the overlay which
-is checked into git.
diff --git a/docs/markdown/snippets/uninstalled_static_linker.md b/docs/markdown/snippets/uninstalled_static_linker.md
deleted file mode 100644
index cd2e4b0..0000000
--- a/docs/markdown/snippets/uninstalled_static_linker.md
+++ /dev/null
@@ -1,11 +0,0 @@
-## More efficient static linking of uninstalled libraries
-
-A somewhat common use case of [[static_library]] is to create uninstalled
-internal convenience libraries which are solely meant to be linked to other
-targets. Some build systems call these "object libraries". Meson's
-implementation does always create a static archive.
-
-This will now check to see if the static linker supports "thin archives"
-(archives which do not contain the actual object code, only references to their
-location on disk) and if so, use them to minimize space usage and speed up
-linking.
diff --git a/docs/markdown/snippets/unknown-options-always-fatal.md b/docs/markdown/snippets/unknown-options-always-fatal.md
deleted file mode 100644
index ce982c3..0000000
--- a/docs/markdown/snippets/unknown-options-always-fatal.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Unknown options are now always fatal
-
-Passing unknown options to "meson setup" or "meson configure" is now
-always fatal. That is, Meson will exit with an error code if this
-happens. Previous Meson versions only showed a warning message.
diff --git a/docs/markdown/snippets/unset_variable.md b/docs/markdown/snippets/unset_variable.md
deleted file mode 100644
index 7b2bcdb..0000000
--- a/docs/markdown/snippets/unset_variable.md
+++ /dev/null
@@ -1,16 +0,0 @@
-## `unset_variable()`
-
-`unset_variable()` can be used to unset a variable. Reading a variable after
-calling `unset_variable()` will raise an exception unless the variable is set
-again.
-
-```meson
-# tests/meson.build
-tests = ['test1', 'test2']
-
-# ...
-
-unset_variable('tests')
-
-# tests is no longer usable until it is set again
-```
diff --git a/docs/markdown/snippets/vsenv.md b/docs/markdown/snippets/vsenv.md
deleted file mode 100644
index 16e9424..0000000
--- a/docs/markdown/snippets/vsenv.md
+++ /dev/null
@@ -1,14 +0,0 @@
-## Force Visual Studio environment activation
-
-Since `0.59.0`, meson automatically activates Visual Studio environment on Windows
-for all its subcommands, but only if no other compilers (e.g. `gcc` or `clang`)
-are found, and silently continue if Visual Studio activation fails.
-
-`meson setup --vsenv` command line argument can now be used to force Visual Studio
-activation even when other compilers are found. It also make Meson abort with an
-error message when activation fails. This is especially useful for Github Action
-because their Windows images have gcc in their PATH by default.
-
-`--vsenv` is set by default when using `vs` backend.
-
-Only `setup`, `compile`, `dist` and `devenv` subcommands now activate Visual Studio.
diff --git a/docs/markdown/snippets/waf.md b/docs/markdown/snippets/waf.md
deleted file mode 100644
index 87634a0..0000000
--- a/docs/markdown/snippets/waf.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Waf support in external-project module
-
-If the first argument is `'waf'`, special treatment is done for the
-[waf](https://waf.io/) build system. The waf executable must be
-found either in the current directory, or in system `PATH`.
diff --git a/docs/markdown/snippets/wasmlibs.md b/docs/markdown/snippets/wasmlibs.md
deleted file mode 100644
index 15434d1..0000000
--- a/docs/markdown/snippets/wasmlibs.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## Add support for `find_library` in Emscripten
-
-The `find_library` method can be used to find your own JavaScript
-libraries. The limitation is that they must have the file extension
-`.js`. Other library lookups will look up "native" libraries from the
-system like currently. A typical usage would look like this:
-
-```meson
-glue_lib = cc.find_library('gluefuncs.js',
- dirs: meson.current_source_dir())
-executable('prog', 'prog.c',
- dependencies: glue_lib)
-```
diff --git a/docs/sitemap.txt b/docs/sitemap.txt
index 3dbcca4..a6ea304 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.60.0.md
Release-notes-for-0.59.0.md
Release-notes-for-0.58.0.md
Release-notes-for-0.57.0.md