Proiect Meson a lansat versiunea 1.11.0. Lansarea a avut loc pe 13 aprilie 2026 și continuă dezvoltarea uneia dintre cele mai notabile sisteme de construcție open-source, folosit în numeroase proiecte Linux și cross-platform.
Meson se concentrează tradițional pe viteză ridicată, descriere previzibilă a construcției și un DSL relativ simplu, iar noul release se concentrează în principal pe îmbunătățiri practice pentru scenariile reale de dezvoltare.
Schimbările cheie în Meson 1.11.0:
- suport pentru analiza fișierelor de top Cargo.toml prin workspace() în modul Rust;
- suport pentru link_args, add_project_link_arguments() și add_global_link_arguments() pentru Rust;
- metodă nouă compiler_target() în modul Rust;
- Cython nu mai necesită includerea explicită a C sau C++;
- un nou argument link_early_args pentru o transmitere timpurie a opțiunilor către linker;
- meson dist a obținut suport pentru -j/—num-processes;
- install_man și install_headers acum suportă install_tag;
- deduplicarea argumentelor linker OpenMP;
- detectarea automată a QT_DEBUG și QT_NO_DEBUG;
- îmbunătățiri pentru medii Windows și rc.exe.
Una dintre cele mai notabile schimbări se referă la Rust. Meson 1.11.0 a învățat să analizeze fișierul de top Cargo.toml la apelarea workspace() în modul Rust, ceea ce permite acum rezolvarea dependențelor și a flag-urilor feature în conformitate cu configurația spațiului de lucru Cargo. Acest lucru face integrarea cu proiectele Rust mult mai matură: obiectul workspace returnat permite obținerea de informații despre dependențe și features pentru subproiectele Cargo, precum și construirea țintelor descrise în Cargo.toml.
Dezvoltatorii au extins, de asemenea, integrarea Meson cu Rust în etapa de linking. Începând cu versiunea 1.11.0, pentru Rust sunt suportate add_project_link_arguments(), add_global_link_arguments() și link_args, care sunt transmise prin rustc cu wrapper-ul -Clink-arg=. În plus, în modul Rust a apărut metoda compiler_target(), care returnează target triple al compilatorului, facilitând portarea scenariilor care erau anterior legate de variabilele Cargo precum TARGET și HOST.
O altă modificare aplicată se referă la Cython: acum nu mai este necesară includerea explicită a limbajelor C sau C++. Totuși, Meson precizează că aceste limbi sunt adăugate doar ca un detaliu intern de implementare a Cython, și nu ca o capacitate completă de a construi simultan ținte native C/C++. Pentru utilizatori, aceasta înseamnă în primul rând simplificarea configurației de construcție.
În această versiune au fost incluse și îmbunătățiri destinate unui control mai detaliat al legăturii și instalării. În cazul obiectelor care efectuează legături, un nou argument link_early_args a fost adăugat, permițând transmiterea opțiunilor către linker înainte de obiecte și biblioteci — ceea ce este important pentru parametrii precum -u sau —defsym, care sunt sensibili la ordine. De asemenea, install_man și install_headers au primit suport pentru install_tag, pentru a gestiona fișierele instalate într-un mod mai flexbil prin meson install —tags.
Este de menționat în mod special dezvoltarea instrumentelor de întreținere a compilării. Echipa meson dist acceptă acum -j și —num-processes, ceea ce permite gestionarea numărului de procese paralele în timpul verificării distribuției. În același timp, Meson a început să deduplice argumentele linker pentru OpenMP, cum ar fi -fopenmp și -qopenmp, iar în modulele Qt acum se definesc automat macrocomenzile QT_DEBUG sau QT_NO_DEBUG, în funcție de modul de compilare, ceea ce apropie comportamentul de cel al qmake.
Există schimbări și în compatibilitatea cu scenariile specifice platformei. În modulul external_project pentru Windows, acum se utilizează cygpath pentru a transforma corect căile în stil Unix atunci când se lucrează cu scripturi configure în medii precum MSYS2 și Cygwin. De asemenea, windows.compile_resources acum poate urmări modificările titlurilor folosind rc.exe, depășind o limitare veche a acestui compilator de resurse.
În general Meson 1.11.0 pare a fi o versiune fără revoluții grandioase, dar cu un număr semnificativ de îmbunătățiri inginerie. Principala idee a lansării este de a face sistemul de compilare mai convenabil pentru proiectele moderne cu limbaje mixte, în special acolo unde coexistența Rust, Cython, Qt și componentelor tradiționale C/C++ este prezentă. Pentru dezvoltatori, mai degrabă nu este un motiv să regândească infrastructura, ci o actualizare fină, dar utilă a instrumentului, care deja a devenit parte a stivei zilnice de software liber.
Sursa: linux.org.ru
