Випуск складальної системи Meson 1.0

Опубліковано реліз складальної системи Meson 1.0.0, яка використовується для складання таких проектів, як 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 1.0:

  • Оголошено стабільним модуль для збирання проектів мовою Rust. Цей модуль використовується в проекті Mesa для збирання компонентів, написаних на Rust.
  • У параметрі prefix, який підтримується в більшості функцій перевірки компілятора, реалізована можливість обробки масивів крім рядків. Наприклад, тепер можна вказувати: cc.check_header('GL/wglew.h', prefix : ['#include ', '#include '])
  • Додано новий аргумент "—workdir", що дозволяє перевизначити робочий каталог. Наприклад, для використання поточного каталогу замість робочого можна запустити meson devenv -C builddir —workdir .
  • Запропоновано нові оператори «in» та «not in» для визначення входження в рядок підрядка за аналогією з раніше доступною перевіркою входження елемента в масив або словник. Наприклад: fs = import('fs') if 'something' in fs.read('somefile') # True endif
  • Додано опцію «warning-level=everything», що включає виведення всіх наявних попереджень компілятора (clang і MSVC використовує -Weverything і /Wall, а GCC роздільно включаються попередження, приблизно відповідні режиму -Weverything вclang).
  • У методі rust.bindgen реалізовано можливість обробки аргументу «dependencies» для передачі шляхів до залежностей, які мають бути оброблені компілятором.
  • Оголошено застарілою функцію java.generate_native_headers, яка перейменована на java.native_headers для відповідності загальному стилю найменування функцій, прийнятому в Meson.

Джерело: opennet.ru

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