Апублікаваны рэліз зборачнай сістэмы 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 цяпер можна падстаўляць значэнні напрамую, напрыклад, замест "'string@0@to be formatted @1@'.format(n, m)" можна паказваць адразу "f'Astring @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