Vrystelling van die Meson 0.52-samestellingstelsel

gepubliseer bou stelselvrystelling Meson 0.52, wat gebruik word om projekte soos X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK+ te bou. Die Meson-kode is geskryf in Python en verskaf gelisensieer onder Apache 2.0.

Die sleuteldoel van Meson-ontwikkeling is om 'n hoë spoed van die monteerproses te bied, gekombineer met gerief en gemak van gebruik. In plaas van die make-nutsmiddel, gebruik die verstekbou die toolkit ninja, maar dit is ook moontlik om ander backends te gebruik, soos xcode en VisualStudio. Die stelsel het 'n ingeboude multi-platform afhanklikheid hanteerder wat jou toelaat om Meson te gebruik om pakkette vir verspreidings te bou. Samestellingreëls word in 'n vereenvoudigde domeinspesifieke taal gespesifiseer, is hoogs leesbaar en verstaanbaar vir die gebruiker (soos bedoel deur die skrywers, moet die ontwikkelaar 'n minimum tyd spandeer om reëls te skryf).

Ondersteun kruis-samestelling en bou op Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS en Windows deur GCC, Clang, Visual Studio en ander samestellers te gebruik. Dit is moontlik om projekte in verskeie programmeertale te bou, insluitend C, C++, Fortran, Java en Rust. Inkrementele boumodus word ondersteun, waarin slegs komponente wat direk verband hou met veranderinge wat sedert die laaste bou gemaak is, herbou word. Meson kan gebruik word om herhaalbare bouwerk te genereer, waarin die uitvoering van die bou in verskillende omgewings lei tot die generering van heeltemal identiese uitvoerbare lêers.

Die belangrikste innovasies Meson 0.52:

  • Bygevoeg eksperimentele ondersteuning vir Webassembly met behulp van Emscripten as 'n samesteller;
  • Ondersteuning vir die Illumos- en Solaris-platforms is aansienlik verbeter en in werkende toestand gebring;
  • Verseker dat gettext-gebaseerde internasionaliseringsskrifte geïgnoreer word as die stelsel nie die gettext-nutsmiddelstel geïnstalleer het nie (voorheen is 'n fout vertoon wanneer die i18n-module op stelsels sonder gettext gebruik word);
  • Verbeterde ondersteuning vir statiese biblioteke. Baie probleme met die gebruik van gedeïnstalleerde statiese biblioteke is opgelos;
  • Bygevoeg die vermoë om woordeboeke te gebruik om omgewingsveranderlikes toe te ken. Wanneer omgewing() geroep word, kan die eerste element nou gespesifiseer word as 'n woordeboek waarin omgewingsveranderlikes in sleutel/waardevorm gedefinieer word. Hierdie veranderlikes sal na environment_object oorgedra word asof hulle individueel gestel is via die set() metode. Woordeboeke kan ook nou deurgegee word na verskeie funksies wat 'n "env" argument ondersteun;
  • Bygevoeg funksie "runtarget alias_target(target_name, dep1, ...)" wat 'n nuwe eerste-vlak bou teiken skep wat geroep kan word met die geselekteerde bou backend (bv. "ninja target_name"). Hierdie bouteiken voer geen opdragte uit nie, maar verseker dat alle afhanklikhede gebou word;
  • Geaktiveer outomatiese instelling van die PKG_CONFIG_SYSROOT_DIR omgewing veranderlike tydens kruis-samestelling as daar 'n sys_root instelling in die "[eienskappe]" afdeling;
  • Bygevoeg "--gdb-pad" opsie om die pad na die GDB ontfouter te bepaal wanneer die "--gdb toetsnaam" opsie gespesifiseer word om GDB te laat loop met die gespesifiseerde toets script;
  • Bygevoeg outomatiese opsporing van die klang-netjiese bouteiken om hierdie linter met alle bronlêers te laat loop. Die teiken word geskep as clang-tidy in die stelsel beskikbaar is en die “.clang-tidy” (of “_clang-tidy”) lêer is gedefinieer in die projekwortel;
  • Bygevoeg afhanklikheid ('blokke') vir gebruik in die Clang uitbreiding Blocks;
  • Die koppelaar- en samesteller-aansigte is geskei, sodat verskillende kombinasies van samestellers en koppelaars gebruik kan word;
  • Bygevoeg all_dependencies() metode by SourceSet voorwerpe bykomend tot all_sources() metode;
  • In run_project_tests.py is die “--only”-opsie bygevoeg om toetse selektief te laat loop (byvoorbeeld, “python run_project_tests.py —only fortran python3”);
  • Die find_program() funksie het nou die vermoë om slegs vir vereiste weergawes van 'n program te soek (die weergawe word bepaal deur die program met die "-version" opsie te laat loop);
  • Om die uitvoer van simbole te beheer, is die vs_module_defs opsie by die shared_module() funksie gevoeg, soortgelyk aan shared_library();
  • Die kconfig-module is uitgebrei om configure_file() te ondersteun vir die spesifiseer van 'n invoerlêer;
  • Het die vermoë bygevoeg om veelvuldige invoerlêers vir "command:"-hanteerders te spesifiseer by configure_file();
  • Die "dist"-opdrag vir die skep van 'n argief is geskuif na die kategorie van eerstevlak-opdragte (voorheen was die opdrag aan ninja gekoppel). Bygevoeg "--formate" opsie om die tipes argiewe wat geskep moet word te definieer (byvoorbeeld,
    "meson dist -formats=xztar,zip").

Bron: opennet.ru

Voeg 'n opmerking