--- title: Release 0.42 short-description: Release notes for 0.42 (preliminary) ... **Preliminary, 0.42.0 has not been released yet.** # 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.