Opublikowano wydanie systemu kompilacji Meson 0.58, 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.
Głównym celem rozwoju firmy Meson jest zapewnienie dużej szybkości procesu montażu w połączeniu z wygodą i łatwością użytkowania. Zamiast narzędzia make do kompilacji domyślnie używany jest zestaw narzędzi Ninja, ale można również używać innych narzędzi, takich jak xcode i VisualStudio. System ma wbudowaną obsługę zależności wieloplatformowych, co pozwala na wykorzystanie Mesona do budowania pakietów dla dystrybucji. Reguły języka asemblera są zdefiniowane w uproszczonym języku dziedzinowym, łatwym do odczytania i zrozumiałym dla użytkownika (zgodnie z zamysłem autorów, programista powinien poświęcić minimum czasu na napisanie reguł).
Obsługiwane są kompilacje krzyżowe i asemblacje. Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows Używając kompilatorów GCC, Clang, Visual Studio i innych. Projekty można budować w różnych językach programowania, w tym C, C++, Fortran, Java i Rust. Obsługiwany jest tryb kompilacji przyrostowej, który kompiluje tylko komponenty bezpośrednio związane ze zmianami wprowadzonymi od poprzedniej kompilacji. Meson może być używany do tworzenia powtarzalnych kompilacji, w których uruchomienie kompilacji w różnych środowiskach skutkuje wygenerowaniem identycznych plików wykonywalnych.
Główne innowacje Mesona 0.58:
- Język Meson ma wbudowane operacje formatowania ciągów znaków. Zamiast wywoływać metodę format, możesz teraz podstawiać wartości bezpośrednio, na przykład zamiast "'Ciąg @0@ ma zostać sformatowany @1@'.format(n, m)" możesz bezpośrednio określić "f'Ciąg @n@ ma zostać sformatowany @m@'".
- Do obiektów typu string dodano metodę „replace”, która umożliwia zastąpienie jednego podłańcucha innym, na przykład „s = s.replace('aaa', 'bbb')”.
- Dodano funkcję „range(start, stop[, step])” zwracającą obiekt, który można wykorzystać w pętli „foreach”, np. "foreach i : zakres(15)".
- Zaimplementowano metodę meson.add_devenv(), która umożliwia dodanie obiektu environment() w celu ustawienia zmiennych środowiskowych podczas korzystania z polecenia „meson devenv”, na przykład w celu ustawienia zmiennej środowiskowej zawierającej ścieżkę do katalogu wtyczek.
- W środowiskach programistycznych wprowadzono nowe polecenie „meson devenv -C builddir [<polecenie>]”, które umożliwia uruchomienie polecenia w środowisku skonfigurowanym do uruchamiania projektów z katalogu kompilacji (bez instalacji).
- Opcja „-pipe” została domyślnie wyłączona podczas uruchamiania wszystkich obsługiwanych kompilatorów.
- Zezwól na wywoływanie meson.add_dist_script() z podprojektów.
- Umożliwia wielokrotne wykonywanie metod append() i prepend() na tym samym obiekcie environment().
- Funkcja error() pozwala na określenie więcej niż jednego argumentu, rozdzielonego spacjami (podobnie jak warning() i message()).
- Dodano opcję „--skip-subprojects” umożliwiającą selektywne pominięcie instalacji podprojektów.
Na szczególną uwagę zasługuje projekt Boson, którego celem jest stworzenie przenośnej i prostej implementacji języka skryptowego Meson, napisanej w języku C, a nie w Pythonie. Projekt znajduje się wciąż na początkowym etapie rozwoju i nie jest jeszcze gotowy do pełnego wdrożenia działających wersji. Kod jest licencjonowany na zasadach GPLv3 (oryginalny Meson w Pythonie jest licencjonowany na zasadach licencji Apache 2.0).
Źródło: opennet.ru
