diff options
Diffstat (limited to 'docs/markdown')
20 files changed, 185 insertions, 159 deletions
diff --git a/docs/markdown/Release-notes-for-0.64.0.md b/docs/markdown/Release-notes-for-0.64.0.md new file mode 100644 index 0000000..e31f85c --- /dev/null +++ b/docs/markdown/Release-notes-for-0.64.0.md @@ -0,0 +1,185 @@ +--- +title: Release 0.64.0 +short-description: Release notes for 0.64.0 +... + +# New features + +## Add `optimization` `plain` option + +The `optimization` built-in option now accepts `plain` value, +which will not set any optimization flags. This is now the default +value of the flag for `buildtype=plain`, which is useful for distros, +that set the optimization and hardening flags by other means. + +If you are using the value of `get_option('optimization')` in your +Meson scripts, make sure you are not making assumptions about it, +such as that the value can be passed to a compiler in `-O` flag. + +## New languages: `nasm` and `masm` + +When the `nasm` language is added to the project, `.asm` files are +automatically compiled with NASM. This is only supported for x86 and x86_64 CPU +family. `yasm` is used as fallback if `nasm` command is not found. + +When the `masm` language is added to the project, `.masm` files are +automatically compiled with Microsoft's Macro Assembler. This is only supported +for x86, x86_64, ARM and AARCH64 CPU families. + +Note that GNU Assembly files usually have `.s` or `.S` extension and were already +built using C compiler such as GCC or CLANG. + +```meson +project('test', 'nasm') + +exe = executable('hello', 'hello.asm') +test('hello', exe) +``` + +## Pager and colors for `meson configure` output + +The output of `meson configure`, printing all options, is now more readable by +automatically using a pager (`less` by default) and colors. The pager used can +be controlled by setting `PAGER` environment variable, or `--no-pager` command +line option. + +## various `install_*` functions no longer handle the sticky bit + +It is not possible to portably grant the sticky bit to a file, and where +possible, it doesn't do anything. It is not expected that any users are using +this functionality. + +Variously: +- on Linux, it has no meaningful effect +- on Solaris, attempting to set the permission bit is silently ignored by the OS +- on FreeBSD, attempting to set the permission bit is an error + +Attempting to set this permission bit in the `install_mode:` kwarg to any +function other than [[install_emptydir]] will now result in a warning, and the +permission bit being ignored. + +## `fs.copyfile` to replace `configure_file(copy : true)` + +A new method has been added to the `fs` module, `copyfile`. This method replaces +`configure_file(copy : true)`, but only copies files. Unlike `configure_file()` +it runs at build time, and the output name is optional defaulting to the +filename without paths of the input if unset: + +```meson +fs.copyfile('src/file.txt') +``` +Will create a file in the current build directory called `file.txt` + + +```meson +fs.copyfile('file.txt', 'outfile.txt') +``` +Will create a copy renamed to `outfile.txt` + +## Added `update_mime_database` to `gnome.post_install()` + +Applications that install a `.xml` file containing a `mime-type` need to update +the cache upon installation. Most applications do that using a custom script, +but it can now be done by Meson directly. + +## Added preserve_path arg to install_data + +The [[install_data]] function now has an optional argument `preserve_path` +that allows installing multi-directory data file structures that live +alongside source code with a single command. + +This is also available in the specialized `py_installation.install_sources` +method. + +## BSD support for the `jni` dependency + +This system dependency now supports all BSD systems that Meson currently +supports, including FreeBSD, NetBSD, OpenBSD, and DragonflyBSD. + +## Credentials from `~/.netrc` for `https` URLs + +When a subproject is downloaded using an `https://` URL, credentials from +`~/.netrc` are now used. This avoids hardcoding login and password in plain +text in the URL itself. + +## Basic support for oneAPI compilers on Linux and Windows + +To use on Linux: + +``` +source /opt/intel/oneapi/setvars.sh +CC=icx CXX=icpx FC=ifx meson setup builddir +``` + +## New method to preprocess source files + +Compiler object has a new `preprocess()` method. It is supported by all C/C++ +compilers. It preprocess sources without compiling them. + +The preprocessor will receive the same arguments (include directories, defines, +etc) as with normal compilation. That includes for example args added with +`add_project_arguments()`, or on the command line with `-Dc_args=-DFOO`. + +```meson +cc = meson.get_compiler('c') +pp_files = cc.preprocess('foo.c', 'bar.c', output: '@PLAINNAME@') +exe = executable('app', pp_files) +``` + +## python.find_installation() now accepts pure argument + +The default value of `pure:` for `py.install_sources()` and +`py.get_install_dir()` can now be changed by explicitly passing a `pure:` kwarg +to `find_installation()`. + +This can be used to ensure that multiple `install_sources()` invocations do not +forget to specify the kwarg each time. + +## Generates rust-project.json when there are Rust targets + +This is a format similar to compile_commands.json, but specifically used by the +official rust LSP, rust-analyzer. It is generated automatically if there are +Rust targets, and is placed in the build directory. + +## `summary()` accepts disablers + +Disabler options can be passed to `summary()` as the value to be printed. + +## Option to allow meson test to fail fast after the first failing testcase + +`meson test --maxfail=1` will now cause all pending or in-progress tests to be +canceled or interrupted after 1 test is marked as failing. This can be used for +example to quit a CI run and avoid burning additional time as soon as it is +known that the overall return status will be failing. + +## Incremental ThinLTO with `b_thinlto_cache` + +[Incremental ThinLTO](https://clang.llvm.org/docs/ThinLTO.html#incremental) can now be enabled by passing +`-Db_thinlto_cache=true` during setup. The use of caching speeds up incremental builds significantly while retaining all +the runtime performance benefits of ThinLTO. + +The cache location defaults to a Meson-managed directory inside the build folder, but can be customized with +`b_thinlto_cache_dir`. + +## Update all wraps from WrapDB with `meson wrap update` command + +The command `meson wrap update`, with no extra argument, will now update all wraps +that comes from WrapDB to the latest version. The extra `--force` argument will +also replace wraps that do not come from WrapDB if one is available. + +The command `meson subprojects update` will not download new wrap files from +WrapDB any more. + +## Added `include_core_only` arg to wayland.scan_xml. + +The `scan_xml` function from the wayland module now has an optional bool +argument `include_core_only`, so that headers generated by wayland-scanner now +only include `wayland-client-core.h` instead of `wayland-client.h`. + +## Automatic fallback using WrapDB + +A new command has been added: `meson wrap update-db`. It downloads the list of +wraps available in [WrapDB](wrapdb.mesonbuild.com) and stores it locally in +`subprojects/wrapdb.json`. When that file exists and a dependency is not found +on the system but is available in WrapDB, Meson will automatically download it. + diff --git a/docs/markdown/snippets/add_optimization_plain_option.md b/docs/markdown/snippets/add_optimization_plain_option.md deleted file mode 100644 index 67910df..0000000 --- a/docs/markdown/snippets/add_optimization_plain_option.md +++ /dev/null @@ -1,10 +0,0 @@ -## Add `optimization` `plain` option - -The `optimization` built-in option now accepts `plain` value, -which will not set any optimization flags. This is now the default -value of the flag for `buildtype=plain`, which is useful for distros, -that set the optimization and hardening flags by other means. - -If you are using the value of `get_option('optimization')` in your -Meson scripts, make sure you are not making assumptions about it, -such as that the value can be passed to a compiler in `-O` flag. diff --git a/docs/markdown/snippets/asm.md b/docs/markdown/snippets/asm.md deleted file mode 100644 index 1055b53..0000000 --- a/docs/markdown/snippets/asm.md +++ /dev/null @@ -1,19 +0,0 @@ -## New languages: `nasm` and `masm` - -When the `nasm` language is added to the project, `.asm` files are -automatically compiled with NASM. This is only supported for x86 and x86_64 CPU -family. `yasm` is used as fallback if `nasm` command is not found. - -When the `masm` language is added to the project, `.masm` files are -automatically compiled with Microsoft's Macro Assembler. This is only supported -for x86, x86_64, ARM and AARCH64 CPU families. - -Note that GNU Assembly files usually have `.s` or `.S` extension and were already -built using C compiler such as GCC or CLANG. - -```meson -project('test', 'nasm') - -exe = executable('hello', 'hello.asm') -test('hello', exe) -``` diff --git a/docs/markdown/snippets/conf_pager.md b/docs/markdown/snippets/conf_pager.md deleted file mode 100644 index 3d936ad..0000000 --- a/docs/markdown/snippets/conf_pager.md +++ /dev/null @@ -1,6 +0,0 @@ -## Pager and colors for `meson configure` output - -The output of `meson configure`, printing all options, is now more readable by -automatically using a pager (`less` by default) and colors. The pager used can -be controlled by setting `PAGER` environment variable, or `--no-pager` command -line option. diff --git a/docs/markdown/snippets/deprecated_install_mode_sticky.md b/docs/markdown/snippets/deprecated_install_mode_sticky.md deleted file mode 100644 index 3168df6..0000000 --- a/docs/markdown/snippets/deprecated_install_mode_sticky.md +++ /dev/null @@ -1,14 +0,0 @@ -## various `install_*` functions no longer handle the sticky bit - -It is not possible to portably grant the sticky bit to a file, and where -possible, it doesn't do anything. It is not expected that any users are using -this functionality. - -Variously: -- on Linux, it has no meaningful effect -- on Solaris, attempting to set the permission bit is silently ignored by the OS -- on FreeBSD, attempting to set the permission bit is an error - -Attempting to set this permission bit in the `install_mode:` kwarg to any -function other than [[install_emptydir]] will now result in a warning, and the -permission bit being ignored. diff --git a/docs/markdown/snippets/fs_copyfile.md b/docs/markdown/snippets/fs_copyfile.md deleted file mode 100644 index dfb5d89..0000000 --- a/docs/markdown/snippets/fs_copyfile.md +++ /dev/null @@ -1,17 +0,0 @@ -## `fs.copyfile` to replace `configure_file(copy : true)` - -A new method has been added to the `fs` module, `copyfile`. This method replaces -`configure_file(copy : true)`, but only copies files. Unlike `configure_file()` -it runs at build time, and the output name is optional defaulting to the -filename without paths of the input if unset: - -```meson -fs.copyfile('src/file.txt') -``` -Will create a file in the current build directory called `file.txt` - - -```meson -fs.copyfile('file.txt', 'outfile.txt') -``` -Will create a copy renamed to `outfile.txt` diff --git a/docs/markdown/snippets/gnome_update_mime_database.md b/docs/markdown/snippets/gnome_update_mime_database.md deleted file mode 100644 index a60381d..0000000 --- a/docs/markdown/snippets/gnome_update_mime_database.md +++ /dev/null @@ -1,5 +0,0 @@ -## Added `update_mime_database` to `gnome.post_install()` - -Applications that install a `.xml` file containing a `mime-type` need to update -the cache upon installation. Most applications do that using a custom script, -but it can now be done by Meson directly. diff --git a/docs/markdown/snippets/install_sources_preserve_path_arg.md b/docs/markdown/snippets/install_sources_preserve_path_arg.md deleted file mode 100644 index 0bc37f2..0000000 --- a/docs/markdown/snippets/install_sources_preserve_path_arg.md +++ /dev/null @@ -1,8 +0,0 @@ -## Added preserve_path arg to install_data - -The [[install_data]] function now has an optional argument `preserve_path` -that allows installing multi-directory data file structures that live -alongside source code with a single command. - -This is also available in the specialized `py_installation.install_sources` -method. diff --git a/docs/markdown/snippets/jni_system_dependency_bsd_support.md b/docs/markdown/snippets/jni_system_dependency_bsd_support.md deleted file mode 100644 index bf1a299..0000000 --- a/docs/markdown/snippets/jni_system_dependency_bsd_support.md +++ /dev/null @@ -1,4 +0,0 @@ -## BSD support for the `jni` dependency - -This system dependency now supports all BSD systems that Meson currently -supports, including FreeBSD, NetBSD, OpenBSD, and DragonflyBSD. diff --git a/docs/markdown/snippets/netrc.md b/docs/markdown/snippets/netrc.md deleted file mode 100644 index 1b81c55..0000000 --- a/docs/markdown/snippets/netrc.md +++ /dev/null @@ -1,5 +0,0 @@ -## Credentials from `~/.netrc` for `https` URLs - -When a subproject is downloaded using an `https://` URL, credentials from -`~/.netrc` are now used. This avoids hardcoding login and password in plain -text in the URL itself. diff --git a/docs/markdown/snippets/oneapi_compilers.md b/docs/markdown/snippets/oneapi_compilers.md deleted file mode 100644 index a456e30..0000000 --- a/docs/markdown/snippets/oneapi_compilers.md +++ /dev/null @@ -1,8 +0,0 @@ -## Basic support for oneAPI compilers on Linux and Windows - -To use on Linux: - -``` -source /opt/intel/oneapi/setvars.sh -CC=icx CXX=icpx FC=ifx meson setup builddir -``` diff --git a/docs/markdown/snippets/preprocess.md b/docs/markdown/snippets/preprocess.md deleted file mode 100644 index 7e6dd0a..0000000 --- a/docs/markdown/snippets/preprocess.md +++ /dev/null @@ -1,14 +0,0 @@ -## New method to preprocess source files - -Compiler object has a new `preprocess()` method. It is supported by all C/C++ -compilers. It preprocess sources without compiling them. - -The preprocessor will receive the same arguments (include directories, defines, -etc) as with normal compilation. That includes for example args added with -`add_project_arguments()`, or on the command line with `-Dc_args=-DFOO`. - -```meson -cc = meson.get_compiler('c') -pp_files = cc.preprocess('foo.c', 'bar.c', output: '@PLAINNAME@') -exe = executable('app', pp_files) -``` diff --git a/docs/markdown/snippets/python-installation-pure.md b/docs/markdown/snippets/python-installation-pure.md deleted file mode 100644 index 905c7b8..0000000 --- a/docs/markdown/snippets/python-installation-pure.md +++ /dev/null @@ -1,8 +0,0 @@ -## python.find_installation() now accepts pure argument - -The default value of `pure:` for `py.install_sources()` and -`py.get_install_dir()` can now be changed by explicitly passing a `pure:` kwarg -to `find_installation()`. - -This can be used to ensure that multiple `install_sources()` invocations do not -forget to specify the kwarg each time. diff --git a/docs/markdown/snippets/rust_project_json.md b/docs/markdown/snippets/rust_project_json.md deleted file mode 100644 index e87a7db..0000000 --- a/docs/markdown/snippets/rust_project_json.md +++ /dev/null @@ -1,5 +0,0 @@ -## Generates rust-project.json when there are Rust targets - -This is a format similar to compile_commands.json, but specifically used by the -official rust LSP, rust-analyzer. It is generated automatically if there are -Rust targets, and is placed in the build directory. diff --git a/docs/markdown/snippets/summary-disabler.md b/docs/markdown/snippets/summary-disabler.md deleted file mode 100644 index 97b8d0f..0000000 --- a/docs/markdown/snippets/summary-disabler.md +++ /dev/null @@ -1,3 +0,0 @@ -## `summary()` accepts disablers - -Disabler options can be passed to `summary()` as the value to be printed. diff --git a/docs/markdown/snippets/test-maxfail.md b/docs/markdown/snippets/test-maxfail.md deleted file mode 100644 index 1487977..0000000 --- a/docs/markdown/snippets/test-maxfail.md +++ /dev/null @@ -1,6 +0,0 @@ -## Option to allow meson test to fail fast after the first failing testcase - -`meson test --maxfail=1` will now cause all pending or in-progress tests to be -canceled or interrupted after 1 test is marked as failing. This can be used for -example to quit a CI run and avoid burning additional time as soon as it is -known that the overall return status will be failing. diff --git a/docs/markdown/snippets/thinlto_cache.md b/docs/markdown/snippets/thinlto_cache.md deleted file mode 100644 index 5c6e202..0000000 --- a/docs/markdown/snippets/thinlto_cache.md +++ /dev/null @@ -1,8 +0,0 @@ -## Incremental ThinLTO with `b_thinlto_cache` - -[Incremental ThinLTO](https://clang.llvm.org/docs/ThinLTO.html#incremental) can now be enabled by passing -`-Db_thinlto_cache=true` during setup. The use of caching speeds up incremental builds significantly while retaining all -the runtime performance benefits of ThinLTO. - -The cache location defaults to a Meson-managed directory inside the build folder, but can be customized with -`b_thinlto_cache_dir`. diff --git a/docs/markdown/snippets/update_wrapdb.md b/docs/markdown/snippets/update_wrapdb.md deleted file mode 100644 index a4e4f27..0000000 --- a/docs/markdown/snippets/update_wrapdb.md +++ /dev/null @@ -1,8 +0,0 @@ -## Update all wraps from WrapDB with `meson wrap update` command - -The command `meson wrap update`, with no extra argument, will now update all wraps -that comes from WrapDB to the latest version. The extra `--force` argument will -also replace wraps that do not come from WrapDB if one is available. - -The command `meson subprojects update` will not download new wrap files from -WrapDB any more. diff --git a/docs/markdown/snippets/wayland_scan_xml_core_only_arg.md b/docs/markdown/snippets/wayland_scan_xml_core_only_arg.md deleted file mode 100644 index 9778421..0000000 --- a/docs/markdown/snippets/wayland_scan_xml_core_only_arg.md +++ /dev/null @@ -1,5 +0,0 @@ -## Added `include_core_only` arg to wayland.scan_xml. - -The `scan_xml` function from the wayland module now has an optional bool -argument `include_core_only`, so that headers generated by wayland-scanner now -only include `wayland-client-core.h` instead of `wayland-client.h`. diff --git a/docs/markdown/snippets/wrapdb.md b/docs/markdown/snippets/wrapdb.md deleted file mode 100644 index d5caf4f..0000000 --- a/docs/markdown/snippets/wrapdb.md +++ /dev/null @@ -1,6 +0,0 @@ -## Automatic fallback using WrapDB - -A new command has been added: `meson wrap update-db`. It downloads the list of -wraps available in [WrapDB](wrapdb.mesonbuild.com) and stores it locally in -`subprojects/wrapdb.json`. When that file exists and a dependency is not found -on the system but is available in WrapDB, Meson will automatically download it. |