Uitgave van het Meson 0.58 montagesysteem. Project om een ​​implementatie van Meson in C-taal te creëren

De release van het Meson 0.58 build-systeem is gepubliceerd, dat wordt gebruikt om projecten te bouwen zoals X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK. De Meson-code is geschreven in Python en valt onder de Apache 2.0-licentie.

Het belangrijkste ontwikkelingsdoel van Meson is om een ​​snel assemblageproces te bieden in combinatie met gemak en gebruiksgemak. In plaats van make gebruikt de build standaard de Ninja-toolkit, maar ook andere backends zoals xcode en VisualStudio kunnen worden gebruikt. Het systeem heeft een ingebouwde multi-platform afhankelijkheidshandler waarmee u Meson kunt gebruiken om pakketten voor distributies te bouwen. Assemblageregels zijn opgesteld in een vereenvoudigde domeinspecifieke taal, ze zijn goed leesbaar en begrijpelijk voor de gebruiker (volgens het idee van de auteurs zou de ontwikkelaar een minimum aan tijd moeten besteden aan het schrijven van regels).

Cross-compileren en bouwen op Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS en Windows met behulp van GCC, Clang, Visual Studio en andere compilers wordt ondersteund. Het is mogelijk om projecten te bouwen in verschillende programmeertalen, waaronder C, C++, Fortran, Java en Rust. Er wordt een incrementele bouwmodus ondersteund, waarin alleen componenten worden herbouwd die rechtstreeks verband houden met wijzigingen die zijn aangebracht sinds de laatste bouw. Meson kan worden gebruikt om herhaalbare builds te genereren, waarbij het uitvoeren van de build in verschillende omgevingen resulteert in volledig identieke uitvoerbare bestanden.

Belangrijkste innovaties van Meson 0.58:

  • Meson heeft ingebouwde tekenreeksopmaakbewerkingen. In plaats van de format-methode aan te roepen, kun je nu waarden rechtstreeks vervangen, in plaats van bijvoorbeeld 'Een string @0@ die moet worden geformatteerd @1@'.format(n, m)' kun je meteen 'f' opgeven Een tekenreeks @n@ die moet worden opgemaakt als @ m@'".
  • Er is een "replace"-methode toegevoegd aan stringobjecten om de handeling uit te voeren waarbij de ene substring door een andere wordt vervangen, bijvoorbeeld "s = s.replace('aaa', 'bbb')".
  • Functie "range(start, stop[, step])" toegevoegd om een ​​object te retourneren dat kan worden gebruikt in een foreach-lus, zoals "foreach i: range(15)".
  • De methode meson.add_devenv() is geïmplementeerd, waardoor u een omgevingsobject () kunt toevoegen om omgevingsvariabelen in te stellen wanneer u de opdracht "meson devenv" gebruikt, bijvoorbeeld om een ​​omgevingsvariabele in te stellen met het pad naar de map met plug-ins.
  • Voor ontwikkelomgevingen is een nieuw commando voorgesteld: “meson devenv -C builddir [<command>], wat het mogelijk maakt om het commando uit te voeren in een omgeving die is geconfigureerd om projecten vanuit de build-directory te starten (zonder installatie).
  • Standaard wordt de optie "-pipe" niet doorgegeven bij het uitvoeren van alle ondersteunde compilers.
  • Het aanroepen van meson.add_dist_script() vanuit subprojecten is toegestaan.
  • Biedt de mogelijkheid om de methoden append() en prepend() meerdere keren uit te voeren op hetzelfde Environment()-object.
  • De functie error() staat meer dan één argument toe, gescheiden door een spatie (vergelijkbaar met waarschuwing() en message()).
  • Optie "--skip-subprojects" toegevoegd om de installatie van subprojecten selectief over te slaan.

Afzonderlijk kunnen we het Boson-project noteren, gericht op het creëren van een draagbare en eenvoudige implementatie van de Meson-assembleerscripttaal, geschreven in C in plaats van Python. Het project bevindt zich nog in de beginfase van ontwikkeling en is nog niet klaar voor de volledige montage van werkende projecten. De code is gelicentieerd onder GPLv3 (de originele Python Meson is gelicentieerd onder de Apache 2.0-licentie).

Bron: opennet.ru

Voeg een reactie