Выпуск сборочной системы Meson 1.7.0
Опубликован релиз сборочной системы Meson 1.7.0, которая используется для сборки таких проектов, как X.Org Server, Mesa, QEMU, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Код Meson написан на языке Python и поставляется под лицензией Apache 2.0.
Ключевой целью развития 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 и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.
Основные новшества Meson 1.7:
Добавлена конструкция «dependency ('atomic')» для проверки наличия библиотеки atomic с атомарными операциями для C++.
Добавлен новый язык программирования «Linear Asm» (диалект TI asm, поддерживаемый компилятором TI C6000).
Добавлена поддержка редакции языка Rust 2024 (rust_std=2024), которая будет зафиксирована в релизе компилятора Rust 1.85.0.
Добавлена поддержка компилятора TASKING VX-Toolset, используемого для семейства CPU Tricore.
Добавлена возможность запуска lint-ера clippy для проектов на языке Rust.
При настройке зависимостей для Cargo обеспечено определение всего дерева зависимостей и всех доступных возможностей. Данная операция выполняется на этапе до генерации AST (абстрактное синтаксическое дерево) для подпроекта, что избавляет от проблем с игнорированием для подпроекта возможностей, включённых для основного проекта через параметр «default_options».
В модуле external_project обеспечено выставление переменных окружения PATH и LD_LIBRARY_PATH для корректного запуска программ.
В команду «format» добавлена поддержка аргумента «stdin» для чтения данных из стандартного входного потока, а не из файла.
Выполнение «meson test» теперь по умолчанию не приводит к инициированию полной сборки (не вызывает «ninja all»), а «ninja all» не выполняет пересборку всех тестов.
В команду vcs_tag () добавлена поддержка аргументов «install», «install_dir», «install_tag» и «install_mode» для установки сгенерированого файла.
Добавлена переменная окружения MESON_NUM_PROCESSES, отражающая число дочерних процессов, запущенных для распараллеливания сборки. Переменная может использоваться, например, в meson test, модуле external_project и в обработчиках Ninja, запускающих clang-tidy, clang-format и clippy.
Источник: http://www.opennet.ru/opennews/art.shtml? num=62623
© OpenNet