aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/Release-notes-for-0.53.0.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/markdown/Release-notes-for-0.53.0.md')
-rw-r--r--docs/markdown/Release-notes-for-0.53.0.md193
1 files changed, 193 insertions, 0 deletions
diff --git a/docs/markdown/Release-notes-for-0.53.0.md b/docs/markdown/Release-notes-for-0.53.0.md
new file mode 100644
index 0000000..22db714
--- /dev/null
+++ b/docs/markdown/Release-notes-for-0.53.0.md
@@ -0,0 +1,193 @@
+---
+title: Release 0.53.0
+short-description: Release notes for 0.53.0
+...
+
+# New features
+
+## A new module for filesystem operations
+
+The new `fs` module can be used to examine the contents of the current
+file system.
+
+```meson
+fs = import('fs')
+assert(fs.exists('important_file'),
+ 'The important file is missing.')
+```
+
+## meson dist --include-subprojects
+
+`meson dist` command line now gained `--include-subprojects` command line option.
+When enabled, the source tree of all subprojects used by the current build will
+also be included in the final tarball. This is useful to distribute self contained
+tarball that can be built offline (i.e. `--wrap-mode=nodownload`).
+
+## Added new Meson templates for `Dlang`, `Rust`, `Objective-C`
+
+Meson now ships with predefined project templates for `Dlang`,
+`Fortran`, `Rust`, `Objective-C`, and by passing the associated flags `d`,
+`fortran`, `rust`, `objc` to `meson init --language`.
+
+## Add a new summary() function
+
+A new function [`summary()`](Reference-manual.md#summary) has been added to
+summarize build configuration at the end of the build process.
+
+Example:
+```meson
+project('My Project', version : '1.0')
+summary({'bindir': get_option('bindir'),
+ 'libdir': get_option('libdir'),
+ 'datadir': get_option('datadir'),
+ }, section: 'Directories')
+summary({'Some boolean': false,
+ 'Another boolean': true,
+ 'Some string': 'Hello World',
+ 'A list': ['string', 1, true],
+ }, section: 'Configuration')
+```
+
+Output:
+```
+My Project 1.0
+
+ Directories
+ prefix: /opt/gnome
+ bindir: bin
+ libdir: lib/x86_64-linux-gnu
+ datadir: share
+
+ Configuration
+ Some boolean: False
+ Another boolean: True
+ Some string: Hello World
+ A list: string
+ 1
+ True
+```
+
+## Generic Overrider for Dynamic Linker selection
+
+Previous to meson 0.52.0 you set the dynamic linker using compiler specific
+flags passed via language flags and hoped things worked out. In meson 0.52.0
+meson started detecting the linker and making intelligent decisions about
+using it. Unfortunately this broke choosing a non-default linker.
+
+Now there is a generic mechanism for doing this, you may use the LD
+environment variable (with normal meson environment variable rules), or add
+the following to a cross or native file:
+
+```ini
+[binaries]
+ld = 'gold'
+```
+
+And meson will select the linker if possible.
+
+## `fortran_std` option
+
+**new in 0.53.0**
+Akin to the `c_std` and `cpp_std` options, the `fortran_std` option sets Fortran compilers to warn or error on non-Fortran standard code.
+Only the Gfortran and Intel Fortran compilers have support for this option.
+Other Fortran compilers ignore the `fortran_std` option.
+
+Supported values for `fortran_std` include:
+
+* `legacy` for non-conforming code--this is especially important for Gfortran, which by default errors on old non-compliant Fortran code
+* `f95` for Fortran 95 compliant code.
+* `f2003` for Fortran 2003 compliant code.
+* `f2008` for Fortran 2008 compliant code.
+* `f2018` for Fortran 2018 compliant code.
+
+## python.dependency() embed kwarg
+
+Added the `embed` kwarg to the python module dependency function to select
+the python library that can be used to embed python into an application.
+
+## Scalapack
+
+added in **0.53.0**:
+
+```meson
+scalapack = dependency('scalapack')
+```
+
+Historically and through today, typical Scalapack setups have broken and incomplete pkg-config or
+FindScalapack.cmake. Meson handles finding Scalapack on setups including:
+
+* Linux: Intel MKL or OpenMPI + Netlib
+* MacOS: Intel MKL or OpenMPI + Netlib
+* Windows: Intel MKL (OpenMPI not available on Windows)
+
+## Search directories for `find_program()`
+
+It is now possible to give a list of absolute paths where `find_program()` should
+also search, using the `dirs` keyword argument.
+
+For example on Linux `/sbin` and `/usr/sbin` are not always in the `$PATH`:
+```meson
+prog = find_program('mytool', dirs : ['/usr/sbin', '/sbin'])
+```
+
+## Source tags targets
+
+When the respective tools are available, 'ctags', 'TAGS' and 'cscope'
+targets will be generated by Meson, unless you have defined your own.
+
+## Dictionary entry using string variable as key
+
+Keys can now be any expression evaluating to a string value, not limited
+to string literals any more.
+```meson
+d = {'a' + 'b' : 42}
+k = 'cd'
+d += {k : 43}
+```
+
+## Improved CMake subprojects support
+
+With this release even more CMake projects are supported via
+[CMake subprojects](CMake-module.md#cmake-subprojects) due to these internal
+improvements:
+
+- Use the CMake file API for CMake >=3.14
+- Handle the explicit dependencies via `add_dependency`
+- Basic support for `add_custom_target`
+- Improved `add_custom_command` support
+- Object library support on Windows
+
+## compiler.get_linker_id()
+
+since 0.53.0, `compiler.get_linker_id()` allows retrieving a lowercase name for the linker.
+Since each compiler family can typically use a variety of linkers depending on operating system,
+this helps users define logic for corner cases not otherwise easily handled.
+
+## CUDA dependency
+
+Native support for compiling and linking against the CUDA Toolkit using
+the `dependency` function:
+
+```meson
+project('CUDA test', 'cpp', meson_version: '>= 0.53.0')
+exe = executable('prog', 'prog.cc', dependencies: dependency('cuda'))
+```
+
+See [the CUDA dependency](Dependencies.md#cuda) for more information.
+
+## Added global option to disable C++ RTTI
+
+The new boolean option is called `cpp_rtti`.
+
+## Introspection API changes
+
+dependencies (--dependencies, intro-dependencies.json):
+- added the `version` key
+
+scanning dependencies (--scan-dependencies):
+- added the `version` key containing the required dependency version
+
+tests and benchmarks (--tests, --benchmarks, intro-tests.json,
+intro-benchmarks.json):
+- added the `protocol` key
+