| --- |
| title: Release 0.41 |
| short-description: Release notes for 0.41 |
| ... |
| |
| # New features |
| |
| ## Dependency Handler for LLVM |
| |
| Native support for linking against LLVM using the `dependency` function. |
| |
| ## vcs_tag keyword fallback is now optional |
| |
| The `fallback` keyword in `vcs_tag()` is now optional. If not given, |
| its value defaults to the return value of `meson.project_version()`. |
| |
| ## Better quoting of special characters in ninja command invocations |
| |
| The ninja backend now quotes special characters that may be |
| interpreted by ninja itself, providing better interoperability with |
| custom commands. This support may not be perfect; please report any |
| issues found with special characters to the issue tracker. |
| |
| ## Pkgconfig support for custom variables |
| |
| The Pkgconfig module object can add arbitrary variables to the generated .pc |
| file with the new `variables` keyword: |
| ```meson |
| pkg.generate(libraries : libs, |
| subdirs : h, |
| version : '1.0', |
| name : 'libsimple', |
| filebase : 'simple', |
| description : 'A simple demo library.', |
| variables : ['datadir=${prefix}/data']) |
| ``` |
| |
| ## A target for creating tarballs |
| |
| Creating distribution tarballs is simple: |
| |
| ninja dist |
| |
| This will create a `.tar.xz` archive of the source code including |
| submodules without any revision control information. This command also |
| verifies that the resulting archive can be built, tested and |
| installed. This is roughly equivalent to the `distcheck` target in |
| other build systems. Currently this only works for projects using Git |
| and only with the Ninja backend. |
| |
| ## Support for passing arguments to Rust compiler |
| |
| Targets for building rust now take a `rust_args` keyword. |
| |
| ## Code coverage export for tests |
| |
| Code coverage can be generated for tests by passing the `--cov` argument to |
| the `run_tests.py` test runner. Note, since multiple processes are used, |
| coverage must be combined before producing a report (`coverage3 combine`). |
| |
| ## Reproducible builds |
| |
| All known issues have been fixed and Meson can now build reproducible Debian |
| packages out of the box. |
| |
| ## Extended template substitution in configure_file |
| |
| The output argument of `configure_file()` is parsed for @BASENAME@ and |
| @PLAINNAME@ substitutions. |
| |
| ## Cross-config property for overriding whether an exe wrapper is needed |
| |
| The new `needs_exe_wrapper` property allows overriding auto-detection for |
| cases where `build_machine` appears to be compatible with `host_machine`, |
| but actually isn't. For example when: |
| - `build_machine` is macOS and `host_machine` is the iOS Simulator |
| - the `build_machine`'s libc is glibc but the `host_machine` libc is uClibc |
| - code relies on kernel features not available on the `build_machine` |
| |
| ## Support for capturing stdout of a command in configure_file |
| |
| `configure_file()` now supports a new keyword - `capture`. When this argument |
| is set to true, Meson captures `stdout` of the `command` and writes it to |
| the target file specified as `output`. |