Выпуск сборочной системы Meson 0.49.0
Представлен релиз сборочной системы Meson 0.49, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, GNOME и GTK+. Вчера о поддержке Meson объявили разработчики Wayland и композитного сервера Weston (поддержку autotools планируют прекратить в течение следующего года). Код Meson написан на языке Python и поставляется под лицензией Apache 2.0.
Ключевыми целями развития Meson является обеспечение высокой скорости сборочого процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке применяется инструментарий Ninja. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощенном предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил).
Поддерживается кросс-компиляция и сборка в Linux, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесенными с моментам прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.
Основные новшества, появившиеся в выпуске Meson 0.49:
- При определении зависимости dependency('libgcrypt') в случае отсутствия pkg-config теперь выполняется поиск файлов libgcrypt-config;
- Добавлено новое ключевое слово "section", применимое к сборочным опциям, которое позволяет интегрированным средам разработки группировать опции по аналогии с командой "meson configure". В "section" допустимо указания следующих значений: core, backend, base, compiler, directory, user, test;
- Добавлена поддержка кросс-компиляции для чипов Renesas RX, используя компилятор CC-RX;
- В объект "compiler" добавлен метод get_argument_syntax для проверки поддержки компилятором расширенного синтаксиса gcc и msvc;
- Обеспечена возможность выполнения команды "meson introspect --projectinfo " без наличия настроенного сборочного каталога;
- Добавлена возможность передачи аргументов в функции и методы в форме словарей (ассоциативных массивов);
- В циклы foreach добавлена поддержка ключевых слов break и continue;
- Добавлен оператор "/" для соединения путей (вместо join_paths('foo', 'bar') теперь можно указывать 'foo' / 'bar');
- Добавлена опция "b_pie" и ключевое слово "pie" для формирования исполняемых файлов в режиме PIE (position-independent executables);
- Реализованы новые команды: "meson subprojects download" (загрузка субпроекта), "meson subprojects update" (обновление всех субпроектов) и "meson subprojects checkout" для выполнения операции checkout или создания ветки во всех Git-субпроектах.