Meson 1.11.0

good-penguin.png

Проект Meson выпустил версию 1.11.0. Релиз состоялся 13 апреля 2026 года и продолжает развитие одной из самых заметных свободных систем сборки, используемой во множестве Linux и кроссплатформенных проектов.

Meson традиционно делает ставку на высокую скорость, предсказуемое описание сборки и сравнительно простой DSL, а новый выпуск в основном сосредоточен на практических улучшениях для реальных сценариев разработки.

Ключевые изменения в Meson 1.11.0:

  • поддержка разбора верхнеуровневого Cargo.toml через workspace() в Rust-модуле;
  • поддержка link_args, add_project_link_arguments() и add_global_link_arguments() для Rust;
  • новый метод compiler_target() в Rust-модуле;
  • Cython больше не требует явного включения C или C++;
  • новый аргумент link_early_args для более ранней передачи опций линковщику;
  • meson dist получил поддержку -j/--num-processes;
  • install_man и install_headers теперь поддерживают install_tag;
  • дедупликация OpenMP linker arguments;
  • автоматическое определение QT_DEBUG и QT_NO_DEBUG;
  • улучшения для Windows-окружений и rc.exe.

Одно из самых заметных изменений касается Rust. Meson 1.11.0 научился разбирать верхнеуровневый Cargo.toml при вызове workspace() в Rust-модуле, благодаря чему зависимости и feature-флаги теперь разрешаются в соответствии с конфигурацией рабочего пространства Cargo. Это делает интеграцию с Rust-проектами заметно более зрелой: возвращаемый объект workspace позволяет получать сведения о зависимостях и features для Cargo-субпроектов, а также собирать цели, описанные в Cargo.toml.

Разработчики также расширили работу Meson с Rust на этапе линковки. Начиная с версии 1.11.0, для Rust поддерживаются add_project_link_arguments(), add_global_link_arguments() и link_args, которые передаются через rustc с обёрткой -Clink-arg=. Кроме того, в Rust-модуле появился метод compiler_target(), возвращающий target triple компилятора, что упрощает перенос сценариев, ранее завязанных на переменные Cargo вроде TARGET и HOST.

Ещё одно прикладное изменение затрагивает Cython: теперь для работы с ним больше не требуется явно включать языки C или C++. При этом Meson оговаривает, что такие языки добавляются только как внутренняя деталь реализации Cython, а не как полноценная возможность параллельно собирать обычные native C/C++ targets. Для пользователей это, прежде всего, упрощение конфигурации сборки.

В релиз вошли и улучшения, рассчитанные на более тонкий контроль линковки и установки. У целей, выполняющих линковку, появился новый аргумент link_early_args, позволяющий передавать опции линковщику до объектов и библиотек — это важно для параметров вроде -u или --defsym, которые чувствительны к порядку. Также install_man и install_headers получили поддержку install_tag, чтобы установленными файлами можно было гибче управлять через meson install --tags.

Отдельно стоит отметить развитие инструментов сопровождения сборки. Команда meson dist теперь принимает -j и --num-processes, что позволяет управлять числом параллельных процессов при проверке дистрибутива. Параллельно Meson начал дедуплицировать линкерные аргументы OpenMP, такие как -fopenmp и -qopenmp, а в Qt-модулях теперь автоматически определяются макросы QT_DEBUG или QT_NO_DEBUG в зависимости от режима сборки, что приближает поведение к qmake.

Изменения есть и в совместимости со специфическими платформенными сценариями. В модуле external_project для Windows теперь используется cygpath, чтобы корректно преобразовывать пути к Unix-виду при работе с configure-скриптами в окружениях вроде MSYS2 и Cygwin. Кроме того, windows.compile_resources теперь умеет отслеживать изменения заголовков при использовании rc.exe, обходя давнее ограничение этого компилятора ресурсов.

В целом Meson 1.11.0 выглядит как релиз без громких революций, но с заметным количеством инженерно значимых доработок. Главный смысл выпуска — сделать систему сборки удобнее для современных mixed-language-проектов, особенно там, где рядом живут Rust, Cython, Qt и традиционные C/C++-компоненты. Для разработчиков это, скорее, не повод переписывать инфраструктуру, а аккуратное, но полезное обновление инструмента, который и так давно стал частью повседневного стека свободного ПО.

>>> Источник

Linux.org.ru прочитано 948 раз