Ключевой целью развития Meson является обеспечение высокой скорости сборочного процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как Xcode и Visual Studio. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил).
Поддерживается кросс-компиляция и сборка в Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java, D и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.
Основные новшества Meson 1.11:
- При вызове в скриптах Meson метода rust.workspace() реализован разбор корневого файла Cargo.toml внутри проекта, для корректной активации при сборке feature-флагов, определённых в общем для всех рабочих пространств файле Cargo.toml. Кроме того, метод rust.workspace() теперь возвращает объект, через который можно получить список feature-флагов и зависимостей для подпроектов, а также запустить сборку целей, объявленных в файлах Cargo.toml.
- В команду «meson dist» добавлены опция «-j» (—num-processes) и переменная окружения MESON_NUM_PROCESSES для задания числа процессов, параллельно выполняемых при сборке и тестировании пакетов.
- Параметр should_fail, допускающий прохождении теста при возвращении ошибки, объявлен устаревшим и переименован в expected_fail. Добавлен параметр expected_exitcode для выставления кода успешного завершения теста, отличного от 0.
- В модуле external_project на платформе Windows задействована команда cygpath для преобразования специфичных для Windows файловых путей и Unix-подобные пути (например, из C:/path/to/configure в /path/to/configure).
- В команды install_man и install_headers добавлена поддержка аргумента install_tag для выбора устанавливаемых файлов по произвольным тегам, а не только по тегам man и devel.
- Добавлен параметр link_early_args, через который в командную строку при запуске компоновщика можно подставить опции (например, «-u» или «—defsym») до перечисления объектов и библиотек.
- Добавлена константа «~», заменяемая на домашний каталог в файлах описания среды (machine files).
- В команде «meson format» по умолчанию отключена сортировка файлов, указанных в числе аргументов функции files(). Для включения сортировки следует использовать опцию sort_files.
- Анонсировано прекращение поддержки версий Python до выпуска 3.10.
Meson 1.11.0 является последним выпуском с поддержкой веток Python 3.7, 3.8 и 3.9. - Добавлена поддержка новых возможностей C/C++ компилятора MPLAB XC32, появившихся в версии 5.0, таких как автоматическое включение LTO-оптимизаций и поддержка стандартов C2x и CPP23.
Источник: http://www.opennet.ru/opennews/art.shtml?num=65199
