Ukukhutshwa kwenkqubo yokwakhiwa kweMeson 0.52

ipapashiwe ukwakha inkqubo yokukhululwa Meson 0.52, esetyenziselwa ukwakha iiprojekthi ezifana ne-X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME kunye ne-GTK +. Ikhowudi ye-Meson ibhalwe kwiPython kunye inikwe ilayisenisi phantsi kweApache 2.0.

Injongo ephambili yophuhliso lweMeson kukubonelela ngesantya esiphezulu senkqubo yendibano edibeneyo kunye nokulula kunye nokulula ukusetyenziswa. Endaweni yokwenza into eluncedo, ulwakhiwo olungagqibekanga lusebenzisa izixhobo zokusebenza Ninja, kodwa kuyenzeka ukusebenzisa ezinye izinto ezingasemva, njenge xcode kunye ne VisualStudio. Inkqubo inendawo eyakhelwe-ngaphakathi yokuxhomekeka kwiplatform evumela ukuba usebenzise iMeson ukwakha iipakethe zokusasazwa. Imithetho yeNdibano ichazwe kulwimi olucacileyo lwe-domain-specific, ifundeka kakhulu kwaye iyaqondakala kumsebenzisi (njengoko kuhloswe ngababhali, umphuhlisi kufuneka achithe ubuncinci bexesha lokubhala imithetho).

Iyaxhaswa кросс-компиляция ΠΈ сборка Π² Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ΠΈ Windows с использованиСм GCC, Clang, Visual Studio ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторов. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ C, C++, Fortran, Java ΠΈ Rust. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ сборки, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связанныС с измСнСниями, внСсёнными с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ сборки. Meson ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для формирования повторяСмых сборок, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… запуск сборки Π² Ρ€Π°Π·Π½Ρ‹Ρ… окруТСниях ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².

Siseko ezintsha I-Meson 0.52:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Webassembly с использованиСм Π² качСствС компилятора Emscripten;
  • БущСствСнно ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΈ Π΄ΠΎΠ²Π΅Π΄Π΅Π½Π° Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ состояния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Illumos ΠΈ Solaris;
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сцСнариСв ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ gettext Π² случаС отсутствия Π² систСмС установлСнного инструмСнтария gettext (Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈ использовании модуля i18n Π½Π° систСмах Π±Π΅Π· gettext Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ошибка);
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° статичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π Π΅ΡˆΠ΅Π½Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ использовании дСинсталлированных статичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования словарСй для назначСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ environment() Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ пСрСнСсСны Π² environment_object ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ set(). Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Β«envΒ»;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция Β«runtarget alias_target(target_name, dep1, …)Β», ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π°Ρ Π½ΠΎΠ²ΡƒΡŽ ΡΠ±ΠΎΡ€ΠΎΡ‡Π½ΡƒΡŽ Ρ†Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ сборочным бэкСндом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«ninja target_nameΒ»). Данная сборочная Ρ†Π΅Π»ΡŒ Π½Π΅ запускаСт Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½ΠΎ обСспСчиваСт сборку всСх зависимостСй;
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° автоматичСская установка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния PKG_CONFIG_SYSROOT_DIR ΠΏΡ€ΠΈ кросс-компиляции ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ настройки sys_root Π² сСкции Β«[properties]Β»;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”gdb-pathΒ» для опрСдСлСния ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ GDB ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠΏΡ†ΠΈΠΈ Β«β€”gdb testnameΒ» для запуска GDB с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ тСстовым сцСнариСм;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ автоматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сборочной Ρ†Π΅Π»ΠΈ clang-tidy для запуска этого linter-Π° со всСми исходными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ЦСль создаётся ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² систСмС clang-tidy ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ„Π°ΠΉΠ»Π° Β«.clang-tidyΒ» (ΠΈΠ»ΠΈ Β«_clang-tidyΒ»);
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ dependency(β€˜blocks’) для использования Π² Clang Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Iibhloko;
  • Π Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ прСдставлСния ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΈ компилятора, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сочСтания компиляторов ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ²;
  • Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ SourceSet Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ all_dependencies() Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ all_sources();
  • Π’ run_project_tests.py появилась опция Β«β€”onlyΒ» для Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ запуска тСстов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«python run_project_tests.py β€”only fortran python3Β»);
  • Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ find_program() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поиска Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… вСрсий ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (вСрсия опрСдСляСтся Ρ‡Π΅Ρ€Π΅Π· запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ Β«β€”versionΒ»);
  • Для управлСния экспортом символов Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ shared_module() ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с shared_library() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция vs_module_defs;
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности модуля kconfig, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ configure_file() для опрСдСлСния Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°;
  • Π’ configure_file() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Β«command:Β»;
  • Команда Β«distΒ» для создания Π°Ρ€Ρ…ΠΈΠ²Π° ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π² разряд ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня (Ρ€Π°Π½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Ρ‹Π»Π° привязана ΠΊ ninja). Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”formatsΒ» для опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² создаваСмых Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,
    Β«meson dist β€”formats=xztar,zipΒ»).

umthombo: opennet.ru

Yongeza izimvo