Meson (sistem de asamblare)

Meson

Procesul de construire a dav1d (codec-decoder din proiectul VideoLAN) cu Meson
Tip de software gratuit și open source și instrument de automatizare a construirii [d]
Dezvoltator Jussi Pakkanen [d] [1]
Scris in Python [2]
Sistem de operare Sistem de operare asemănător Unix [3] și Microsoft Windows
Limbi de interfață Engleză
Prima editie 2 martie 2012
Platformă hardware multiplatformă [3]
ultima versiune
Stat activ
Licență Licență Apache 2.0 [5] [1]
Site-ul web mesonbuild.com
 Fișiere media la Wikimedia Commons

Meson ( MFA [ ˈ m i ː z ɒ n ]; din  engleză  -  „ meson ” ) este un utilitar de consolă multiplatformă care automatizează procesul de construire a software -ului din codul sursă . Meson este open source și licențiat sub licența Apache . Ideea principală a lui Meson este să construiască cât mai repede posibil și să nu petreacă o singură picătură de timp pentru depanare și testare , precum și să aștepte ca procesul de compilare să înceapă . Utilitarul are, de asemenea, un nume mai lung, complet - „The Meson build system” (Meson Assembly System). Dar, în ciuda faptului că Meson este poziționat oficial ca un sistem de construcție, de fapt nu este, deoarece folosește practic un alt utilitar - sistemul de construcție Ninja și o serie de alte utilități [6] [7] .

Istorie

Creare

Prima versiune a lui Meson a apărut în timpul sărbătorilor de Crăciun în 2012 și a fost dezvoltată de fizicianul finlandez - programatorul Jussi Pakkanen. Dezvoltatorul a fost abătut de starea în care au ajuns la acea vreme sistemele de automatizare a montajului. Mulți îi displăceau pentru că erau prea lente, unele erau prea greu de pus în practică, iar altele aveau o sintaxă prea complicată și obscură . Nefiind găsit sistemul de construcție pe care și-l dorea, Jussi a decis să-și petreacă timpul liber în acest weekend de vacanță și să-și creeze propriul sistem de construcție care să se potrivească nevoilor sale [8] [9] .

Etimologie

Numele utilitarului a fost ales ținând cont de faptul că nu trebuie să coincidă cu numele niciunui pachet din baza de date a managerului de pachete de sistem Debian sau cu niciun proiect din baza de date SourceForge . Deoarece Jussi este un fizician-programator, la un moment dat a decis să folosească numele particulei elementare - Gluon (ing. Gluon, de la cuvântul lipici - lipici), sugerând că „gluonii sunt particule elementare care țin împreună protonii și neutronii, la fel ca sarcina sistemului de construire este să ia bucăți de cod sursă și un compilator și apoi să le conecteze împreună.” Dar, din păcate, acest nume a fost deja luat, apoi, după ce a sortat mai multe particule subatomice rămase , a aflat că numele particulei de mezon s-a dovedit a fi liber [10] .

Caracteristici

Scopul declarat al lui Meson este de a promova metode moderne de dezvoltare. Cum ar fi utilizarea metodei „ single asamblare ”, asamblare cu acoperire de cod , optimizare LTO ( optimizare timp de legătură ), etc. Fără ca programatorul să fie nevoit să scrie suport pentru aceasta.

Portabilitate

Scris în Python , Meson rulează nativ pe sisteme de operare asemănătoare Unix , inclusiv macOS , precum și Microsoft Windows și o serie de alte sisteme de operare.

Meson suportă C , C++ , CUDA , D , Objective-C , Fortran , Java , C# , Rust , Vala [11] și are un mecanism de gestionare a dependențelor numit „Wrap” [12] .

Meson acceptă GNU Compiler Collection , Clang , Microsoft Visual C++ și alte compilatoare, inclusiv compilatoare netradiționale precum Emscripten și Cython [13] [14] . În același timp, Meson decide independent ce compilator și cu ce parametri ar trebui să fie utilizat. Și proiectele de compilare încrucișată necesită o configurație suplimentară, pe care Meson o menține ca fișier separat care poate fi extern unui proiect Meson [15] .

Meson folosește Ninja ca sistem principal de construcție, dar poate folosi și Microsoft Visual Studio sau Xcode .

Subproiecte

Meson poate găsi și utiliza automat dependențe externe cu pkg-config , CMake și căutare specifică proiectului [16] , dar aceasta găsește numai dependențe instalate despre care Meson nu poate face nimic. Alternativ, sau ca alternativă, dependența poate fi furnizată ca subproiect - un proiect Meson în altul, sau conținută ca un link extern de descărcare, eventual cu patch-uri [12] . Acest lucru îi permite lui Meson să rezolve „ iad de dependență ” pentru confortul utilizatorilor obișnuiți care doresc să compileze un proiect, dar poate contribui și la umflarea software -ului dacă ar putea fi folosită o dependență instalată comună. Astfel, modul preferat de utilizare a pachetelor Linux dispare în fundal.

Meson, pe lângă propriul său sistem de subproiect, acceptă și sistemul de subproiect CMake. Fișierul de asamblare Meson se poate referi și la serviciul Wrap DB [17] .

Integrarea cu ISR

