ИзданиС Π½Π° систСмот Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° Meson 0.52

објавСно ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° систСмот МСзон 0.52, кој сС користи Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ΠΈ GTK+. ΠœΠ΅Π·ΠΎΠ½ΡΠΊΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π΅ напишан Π²ΠΎ Python ΠΈ испорачани Π»ΠΈΡ†Π΅Π½Ρ†ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ Apache 2.0.

ΠšΠ»ΡƒΡ‡Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° Meson Π΅ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Π³ΠΎΠ»Π΅ΠΌΠ° Π±Ρ€Π·ΠΈΠ½Π° Π½Π° процСсот Π½Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° со практичност ΠΈ Π»Π΅ΡΠ½ΠΎΡ‚ΠΈΡ˜Π° Π½Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅. НамСсто Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° make, стандардната ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π³ΠΎ користи ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΎΡ‚ со Π°Π»Π°Ρ‚ΠΊΠΈ Нинџа, Π½ΠΎ исто Ρ‚Π°ΠΊΠ° Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС користат ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π·Π°Π΄Π½ΠΈ Π΄Π΅Π»ΠΎΠ²ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС xcode ΠΈ VisualStudio. БистСмот ΠΈΠΌΠ° Π²Π³Ρ€Π°Π΄Π΅Π½ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ Π·Π° зависност ΠΎΠ΄ повСќС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° користитС Meson Π·Π° Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° дистрибуции. ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ сС спСцифицирани Π½Π° поСдноставСн јазик спСцифичСн Π·Π° Π΄ΠΎΠΌΠ΅Π½ΠΎΡ‚, сС ΠΌΠ½ΠΎΠ³Ρƒ Ρ‡ΠΈΡ‚Π»ΠΈΠ²ΠΈ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π»ΠΈΠ²ΠΈ Π·Π° корисникот (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ ΠΎΠ΄ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅, Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°).

ΠŸΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΎ кросс-компиляция ΠΈ сборка Π² Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ΠΈ Windows с использованиСм GCC, Clang, Visual Studio ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторов. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° сборка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ C, C++, Fortran, Java ΠΈ Rust. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ сборки, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связанныС с измСнСниями, внСсёнными с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ сборки. 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 Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π‘Π»ΠΎΠΊΠΎΠ²ΠΈ;
  • Π Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ прСдставлСния ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΈ компилятора, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сочСтания компиляторов ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ²;
  • Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ 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Β»).

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€