Wersja systemu kompilacji Meson 1.0

Opublikowano wydanie systemu kompilacji Meson 1.0.0, który służy do budowania projektów takich jak X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME i GTK. Kod Mesona jest napisany w Pythonie i jest licencjonowany na licencji Apache 2.0.

Kluczowym celem rozwojowym Mesona jest zapewnienie szybkiego procesu montażu połączonego z wygodą i łatwością użytkowania. Zamiast make kompilacja domyślnie korzysta z zestawu narzędzi Ninja, ale można również użyć innych backendów, takich jak xcode i VisualStudio. System ma wbudowany wieloplatformowy moduł obsługi zależności, który pozwala używać Mesona do budowania pakietów dla dystrybucji. Reguły asemblera są sformułowane w uproszczonym, specyficznym dla domeny języku, są dobrze czytelne i zrozumiałe dla użytkownika (według pomysłu autorów programista powinien poświęcić minimum czasu na napisanie reguł).

Obsługiwana jest kompilacja krzyżowa i budowanie w systemach Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS i Windows przy użyciu GCC, Clang, Visual Studio i innych kompilatorów. Możliwe jest budowanie projektów w różnych językach programowania, w tym C, C++, Fortran, Java i Rust. Obsługiwany jest tryb budowania przyrostowego, w którym odbudowywane są tylko komponenty, które są bezpośrednio związane ze zmianami wprowadzonymi od czasu ostatniej kompilacji. Meson może być używany do generowania powtarzalnych kompilacji, gdzie uruchamianie kompilacji w różnych środowiskach skutkuje całkowicie identycznymi plikami wykonywalnymi.

Główne innowacje Mesona 1.0:

  • Moduł do budowania projektów w języku Rust został uznany za stabilny. Moduł ten jest używany w projekcie Mesa do budowania komponentów napisanych w języku Rust.
  • Opcja prefiksu, obsługiwana w większości funkcji sprawdzania kompilatora, zapewnia możliwość obsługi tablic oprócz ciągów. Na przykład możesz teraz określić: cc.check_header(‚GL/wglew.h’, prefiks: [‚#include ’, „#include ’])
  • Dodano nowy argument „--workdir”, aby umożliwić nadpisanie katalogu roboczego. Na przykład, aby użyć bieżącego katalogu zamiast katalogu roboczego, możesz uruchomić: meson devenv -C builddir --workdir .
  • Zaproponowano nowe operatory „in” i „not in” służące do określenia występowania podłańcucha w ciągu znaków, podobne do dostępnego wcześniej sprawdzania występowania elementu w tablicy lub słowniku. Na przykład: fs = import('fs') if 'coś' w fs.read('somefile') # True endif
  • Dodano opcję „warning-level=everything”, która włącza wyświetlanie wszystkich dostępnych ostrzeżeń kompilatora (w clang i MSVC używa opcji -Weverything i /Wall, a w GCC ostrzeżenia są uwzględniane osobno, w przybliżeniu odpowiadające opcji -Weverything tryb w brzęczeniu).
  • Metoda rust.bindgen implementuje możliwość obsługi argumentu „zależności” w celu przekazywania ścieżek do zależności, które powinny zostać przetworzone przez kompilator.
  • Funkcja java.generate_native_headers została uznana za przestarzałą, a jej nazwę zmieniono na java.native_headers w celu zapewnienia zgodności ze wspólnym stylem nazewnictwa funkcji firmy Meson.

Źródło: opennet.ru

Dodaj komentarz