Выпуск зборачнай сістэмы 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 цяпер можна падстаўляць значэнні напрамую, напрыклад, замест "'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

Дадаць каментар