Projekt Meson wydał wersję 1.11.0. Premiera miała miejsce 13 kwietnia 2026 roku i kontynuuje rozwój jednego z najbardziej zauważalnych systemów budowania, używanego w wielu projektach Linux i wieloplatformowych.
Meson tradycyjnie stawia na wysoką prędkość, przewidywalny opis budowy oraz stosunkowo prosty DSL, a nowa wersja koncentruje się głównie na praktycznych ulepszeniach dla rzeczywistych scenariuszy rozwoju.
Główne zmiany w Meson 1.11.0:
- wsparcie dla analizy pliku Cargo.toml na wyższym poziomie przez workspace() w module Rust;
- wsparcie dla link_args, add_project_link_arguments() oraz add_global_link_arguments() dla Rust;
- nowa metoda compiler_target() w module Rust;
- Cython nie wymaga już jawnego włączania C lub C++;
- nowy argument link_early_args do wcześniejszego przekazywania opcji do linker'a;
- meson dist uzyskał wsparcie dla -j/--num-processes;
- install_man oraz install_headers teraz wspierają install_tag;
- deduplikacja argumentów linkera OpenMP;
- automatyczne określanie QT_DEBUG i QT_NO_DEBUG;
- ulepszenia dla środowisk Windows oraz rc.exe.
Jedną z najbardziej zauważalnych zmian jest Rust. Meson 1.11.0 nauczył się analizować plik Cargo.toml na wyższym poziomie przy wywołaniu workspace() w module Rust, dzięki czemu zależności i flagi feature są teraz rozwiązane zgodnie z konfiguracją przestrzeni roboczej Cargo. To sprawia, że integracja z projektami Rust jest znacznie bardziej dojrzała: zwracany obiekt workspace umożliwia uzyskanie informacji o zależnościach i funkcjach dla podprojektów Cargo, a także kompilowanie celów opisanych w Cargo.toml.
Deweloperzy także rozszerzyli możliwości Meson w obszarze Rust na etapie linkowania. Od wersji 1.11.0 dla Rust wspierane są add_project_link_arguments(), add_global_link_arguments() oraz link_args, które są przekazywane przez rustc z otoczeniem -Clink-arg=. Ponadto w module Rust pojawiła się metoda compiler_target(), która zwraca potrójny cel kompilatora, co ułatwia przenoszenie scenariuszy wcześniej uzależnionych od zmiennych Cargo, takich jak TARGET i HOST.
Jeszcze jedna aplikacyjna zmiana dotyczy Cython: teraz do jego użycia nie trzeba już jawnie włączać języków C lub C++. Meson zaznacza jednak, że takie języki są dodawane jedynie jako wewnętrzny szczegół implementacji Cython, a nie jako pełnoprawna możliwość równoległego budowania standardowych celów C/C++. Dla użytkowników jest to głównie uproszczenie konfiguracji budowy.
W wydaniu znalazły się ulepszenia, które umożliwiają dokładniejszą kontrolę linkowania i instalacji. Cele realizujące linkowanie zyskały nowy argument link_early_args, który pozwala przekazywać opcje linkera przed obiektami i bibliotekami — ma to istotne znaczenie dla parametrów takich jak -u czy —defsym, które są wrażliwe na kolejność. Ponadto install_man i install_headers zyskały wsparcie dla install_tag, aby zainstalowane pliki mogły być zarządzane w bardziej elastyczny sposób za pośrednictwem meson install —tags.
Warto również zauważyć rozwój narzędzi do obsługi budowy. Zespół meson dist teraz przyjmuje -j i —num-processes, co umożliwia zarządzanie liczbą równoległych procesów podczas weryfikacji dystrybucji. Jednocześnie Meson zaczął deduplikować argumenty linkera OpenMP, takie jak -fopenmp i -qopenmp, a w modułach Qt teraz automatycznie definiowane są makra QT_DEBUG lub QT_NO_DEBUG w zależności od trybu budowy, co przybliża zachowanie do qmake.
Zamiany nastąpiły również w zakresie zgodności ze specyficznymi scenariuszami platformowymi. W module external_project dla systemu Windows teraz wykorzystuje się cygpath, by prawidłowo przekształcać ścieżki do formatu Unix podczas pracy z skryptami configure w środowiskach takich jak MSYS2 i Cygwin. Co więcej, windows.compile_resources teraz potrafi śledzić zmiany w nagłówkach przy użyciu rc.exe, omijając dawne ograniczenie tego kompilatora zasobów.
Ogólnie Meson 1.11.0 Wygląda to na wydanie bez głośnych rewolucji, ale z zauważalną ilością istotnych poprawek inżynieryjnych. Głównym celem tego wydania jest uczynienie systemu budowy bardziej przyjaznym dla nowoczesnych projektów mieszanych języków, szczególnie w miejscach, gdzie razem funkcjonują Rust, Cython, Qt i tradycyjne komponenty C/C++. Dla deweloperów to raczej nie powód do przepisywania infrastruktury, a staranne, ale przydatne uaktualnienie narzędzia, które już od dawna stało się częścią codziennego zestawu wolnego oprogramowania.
Źródło: linux.org.ru
