| --- |
| title: Release 0.42 |
| short-description: Release notes for 0.42 |
| ... |
| |
| # New features |
| |
| ## Distribution tarballs from Mercurial repositories |
| |
| Creating distribution tarballs can now be made out of projects based |
| on Mercurial. As before, this remains possible only with the Ninja |
| backend. |
| |
| ## Keyword argument verification |
| |
| Meson will now check the keyword arguments used when calling any |
| function and print a warning if any of the keyword arguments is not |
| known. In the future this will become a hard error. |
| |
| ## Add support for Genie to Vala compiler |
| |
| The Vala compiler has an alternative syntax, Genie, that uses the |
| `.gs` file extension. Meson now recognises and uses Genie files. |
| |
| ## Pkgconfig support for additional cflags |
| |
| The Pkgconfig module object can add arbitrary extra cflags to the Cflags |
| value in the .pc file, using the "extra_cflags" keyword: |
| ```meson |
| pkg.generate(libraries : libs, |
| subdirs : h, |
| version : '1.0', |
| name : 'libsimple', |
| filebase : 'simple', |
| description : 'A simple demo library.', |
| extra_cflags : '-Dfoo' ) |
| ``` |
| |
| ## Base options accessible via get_option() |
| |
| Base options are now accessible via the get_option() function. |
| ```meson |
| uses_lto = get_option('b_lto') |
| ``` |
| |
| ## Allow crate type configuration for Rust compiler |
| |
| Rust targets now take an optional `rust_crate_type` keyword, allowing |
| you to set the crate type of the resulting artifact. Valid crate types |
| are `dylib` or `cdylib` for shared libraries, and `rlib` or |
| `staticlib` for static libraries. For more, see Rust's [linkage |
| reference][rust-linkage]. |
| |
| [rust-linkage]: https://doc.rust-lang.org/reference/linkage.html |
| |
| ## Simultaneous use of Address- and Undefined Behavior Sanitizers |
| |
| Both the address- and undefined behavior sanitizers can now be used |
| simultaneously by passing `-Db_sanitize=address,undefined` to Meson. |
| |
| ## Unstable SIMD module |
| |
| A new experimental module to compile code with many different SIMD |
| instruction sets and selecting the best one at runtime. This module |
| is unstable, meaning its API is subject to change in later releases. |
| It might also be removed altogether. |
| |
| |
| ## Import libraries for executables on Windows |
| |
| The new keyword `implib` to `executable()` allows generation of an import |
| library for the executable. |
| |
| ## Added build_rpath keyword argument |
| |
| You can specify `build_rpath : '/foo/bar'` in build targets and the |
| given path will get added to the target's rpath in the build tree. It |
| is removed during the install step. |
| |
| Meson will print a warning when the user tries to add an rpath linker |
| flag manually, e.g. via `link_args` to a target. This is not |
| recommended because having multiple rpath causes them to stomp on each |
| other. This warning will become a hard error in some future release. |
| |
| ## Vulkan dependency module |
| |
| Vulkan can now be used as native dependency. The dependency module |
| will detect the VULKAN_SDK environment variable or otherwise try to |
| receive the vulkan library and header via pkgconfig or from the |
| system. |
| |
| ## Limiting the maximum number of linker processes |
| |
| With the Ninja backend it is now possible to limit the maximum number of |
| concurrent linker processes. This is usually only needed for projects |
| that have many large link steps that cause the system to run out of |
| memory if they are run in parallel. This limit can be set with the |
| new `backend_max_links` option. |
| |
| ## Disable implicit include directories |
| |
| By default Meson adds the current source and build directories to the |
| header search path. On some rare occasions this is not desired. Setting |
| the `implicit_include_directories` keyword argument to `false` these |
| directories are not used. |
| |
| ## Support for MPI dependency |
| |
| MPI is now supported as a dependency. Because dependencies are |
| language-specific, you must specify the requested language with the |
| `language` keyword, i.e., `dependency('mpi', language='c')` will |
| request the C MPI headers and libraries. See [the MPI |
| dependency](Dependencies.md#mpi) for more information. |
| |
| ## Allow excluding files or directories from `install_subdir` |
| |
| The [`install_subdir`](Reference-manual.md#install_subdir) command |
| accepts the new `exclude_files` and `exclude_directories` keyword |
| arguments that allow specified files or directories to be excluded |
| from the installed subdirectory. |
| |
| ## Make all Meson functionality invokable via the main executable |
| |
| Previously Meson had multiple executables such as `mesonintrospect` |
| and `mesontest`. They are now invokable via the main Meson executable |
| like this: |
| |
| meson configure <arguments> # equivalent to mesonconf <options> |
| meson test <arguments> # equivalent to mesontest <arguments> |
| |
| The old commands are still available but they are deprecated |
| and will be removed in some future release. |
| |
| ## Pcap dependency detector |
| |
| Meson will automatically obtain dependency information for pcap |
| using the `pcap-config` tool. It is used like any other dependency: |
| |
| ```meson |
| pcap_dep = dependency('pcap', version : '>=1.0') |
| ``` |
| |
| ## GNOME module mkenums_simple() addition |
| |
| Most libraries and applications use the same standard templates for |
| glib-mkenums. There is now a new `mkenums_simple()` convenience method |
| that passes those default templates to glib-mkenums and allows some tweaks |
| such as optional function decorators or leading underscores. |