Bylo zveřejněno vydání systému sestavování Meson 1.11.0, který se používá k sestavování projektů jako X.Org Server, Mesa, QEMU, Lighttpd, systemd, GStreamer, Wayland, GNOME a GTK. Mesonův kód je napsán v Pythonu a je licencován pod licencí Apache 2.0.
Klíčovým cílem vývoje Meson je poskytnout vysokou rychlost montážního procesu v kombinaci s pohodlím a snadností použití. Místo nástroje make používá výchozí sestavení sadu nástrojů Ninja, ale lze použít i jiné backendy, jako je Xcode a Visual Studio. Systém má vestavěný obslužný program závislostí pro více platforem, který vám umožňuje používat Meson k vytváření balíčků pro distribuce. Pravidla sestavení jsou specifikována ve zjednodušeném jazyce specifickém pro doménu, jsou vysoce čitelná a srozumitelná pro uživatele (jak zamýšleli autoři, vývojář by měl psaním pravidel věnovat minimum času).
Křížová kompilace a sestavování jsou podporovány v systémech Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS a Windows pomocí kompilátorů GCC, Clang, Visual Studio a dalších. Projekty lze sestavovat v různých programovacích jazycích, včetně C, C++, Fortran, Java, D a Rust. Je podporován režim inkrementálního sestavení, který znovu sestavuje pouze komponenty přímo související se změnami provedenými od předchozího sestavení. Meson lze použít k vytváření opakovatelných sestavení, kde spuštění sestavení v různých prostředích vede ke generování zcela identických spustitelných souborů.
Hlavní inovace Meson 1.11:
- Při volání metody rust.workspace() ve skriptech Meson je kořenový soubor Cargo.toml v projektu analyzován, aby se během sestavení správně aktivovaly příznaky funkcí definované v souboru Cargo.toml společném pro všechny pracovní prostory. Metoda rust.workspace() nyní navíc vrací objekt, který lze použít k získání seznamu příznaků funkcí a závislostí pro podprojekty a také ke spuštění sestavení cílů deklarovaných v souborech Cargo.toml.
- Příkaz „meson dist“ má nyní volbu „-j“ (--num-processes) a proměnnou prostředí MESON_NUM_PROCESSES pro určení počtu procesů, které mají být spuštěny paralelně při sestavování a testování balíčků.
- Parametr should_fail, který umožňuje úspěšné provedení testu při vrácení chyby, byl zastaralý a přejmenován na expected_fail. Byl přidán parametr expected_exitcode, který určuje kód úspěšného provedení testu jiný než 0.
- Modul external_project na platformě Windows používá příkaz cygpath k převodu cest k souborům specifických pro Windows na cesty podobné Unixovým (např. z C:/path/to/configure na /path/to/configure).
- Příkazy install_man a install_headers nyní podporují argument install_tag, což umožňuje vybrat soubory k instalaci na základě vlastních tagů, nikoli pouze tagů man a devel.
- Přidán parametr link_early_args, který umožňuje zadat do příkazového řádku volby (například „-u“ nebo „--defsym“) při spuštění linkeru před výpisem objektů a knihoven.
- Přidána konstanta "~", která je v souborech s popisem prostředí (souborech počítače) nahrazena domovským adresářem.
- Ve výchozím nastavení příkaz „meson format“ zakazuje řazení souborů zadaných jako argumenty funkce files(). Chcete-li řazení povolit, použijte volbu sort_files.
- Podpora verzí Pythonu starších než 3.10 byla ukončena. Meson 1.11.0 je poslední verzí, která podporuje Python 3.7, 3.8 a 3.9.
- Přidána podpora pro nové funkce kompilátoru MPLAB XC32 C/C++ zavedeného ve verzi 5.0, jako je automatické zahrnutí optimalizací LTO a podpora standardů C2x a CPP23.
Zdroj: opennet.ru