Meson are inițial suport încorporat pentru Visual Studio și XCode, dar pentru a simplifica integrarea cu o mare varietate de ISR , a fost dezvoltat un API special pentru a rezolva această problemă. Pentru a face acest lucru, de fiecare dată când Meson construiește, acesta creează un folder „meson-info” și pune fișiere de informații JSON în el . Cu ajutorul acestor fișiere, orice program poate obține informații detaliate despre proiectele care se construiesc [18] .

Limba

Sintaxa fișierelor de descriere a ansamblului Meson (limbaj Meson) este împrumutată de la Python, dar nu este în sine un limbaj Python. A fost conceput în așa fel încât să poată fi reimplementat în orice altă limbă [19] [20] . De exemplu, Meson++ [21] este o implementare C++, dependența Python este doar un detaliu de implementare.

Limbajul Meson nu este Turing complet și, prin urmare, nu poate exprima un program arbitrar [22] . În schimb, pașii de construcție arbitrari dincolo de scopul compilarii limbilor acceptate pot fi reprezentați ca ținte personalizate [23] .

Limbajul Meson este puternic tipizat, astfel încât tipurile încorporate precum bibliotecă, executabil, șiruri de caractere și listele lor nu sunt interschimbabile [24] . Variabilele nu au un tip vizibil, ceea ce face ca Meson să fie tastat dinamic. Spre deosebire de același Make , tipul de listă nu separă șiruri pe spații [25] .

Exemplu

Să creăm „ Bună, lume!” " proiect în limbaj C, fișierul se va numi " main.c ".

#include <stdio.h> int main () { pune ( "Bună, lume!" ); returnează 0 ; }

Apoi, lângă el, creați un fișier - " meson.build ".

proiect ( 'tutorial' , 'c' ) # tutorial este numele proiectului, # c - limbaj de programare executabil ( 'demo' , 'main.c' ) # demo este numele executabilului, # "main.c" - fișier cod sursă

Mai întâi, să inițializam proiectul.

$ meson setup builddir

Va apărea directorul „ builddir ”, să intrăm în el și să ne construim proiectul.

$ cd builddir $ meson compile

Fișierul executabil este gata, rămâne doar să îl rulați.

$ ./demo

Proiecte software care folosesc Meson

Din lista proiectelor software, pot fi remarcate cele mai semnificative și influente [26] :

Vezi și

Note

  1. 1 2 Sistemul Meson Build : Informații legale 
  2. Sistemul de construire Meson pe Open Hub:  Pagina de limbi
  3. 1 2 Sistemul Meson Build 
  4. Versiunea 0.63.3 - 2022.
  5. GitHub:  COPIERE
  6. Versiunea 0.58 a sistemului de construcție Meson. Un proiect pentru a crea o implementare a Meson în limbajul C. OpenNET (2 mai 2021). Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  7. Manual Meson: Running Meson - Construire de la sursă. Director de constructii cu  ninja . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  8. Tim Schürmann. Meson este un nou sistem de creare de software . rus-linux.net (18 aprilie 2017). Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  9. Tim Schürmann. Meson - un nou sistem de construcție  . Revista Linux (1 septembrie 2014). Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  10. De ce se numește Meson?  (engleză) . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  11. Sistemul de construcție Meson: Funcții - proiect(  ) . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 10 februarie 2022.
  12. 1 2 Sistemul de construcție Meson:  manualul sistemului de dependență Wrap . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  13. ↑ Sistemul de construcție Meson : ID-urile compilatorului  . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 21 februarie 2022.
  14. Jussi Pakkanen. Cum funcționează compilarea  (engleză) (PDF). meson-manual.com (2020). Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  15. Sistemul de construcție Meson:  compilație încrucișată . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  16. Sistemul de construcție Meson: Dependențe - Dependențe cu  funcționalitate de căutare personalizată . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 21 februarie 2022.
  17. ↑ Sistemul de construcție Meson : pachete Meson WrapDB  . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  18. ↑ Sistemul Meson Build : Integrare manuală-IDE  . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  19. Sistemul de construcție Meson: Întrebări frecvente - De ce este implementat Meson în Python (mai degrabă decât limbajul de programare X)?  (engleză) . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  20. Sistemul Meson Build: Întrebări frecvente - Dar îmi doresc foarte mult o versiune de Meson care să nu folosească python!  (engleză) . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  21. Meson ++  . GitHub . Preluat la 22 ianuarie 2022. Arhivat din original la 6 ianuarie 2022.
  22. Sistemul de construcție Meson: Întrebări frecvente - De ce Meson nu este doar un modul Python, astfel încât să îmi pot codifica configurația de construcție în Python?  (engleză) . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  23. Sistemul de construcție Meson: Întrebări frecvente - Am un compilator proprietar X care nu funcționează cu Meson, cum îl pot face să funcționeze?  (engleză) . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  24. Sistemul de construcție Meson:  Sintaxă . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  25. Sistemul Meson Build: Întrebări frecvente - De ce nu există un backend Make?  (engleză) . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.
  26. ↑ Sistemul de construcție Meson: documentație suplimentară - Lista proiectelor care utilizează  Meson . mesonbuild.com . Preluat la 22 ianuarie 2022. Arhivat din original la 23 ianuarie 2022.

Link -uri