Bolo zverejnené vydanie zostavovacieho systému Meson 1.1.0, ktorý sa používa na zostavovanie projektov ako X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME a GTK. Kód Meson je napísaný v jazyku Python a je licencovaný pod licenciou Apache 2.0.
Kľúčovým cieľom vývoja spoločnosti Meson je poskytnúť vysokorýchlostný proces montáže v kombinácii s pohodlím a jednoduchosťou použitia. Namiesto make zostava štandardne používa súpravu nástrojov Ninja, ale možno použiť aj iné backendy, ako napríklad xcode a VisualStudio. Systém má vstavaný obslužný program závislostí na viacerých platformách, ktorý vám umožňuje používať Meson na zostavovanie balíkov pre distribúcie. Pravidlá zostavovania sú nastavené v zjednodušenom doménovo špecifickom jazyku, sú dobre čitateľné a zrozumiteľné pre používateľa (podľa predstavy autorov by mal vývojár venovať písaním pravidiel minimum času).
Podporuje sa krížová kompilácia a budovanie na Linuxe, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS a Windows pomocou GCC, Clang, Visual Studio a ďalších kompilátorov. Je možné vytvárať projekty v rôznych programovacích jazykoch, vrátane C, C++, Fortran, Java a Rust. Podporovaný je režim prírastkového zostavovania, v ktorom sa prestavujú iba komponenty, ktoré priamo súvisia so zmenami vykonanými od poslednej zostavy. Meson je možné použiť na generovanie opakovateľných zostavení, kde spustenie zostavy v rôznych prostrediach vedie k úplne identickým spustiteľným súborom.
Hlavné inovácie Meson 1.1:
- Nový argument "objects:" bol pridaný do deklarácie_závislosti() na pripojenie objektov priamo k spustiteľným súborom ako interné závislosti, ktoré nevyžadujú link_who.
- Príkaz "meson devenv --dump" má voliteľnú možnosť zadať súbor, do ktorého sa majú zapisovať premenné prostredia, namiesto výstupu do štandardného výstupného prúdu.
- Pridané metódy FeatureOption.enable_if a FeatureOption.disable_if na uľahčenie vytvárania podmienok pri príprave na odovzdávanie parametrov do funkcie dependency(). opt = get_option('feature').disable_if(not foo, error_message : 'Nie je možné aktivovať funkciu, keď nie je povolená aj funkcia foo') dep = dependency('foo', required: opt)
- Je povolené odovzdávať vygenerované objekty medzi argumenty "objects:".
- Funkcia projektu podporuje inštaláciu súborov s informáciami o licenciách projektu.
- Vykonaním príkazu "sudo meson install" sa zabezpečí reset privilégií počas prestavby pre cieľové platformy.
- Príkaz "meson install" poskytuje možnosť zadať samostatný obslužný program na získanie oprávnení typu root (napríklad môžete vybrať polkit, sudo, opendoas alebo $MESON_ROOT_CMD). Spustenie "meson install" v neinteraktívnom režime sa už nepokúša o zvýšenie privilégií.
- Pridaná podpora pre možnosti čítania zo súboru meson.options namiesto meson_options.txt.
- Poskytnuté presmerovanie výstupu informácií o priebehu introspekcie na stderr.
- Bol pridaný nový "žiadny" backend (--backend=none) na vytváranie projektov, ktoré majú iba pravidlá inštalácie a žiadne pravidlá zostavovania.
- Bola pridaná nová závislosť pybind11, aby dependency('pybind11') fungovala s pkg-config a cmake bez použitia skriptu pybind11-config.
- Možnosti "--reconfigure" a "--wipe" (meson setup --reconfigure builddir a meson setup --wipe builddir ) sú povolené s prázdnym builddir.
- meson.add_install_script() pridala podporu pre kľúčové slovo dry_run, ktoré vám umožňuje spúšťať vlastné inštalačné skripty pri volaní „meson install --dry-run“.
Zdroj: opennet.ru