Опубликован релиз сборочной системы Meson 0.58, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Код Meson написан на языке Python и поставляется под лицензией Apache 2.0.
Ключевой целью развития Meson является обеспечение высокой скорости сборочного процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как xcode и VisualStudio. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил).
Поддерживается кросс-компиляция и сборка в Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.
Основные новшества Meson 0.58:
- В языке Meson реализованы встроенные операции форматирования строк. Вместо вызова метода format теперь можно подставлять значения напрямую, например, вместо “‘A string @0@ to be formatted @1@’.format(n, m)” можно указывать сразу “f’A string @n@ to be formatted @m@'”.
- В строковые объекты добавлен метод “replace” для выполнения операции замены одной подстроки на другую, например, “s = s.replace(‘aaa’, ‘bbb’)”.
- Добавлена функция “range(start, stop[, step])” для возврата объекта, который может применяться в цикле “foreach”, например “foreach i : range(15)”.
- Реализован метод meson.add_devenv(), позволяющий добавить объект environment() для установки переменных окружения во время использования команды “meson devenv”, например, для задания переменной окружения с путём к каталогу с плагинами.
- Для окружений разработки предложена новая команда “meson devenv -C builddir [], дающая возможность запустить команду в окружении, настроенном для запуска проектов из сборочного каталога (без установки).
- По умолчанию прекращена передача параметра “-pipe” при запуске всех поддерживаемых компиляторов.
- Разрешён вызов meson.add_dist_script() из подпроектов.
- Предоставлена возможность многократного запуска методов append() и prepend() для одного и того же объекта environment().
- В функции error() разрешено указание более одного аргумента с разделением пробелом (по аналогии с warning() и message()).
- Добавлен параметр “–skip-subprojects” для выборочного пропуска установки подпроектов.
Отдельно можно отметить проект Boson, нацеленный на создание переносимой и простой реализации языка сборочных сценариев Meson, написанной на языке Си вместо Python. Проект пока находится на начальном этапе развития и пока не готов для полноценной сборки рабочих проектов. Код распространяется под лицензией GPLv3 (оригинальный Meson на Python поставляется под лицензией Apache 2.0).