Set up the 0.59.0 release.
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 @@
 		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 @@
     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