ВСрсия Π½Π° систСмата Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Meson 1.3

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π΅ вСрсията Π½Π° систСмата Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Meson 1.3.0, която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ΠΈ GTK. ΠšΠΎΠ΄ΡŠΡ‚ Meson Π΅ написан Π½Π° Python ΠΈ Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Apache 2.0.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Meson Π΅ Π΄Π° осигури високоскоростСн процСс Π½Π° сглобяванС, ΡΡŠΡ‡Π΅Ρ‚Π°Π½ с удобство ΠΈ Π»Π΅ΠΊΠΎΡ‚Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. ВмСсто make, компилацията ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° инструмСнтариума Ninja ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π½ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅, ΠΊΠ°Ρ‚ΠΎ xcode ΠΈ VisualStudio. БистСмата ΠΈΠΌΠ° Π²Π³Ρ€Π°Π΄Π΅Π½ ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° зависимости, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Meson Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° дистрибуции. ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° сглобяванС са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° опростСн Π΅Π·ΠΈΠΊ, спСцифичСн Π·Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½, Ρ‚Π΅ са Π΄ΠΎΠ±Ρ€Π΅ Ρ‡Π΅Ρ‚ΠΈΠΌΠΈ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌΠΈ Π·Π° потрСбитСля (спорСд идСята Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ трябва Π΄Π° отдСля ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° писанС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°).

ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΠΊΡ€ΡŠΡΡ‚ΠΎΡΠ°Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ΠΈ Windows с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° GCC, Clang, Visual Studio ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ C, C++, Fortran, Java ΠΈ Rust. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Ρ‚ само ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са пряко ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ слСд послСдното ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅. Meson ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° повтарящи сС ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° компилацията Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди Π²ΠΎΠ΄ΠΈ Π΄ΠΎ напълно ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Основни ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π½Π° Meson 1.3:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опцията β€žwerror: trueβ€œ към ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° compiler.compiles(), compiler.links() ΠΈ compiler.run(), ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° прСдупрСТдСнията Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΊΠ°Ρ‚ΠΎ Π³Ρ€Π΅ΡˆΠΊΠΈ (ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π±Π΅Π· прСдупрСТдСния ).
  • Π”ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ has_define Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° дСфиницията Π½Π° символа ΠΎΡ‚ прСпроцСсора.
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ macro_name Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към функцията configure_file(), добавяйки ΠΌΠ°ΠΊΡ€ΠΎΠ·Π°Ρ‰ΠΈΡ‚Π° Π·Π° Π΄Π²ΠΎΠΉΠ½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Ρ‡Ρ€Π΅Π· β€œ#include” (β€œinclude guards”), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Π² стила Π½Π° макроситС Π½Π° Π΅Π·ΠΈΠΊΠ° C (опростяващо ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅Π½ ΠΈΠΌΠ΅Π½Π° Π½Π° макроси).
  • Нов ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към configure_file() - JSON ("output_format: json").
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡŠΡ†ΠΈ със стойности към ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ c_std ΠΈ cpp_std (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€ždefault_options: 'c_std=gnu11,c11′’).
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ CustomTarget Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° пСрсонализиранС Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π°, ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½ΠΈ ΠΎΡ‚ ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ninja.
  • "jar" build_target Π΅ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ ΠΈ вмСсто Π½Π΅Π³ΠΎ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ "jar()".
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ β€ženvβ€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към ΠΌΠ΅Ρ‚ΠΎΠ΄Π° generator.process(), Π·Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата, Ρ‡Ρ€Π΅Π· която Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ‰Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Π²Ρ…ΠΎΠ΄Π°.
  • ΠšΠΎΠ³Π°Ρ‚ΠΎ сС ΡƒΠΊΠ°Π·Π²Π°Ρ‚ Ρ†Π΅Π»Π΅Π²ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π° компилация, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, суфикси ΠΊΠ°Ρ‚ΠΎ "executable('foo', 'main.c', name_suffix: 'bar')" ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΡŠΡ‰Π°Ρ‚Π° дирСктория.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ β€žvs_module_defsβ€œ към функцията execuable(), Π·Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° def Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° списъка с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° shared_module().
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ 'default_options' към функцията find_program() Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° Ρ€Π΅Π·Π΅Ρ€Π²Π΅Π½ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ fs.relative_to(), ΠΊΠΎΠΉΡ‚ΠΎ Π²Ρ€ΡŠΡ‰Π° относитСлния ΠΏΡŠΡ‚ Π·Π° ΠΏΡŠΡ€Π²ΠΈΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, спрямо втория, Π°ΠΊΠΎ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΡŠΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°. НапримСр "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • БлСдният ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€_symlinks Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ install_data(), install_headers() ΠΈ install_subdir(); ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½, сС слСдват символни Π²Ρ€ΡŠΠ·ΠΊΠΈ.
  • Към ΠΌΠ΅Ρ‚ΠΎΠ΄Π° int.to_string() Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ β€žfillβ€œ Π·Π° постСпСнно запълванС Π½Π° Π½ΠΈΠ·Π° с Π²ΠΎΠ΄Π΅Ρ‰ΠΈ Π½ΡƒΠ»ΠΈ. НапримСр ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° message(n.to_string(fill: 3)) Π·Π° n=4 Ρ‰Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ Π½ΠΈΠ·Π° "004".
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° Ρ†Π΅Π», clang-tidy-fix, която ΡƒΠΊΠ°Π·Π²Π° стартиранСто Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° clang-tidy с Ρ„Π»Π°Π³Π° "-fix".
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° суфикса (TARGET_SUFFIX) Π½Π° Ρ†Π΅Π»Ρ‚Π° Π·Π° сглобяванС ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата MESON_PACKAGE_CACHE_DIR Π·Π° замяна Π½Π° ΠΏΡŠΡ‚Ρ към кСша Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ/packagecache), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ сподСлСн кСш Π² няколко ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° "meson setup --clearcache" Π·Π° изчистванС Π½Π° постоянния кСш.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° β€žrequiredβ€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към всички ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ β€žhas_*β€œ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вмСсто β€žassert(cc.has_function('some_function'))β€œ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС β€žcc.has_function('some_function' , Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ: вярно)”.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π° Π΄ΡƒΠΌΠ°, rust_abi, към Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ shared_library(), static_library(), library() ΠΈ shared_module(), която трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° вмСсто остарСлия rust_crate_type.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€