Выпуск зборачнай сістэмы Meson 0.52

Апублікаваны рэліз зборачнай сістэмы Meson 0.52, якая выкарыстоўваецца для зборкі такіх праектаў, як X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME і GTK+. Код Meson напісаны на мове Python і пастаўляецца пад ліцэнзіяй Apache 2.0.

Ключавой мэтай развіцця Meson з'яўляецца забеспячэнне высокай хуткасці зборачнага працэсу ў спалучэнні з зручнасцю і прастатой выкарыстання. Замест утыліты make пры зборцы па змаўчанні прымяняецца інструментарый. ніндзя, але магчыма ўжыванне і іншых бэкэндаў, такіх як 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.52:

  • Дададзена эксперыментальная падтрымка Webassembly з выкарыстаннем у якасці кампілятара Emscripten;
  • Істотна палепшана і даведзена да працоўнага стану падтрымка платформаў Illumos і Solaris;
  • Забяспечана ігнараванне сцэнарыяў інтэрнацыяналізацыі на базе gettext у выпадку адсутнасці ў сістэме ўсталяванага інструментара gettext (раней пры выкарыстанні модуля i18n на сістэмах без gettext выводзілася памылка);
  • Палепшана падтрымка статычных бібліятэк. Вырашаны многія праблемы пры выкарыстанні дэўсталяваных статычных бібліятэк;
  • Дададзена магчымасць выкарыстання слоўнікаў для прызначэння зменных асяроддзі. Пры выкліку environment() у якасці першага элемента зараз можна паказаць слоўнік, у якім зменныя асяроддзі вызначаны ў форме ключ/значэнне. Дадзеныя зменныя будуць перанесеныя ў environment_object як калі б яны паасобку ўсталёўваліся праз метад set(). Слоўнікі таксама зараз могуць перадавацца ў розныя функцыі, якія падтрымліваюць аргумент "env";
  • Дададзена функцыя "runtarget alias_target(target_name, dep1, …)", якая стварае новую зборачную мэту першага ўзроўня, якую можна выклікаць з абраным зборачным бэкэндам (напрыклад, "ninja target_name"). Дадзеная зборачная мэта не запускае ніякія каманды, але забяспечвае зборку ўсіх залежнасцяў;
  • Забяспечана аўтаматычная ўстаноўка зменнай асяроддзя PKG_CONFIG_SYSROOT_DIR пры крос-кампіляцыі пры наяўнасці налады sys_root у секцыі «[properties]»;
  • Дададзена опцыя "-gdb-path" для вызначэння шляху да адладчыка GDB пры ўказанні опцыі "-gdb testname" для запуску GDB з паказаным тэставым сцэнарам;
  • Дададзена аўтаматычнае вызначэнне зборачнай мэты clang-tidy для запуску гэтага linter-а з усімі зыходнымі файламі. Мэта ствараецца пры наяўнасці ў сістэме clang-tidy і вызначэнні ў корані праекту файла ".clang-tidy" (або "_clang-tidy");
  • Дададзена залежнасць dependency('blocks') для выкарыстання ў Clang пашырэння Блокі;
  • Раздзелены ўяўленні кампаноўніка і кампілятара, што дазваляе выкарыстоўваць розныя спалучэнні кампілятараў і кампаноўнікаў;
  • У аб'екты SourceSet дададзены метад all_dependencies() у дадатак да метаду all_sources();
  • У run_project_tests.py з'явілася опцыя "-only" для выбарачнага запуску тэстаў (напрыклад, "python run_project_tests.py -only fortran python3");
  • У функцыі find_program() дададзена магчымасць пошуку толькі патрабаваных версій праграмы (версія вызначаецца праз запуск праграмы з опцыяй "-version");
  • Для кіравання экспартам знакаў у функцыю shared_module() па аналогіі з shared_library() дададзена опцыя vs_module_defs;
  • Пашыраны магчымасці модуля kconfig, які зараз падтрымлівае configure_file() для вызначэння ўваходнага файла;
  • У configure_file() дададзена магчымасць указання некалькіх уваходных файлаў для апрацоўшчыкаў «command:»;
  • Каманда "dist" для стварэння архіва пераведзена ў разрад каманд першага ўзроўню (раней каманда была прывязана да ninja). Дададзена опцыя "-formats" для вызначэння тыпаў ствараных архіваў (напрыклад,
    "meson dist -formats = xztar, zip").

Крыніца: opennet.ru

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