Випуск складальної системи Meson 0.58. Проект створення реалізації Meson мовою Сі

Опубліковано реліз складальної системи 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).

Джерело: opennet.ru

Додати коментар або відгук