aboutsummaryrefslogtreecommitdiffstats
path: root/meson/docs/markdown/Release-notes-for-0.37.0.md
diff options
context:
space:
mode:
Diffstat (limited to 'meson/docs/markdown/Release-notes-for-0.37.0.md')
-rw-r--r--meson/docs/markdown/Release-notes-for-0.37.0.md173
1 files changed, 173 insertions, 0 deletions
diff --git a/meson/docs/markdown/Release-notes-for-0.37.0.md b/meson/docs/markdown/Release-notes-for-0.37.0.md
new file mode 100644
index 000000000..930c1d1f4
--- /dev/null
+++ b/meson/docs/markdown/Release-notes-for-0.37.0.md
@@ -0,0 +1,173 @@
+---
+title: Release 0.37
+short-description: Release notes for 0.37
+...
+
+# New features
+
+## Mesontest
+
+Mesontest is a new testing tool that allows you to run your tests in
+many different ways. As an example you can run tests multiple times:
+
+ mesontest --repeat=1000 a_test
+
+or with an arbitrary wrapper executable:
+
+ mesontest --wrap='valgrind --tool=helgrind' a_test
+
+or under `gdb`, 1000 times in a row. This is handy for tests that fail
+spuriously, as when the crash happens you are given the full GDB
+command line:
+
+ mesontest --repeat=1000 --gdb a_test
+
+## Mesonrewriter
+
+Mesonrewriter is an experimental tool to manipulate your build
+definitions programmatically. It is not installed by default yet but
+those interested can run it from the source repository.
+
+As an example, here is how you would add a source file to a build target:
+
+ mesonrewriter add --target=program --filename=new_source.c
+
+## Shared modules
+
+The new `shared_module` function allows the creation of shared
+modules, that is, extension modules such as plugins that are meant to
+be used solely with `dlopen` rather than linking them to targets.
+
+## Gnome module
+
+- Detect required programs and print useful errors if missing
+
+### gtkdoc
+
+- Allow passing a list of directories to `src_dir` keyword argument
+- Add `namespace` keyword argument
+- Add `mode` keyword argument
+- Fix `gtkdoc-scangobj` finding local libraries
+
+### compile_resources
+
+- Add `gresource_bundle` keyword argument to output `.gresource` files
+- Add `export` and `install_header` keyword arguments
+- Use depfile support available in GLib >= 2.52.0
+
+## i18n module
+
+- Add `merge_file()` function for creating translated files
+- Add `preset` keyword argument to included common gettext flags
+- Read languages from `LINGUAS` file
+
+## LLVM IR compilation
+
+Meson has long had support for compiling assembler (GAS) files. In
+this release we add support for compiling LLVM IR files in a similar
+way when building with the Clang compiler. Just add it to the list of
+files when creating a `library` or `executable` target like any other
+source file. No special handling is required:
+
+```meson
+executable('some-exe', 'main.c', 'asm-file.S', 'ir-file.ll')
+```
+
+As always, you can also mix LLVM IR files with C++, C, and Assembly
+(GAS) sources.
+
+## ViM indent and syntax files
+
+We now include filetype, indent, and syntax files for ViM [with the
+source
+tree](https://github.com/mesonbuild/meson/tree/master/data/syntax-highlighting/vim).
+Please file issues (or pull requests!) for enhancements or if you face
+any problems using them.
+
+## Push URLs in .wrap files
+
+[.wrap files](Using-the-WrapDB.md) for subprojects can now include a
+separate push URL to allow developers to push changes directly from a
+subproject git checkout.
+
+## pkg-config dependencies
+
+Meson now supports multiple version restrictions while searching for pkg-config dependencies.
+
+```meson
+# Just want a lower limit
+dependency('zlib', version : '>1.2.1')
+# Want both a lower and an upper limit
+dependency('opencv', version : ['>=2.3.0', '<=3.1.0'])
+# Want to exclude one specific broken version
+dependency('foolite', version : ['>=3.12.1', '!=3.13.99'])
+```
+
+## Overriding more binaries with environment variables
+
+You can now specify the binary to be used for the following tools by
+setting the corresponding environment variable
+
+| Name | Environment variable |
+| ---- | -------------------- |
+| pkg-config | PKG_CONFIG |
+| readelf | READELF |
+| nm | NM |
+
+## Support for `localstatedir`
+
+Similar to other options such as `bindir` and `datadir`, you can now
+specify the `localstatedir` for a project by passing
+`--localstatedir=dir` to `meson` or `-Dlocalstatedir=dir` to
+`mesonconf` after configuration. You can also access it from inside
+the `meson.build` file with `get_option('localstatedir')`.
+
+## New compiler function `symbols_have_underscore_prefix`
+
+Checks if the compiler prefixes an underscore to C global symbols with
+the default calling convention. This is useful when linking to
+compiled assembly code, or other code that does not have its C symbol
+mangling handled transparently by the compiler.
+
+```meson
+cc = meson.get_compiler('c')
+conf = configuration_data()
+if cc.symbols_have_underscore_prefix()
+ conf.set('SYMBOLS_HAVE_UNDERSCORE', true)
+endif
+```
+
+C symbol mangling is platform and architecture dependent, and a helper
+function is needed to detect it. For example, Windows 32-bit prefixes
+underscore, but 64-bit does not. Linux does not prefix an underscore
+but OS X does.
+
+## Vala
+
+GLib Resources compiled with
+[`gnome.compile_resources`](Gnome-module.md#compile_resources) that
+are added to the sources of a Vala build target will now cause the
+appropriate `--gresources` flag to be passed to the Vala compiler so
+you don't need to add that yourself to `vala_args:`.
+
+## Improvements to install scripts
+
+You can now pass arguments to install scripts added with
+[`meson.add_install_script()`](Reference-manual.md#meson-object). All
+arguments after the script name will be passed to the script.
+
+The `MESON_INSTALL_DESTDIR_PREFIX` environment variable is now set
+when install scripts are called. This contains the values of the
+`DESTDIR` environment variable and the `prefix` option passed to Meson
+joined together. This is useful because both those are usually
+absolute paths, and joining absolute paths in a cross-platform way is
+tricky. [`os.path.join` in
+Python](https://docs.python.org/3/library/os.path.html#os.path.join)
+will discard all previous path segments when it encounters an absolute
+path, and simply concatenating them will not work on Windows where
+absolute paths begin with the drive letter.
+
+## More install directories
+
+Added new options `sbindir` and `infodir` that can be used for
+installation.