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

Апублікаваны рэліз зборачнай сістэмы Meson 1.3.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.3:

  • У метады праверкі кампілятара compiler.compiles(), compiler.links() і compiler.run() дададзена опцыя "werror: true", пры якой папярэджанні кампілятара тлумачацца як памылкі (можна выкарыстоўваць для праверкі, што код збіраецца без папярэджанняў).
  • Дададзены метад has_define для праверкі вызначэння знака прэпрацэсарам.
  • У функцыю configure_file() дададзены параметр macro_name, які дадае макрозащиту падвойнага падлучэння праз "#include" ("include guards"), аформленую ў стылі макрасаў на мове Сі (спрашчае стварэнне configure-файлаў з дынамічнымі імёнамі макрасаў).
  • У configure_file() дададзены новы фармат высновы - JSON ("output_format: json").
  • У параметры c_std і cpp_std дададзена магчымасць выкарыстання спісаў значэнняў (напрыклад, "default_options: 'c_std=gnu11,c11′").
  • У модулях, якія выкарыстоўваюць CustomTarget для апрацоўкі файлаў, дададзена магчымасць кастамізацыі паведамленняў, якія выводзяцца ўтылітай ninja.
  • Абвешчана састарэлай зборачная мэта (build_target) "jar", замест якой рэкамендуецца ўжываць выклік "jar()".
  • У метад generator.process() дададзены параметр 'env' для выстаўлення зменнай асяроддзі праз якую генератар будзе апрацоўваць увод.
  • Пры заданні імёнаў мэт зборкі, злучаных з выкананымі файламі, дазволенае ўказанне суфіксаў, напрыклад «exectuable('foo', 'main.c', name_suffix: 'bar')», для генерацыі дадатковых выкананых файлаў у тым жа каталогу.
  • У функцыю exectuable() дададзены параметр "vs_module_defs" для выкарыстання def-файла, вызначальнага спіс функцый, якія перадаюцца ў shared_module().
  • У функцыю find_program() дададзены параметр 'default_options' для задання опцый па змаўчанні для запаснога субпраекта (fallback).
  • Дададзены метад fs.relative_to(), які вяртае адносны шлях для першага аргументу, адносна другога, калі першы шлях існуе. Напрыклад, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • У функцыі install_data(), install_headers() і install_subdir() дададзены параметр follow_symlinks, пры выстаўленні якога забяспечваецца прытрымліванне па сімвалічных спасылках.
  • У метад int.to_string() дададзены параметр "fill" для дадатковага запаўнення радка пачатковымі нулямі. Напрыклад, выклік message(n.to_string(fill: 3)) для n=4 сфармуе радок "004".
  • Дададзена новая мэта clang-tidy-fix, якая вызначае запуск утыліты clang-tidy са сцягам "-fix".
  • У каманду compile дададзена магчымасць указання суфікса (TARGET_SUFFIX) зборачнай мэты ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]).
  • Дададзена зменная асяроддзі MESON_PACKAGE_CACHE_DIR для перавызначэння шляху да кэша пакетаў (subprojects/packagecache), напрыклад, дазваляе выкарыстоўваць агульны кэш у некалькіх праектах.
  • Дададзена каманда "meson setup -clearcache" для ачысткі пастаяннага кэша.
  • Ва ўсе метады праверкі кампілятара "has_*" дададзена падтрымка ключавога слова "required", напрыклад замест "assert(cc.has_function('some_function'))" зараз можна паказваць "cc.has_function('some_function', required: true)".
  • У функцыі shared_library(), static_library(), library() і shared_module() дададзена новае ключавое слова rust_abi, якое варта выкарыстоўваць замест састарэлага rust_crate_type.

Крыніца: opennet.ru

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