ืžืขืกืึธืŸ ื‘ื•ื™ืขืŸ ืกื™ืกื˜ืขื ืžืขืœื“ื•ื ื’ 1.3

ื“ื™ ืžืขืกืึธืŸ 1.3.0 ื‘ื•ื™ืขืŸ ืกื™ืกื˜ืขื ืื™ื– ื‘ืืคืจื™ื™ื˜, ื•ื•ืึธืก ืื™ื– ื’ืขื ื•ืฆื˜ ืฆื• ื‘ื•ื™ืขืŸ ืคึผืจืึทื“ื–ืฉืขืงืก ืึทื–ืึท ื•ื•ื™ X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ืื•ืŸ GTK. Meson ืก ืงืึธื“ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ืื•ืŸ ืื™ื– ืœื™ื™ืกืึทื ืกื˜ ืื•ื ื˜ืขืจ ื“ื™ Apache 2.0 ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ.

ื“ืขืจ ืฉืœื™ืกืœ ืฆื™ืœ ืคื•ืŸ Meson ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ื– ืฆื• ืฆื•ืฉื˜ืขืœืŸ ื”ื•ื™ืš ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ื“ื™ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืคึผืจืึธืฆืขืก ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก ืื•ืŸ ื™ื– ืคื•ืŸ ื ื•ืฆืŸ. ืึทื ืฉื˜ืึธื˜ ื“ื™ ืžืึทื›ืŸ ื ื•ืฆืŸ, ื“ื™ Ninja Toolkit ืื™ื– ื’ืขื ื™ืฆื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืขืŸ ื‘ื ื™ืŸ, ืึธื‘ืขืจ ืื ื“ืขืจืข ื‘ืึทืงืขื ื“ื– ืึทื–ืึท ื•ื•ื™ xcode ืื•ืŸ VisualStudio ืงืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜. ื“ื™ ืกื™ืกื˜ืขื ื”ืื˜ ืึท ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืžื•ืœื˜ื™-ืคึผืœืึทื˜ืคืึธืจืžืข ื“ืขืคึผืขื ื“ืขื ืกื™ ื”ืึทื ื“ืœืขืจ ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื ื•ืฆืŸ Meson ืฆื• ื‘ื•ื™ืขืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื– ืคึฟืึทืจ ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื–. ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ื›ึผืœืœื™ื ื–ืขื ืขืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ืึท ืกื™ืžืคึผืœืึทืคื™ื™ื“ ืคืขืœื“-ืกืคึผืขืฆื™ืคื™ืฉ ืฉืคึผืจืึทืš, ื–ืขื ืขืŸ ื”ืขื›ืกื˜ ืœื™ื™ื ืขื•ื•ื“ื™ืง ืื•ืŸ ืคืึทืจืฉื˜ื™ื™ื™ืง ืคึฟืึทืจ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ (ื•ื•ื™ ื‘ื“ืขื” ื“ื•ืจืš ื“ื™ ืžื—ื‘ืจื™ื, ื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื–ืึธืœ ืคืึทืจื‘ืจืขื ื’ืขืŸ ืึท ืžื™ื ื™ืžื•ื ืคื•ืŸ ืฆื™ื™ื˜ ืฆื• ืฉืจื™ื™ื‘ืŸ ื›ึผืœืœื™ื).

ืฉื˜ื™ืฆื˜ ืงืจื™ื™ึทื– ื–ืึทืžืœื•ื ื’ ืื•ืŸ ื‘ื ื™ืŸ ืื•ื™ืฃ ืœื™ื ื•ืงืก, Illumos / Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ืื•ืŸ Windows ื ื™ืฆืŸ GCC, Clang, Visual Studio ืื•ืŸ ืื ื“ืขืจืข ืงืึธืžืคึผื™ืœืขืจืก. ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื‘ื•ื™ืขืŸ ืคึผืจืึทื“ื–ืฉืขืงืก ืื™ืŸ ืคืึทืจืฉื™ื“ืŸ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทื›ืŸ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ C, C ++, Fortran, Java ืื•ืŸ Rust. ื™ื ืงืจืขืžืขื ื˜ืึทืœ ื‘ื•ื™ืขืŸ ืžืึธื“ืข ืื™ื– ื’ืขืฉื˜ื™ืฆื˜, ืื™ืŸ ื•ื•ืึธืก ื‘ืœื•ื™ื– ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื’ืœื™ื™ึทืš ืฉื™ื™ึทื›ื•ืช ืฆื• ืขื ื“ืขืจื•ื ื’ืขืŸ ื’ืขืžืื›ื˜ ื–ื™ื ื˜ ื“ื™ ืœืขืฆื˜ืข ื‘ื•ื™ืขืŸ ื–ืขื ืขืŸ ืจื™ื‘ื™ืœื˜. ืžืขืกืึธืŸ ืงืขื ืขืŸ ื•ื•ืขืจืŸ ื’ืขื ื•ืฆื˜ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืจื™ืคึผื™ื˜ืึทื‘ืึทืœ ื‘ื•ื™ืขืŸ, ืื™ืŸ ื•ื•ืึธืก ืคืœื™ืกื ื“ื™ืง ื“ื™ ื‘ื•ื™ืขืŸ ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ืจื™ื–ืึทืœื˜ื™ื“ ืื™ืŸ ื“ื™ ื“ื•ืจ ืคื•ืŸ ื’ืึธืจ ื™ื™ื“ืขื ื™ืงืึทืœ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืขืก.

ื”ื•ื™ืคึผื˜ ื™ื ืึธื•ื•ื•ื™ื™ืฉืึทื ื– ืคื•ืŸ Meson 1.3:

  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ื“ื™ ืึธืคึผืฆื™ืข "ื•ื•ืขืจror: ืืžืช" ืฆื• ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ ื˜ืฉืขืง ืžืขื˜ื”ืึธื“ืก compiler.compiles (), compiler.links () ืื•ืŸ compiler.run (), ื•ื•ืึธืก ื˜ืจื™ืฅ ืงืึทืžืคึผื™ื™ืœืขืจ ื•ื•ืึธืจื ื™ื ื’ื– ื•ื•ื™ ืขืจืจืึธืจืก (ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืงืึธื“ ืื™ื– ื’ืขื‘ื•ื™ื˜ ืึธืŸ ื•ื•ืึธืจื ื™ื ื’ื– ).
  • ืึทื“ื“ืขื“ has_define ืื•ืคึฟืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืกื™ืžื‘ืึธืœ ื“ืขืคึฟื™ื ื™ืฆื™ืข ื“ื•ืจืš ืคึผืจืขืคึผืจืึทืกืขืกืขืจ.
  • ื“ืขืจ ืžืึทืงืจืึธื•_ื ืึทืžืข ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ configure_file () ืคึฟื•ื ืงืฆื™ืข, ืึทื“ื™ื ื’ ืžืึทืงืจืึธื• ืฉื•ืฅ ืคึฟืึทืจ ื˜ืึธืคึผืœ ืงืึทื ืขืงืฉืึทื ื– ื“ื•ืจืš "# ื™ื ืงืœื•ื“ืข" ("ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื’ืึทืจื“ื–"), ื“ื™ื–ื™ื™ื ื“ ืื™ืŸ ื“ื™ ื ื•ืกื— ืคื•ืŸ ืžืึทืงืจืึธืก ืื™ืŸ ื“ื™ C ืฉืคึผืจืึทืš (ืกื™ืžืคึผืคึผืœื™ ื“ื™ ืฉืึทืคื•ื ื’ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ื˜ืขืงืขืก ืžื™ื˜ ื“ื™ื ืึทืžื™ืฉ) ืžืึทืงืจืึธื• ื ืขืžืขืŸ).
  • ื ื ื™ื™ึทืข ืจืขื–ื•ืœื˜ืึทื˜ ืคึฟืึธืจืžืึทื˜ ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• configure_file () - JSON ("output_format: json").
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื ื•ืฆืŸ ืจืฉื™ืžื•ืช ืคื•ืŸ ื•ื•ืึทืœื•ืขืก ืฆื• ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก c_std ืื•ืŸ cpp_std (ืœืžืฉืœ, "default_options: 'c_std=gnu11,c11โ€ฒ').
  • ืื™ืŸ ืžืึทื“ื–ืฉื•ืœื– ื•ื•ืึธืก ื ื•ืฆืŸ CustomTarget ืฆื• ืคึผืจืึธืฆืขืก ื˜ืขืงืขืก, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืงืึทืกื˜ืึทืžื™ื™ื– ืึทืจื˜ื™ืงืœืขืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข ื“ื•ืจืš ื“ื™ ื ื™ื ื“ื–ืฉืึท ื ื•ืฆืŸ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ.
  • ื“ื™ build_target "jar" ืื™ื– ื“ื™ืคึผืจื™ืฉื™ื™ื™ื˜ื™ื“ ืื•ืŸ ื“ื™ "jar ()" ืจื•ืคืŸ ืื™ื– ืจืขืงืึทืžืขื ื“ื™ื“ ืึทื ืฉื˜ืึธื˜.
  • ื“ืขืจ 'env' ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ generator.process() ืื•ืคึฟืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœ ื“ื•ืจืš ื•ื•ืึธืก ื“ืขืจ ื’ืขื ืขืจืึทื˜ืึธืจ ื•ื•ืขื˜ ืคึผืจืึธืฆืขืก ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘.
  • ื•ื•ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื‘ื•ื™ืขืŸ ืฆื™ืœ ื ืขืžืขืŸ ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ืขืงืกืขืงื•ื˜ืึทื‘ืœืขืก, ืกืึทืคื™ืงืก ืึทื–ืึท ื•ื•ื™ "ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ('ืคืึธืึธ', 'ืžืึทื™ืŸ.ืง', ื ืึธืžืขืŸ_ืกื•ืคืคื™ืงืก: 'ื‘ืึทืจ')" ื–ืขื ืขืŸ ืขืจืœื•ื™ื‘ื˜ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื ืึธืš ืขืงืกืขืงื•ื˜ืึทื‘ืœืขืก ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ.
  • ืฆื•ื’ืขื’ืขื‘ืŸ ื“ืขื "vs_module_defs" ืคึผืึทืจืึทืžืขื˜ืขืจ ืฆื• ื“ื™ ืขืงืกืขืงื˜ื•ืึทื‘ืœืข () ืคึฟื•ื ืงืฆื™ืข ืฆื• ื ื•ืฆืŸ ืึท ื“ืขืฃ ื˜ืขืงืข ื•ื•ืึธืก ื“ื™ืคื™ื™ื ื– ื“ื™ ืจืฉื™ืžื” ืคื•ืŸ ืคืึทื ื’ืงืฉืึทื ื– ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• shared_module ().
  • ืฆื•ื’ืขื’ืขื‘ืŸ 'default_options' ืคึผืึทืจืึทืžืขื˜ืขืจ ืฆื• find_program () ืคื•ื ืงืฆื™ืข ืฆื• ืฉื˜ืขืœืŸ ืคืขืœื™ืงื™ื™ึทื˜ ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ืคืึทืœื‘ืึทืง ืกื•ื‘ืคึผืจืึธื“ื–ืฉืขืงื˜.
  • ืฆื•ื’ืขื’ืขื‘ืŸ fs.relative_to() ืื•ืคึฟืŸ, ื•ื•ืึธืก ืงืขืจื˜ ื“ื™ ืงืึธืจืขื•ื• ื“ืจืš ืคึฟืึทืจ ื“ืขืจ ืขืจืฉื˜ืขืจ ืึทืจื’ื•ืžืขื ื˜, ืงืึธืจืขื•ื• ืฆื• ื“ื™ ืจื’ืข, ืื•ื™ื‘ ื“ืขืจ ืขืจืฉื˜ืขืจ ื•ื•ืขื’ ื™ื’ื–ื™ืกืฅ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจื“ื™ืง_ืกื™ืžืœื™ื ืงืก ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ ืคืึทื ื’ืงืฉืึทื ื– install_data (), install_headers () ืื•ืŸ install_subdir (); ื•ื•ืขืŸ ืฉื˜ืขืœืŸ, ืกื™ืžื‘ืึธืœื™ืฉ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื ืื›ื’ืขื’ืื ื’ืขืŸ.
  • ื "ืคื™ืœืŸ" ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ int.to_string () ืื•ืคึฟืŸ ืฆื• ื™ื ืงืจืึทืžืขื ื˜ืึทืœื™ ืคึผืœืึธืžื‘ื™ืจืŸ ื“ื™ ืฉื˜ืจื™ืงืœ ืžื™ื˜ ืœื™ื“ื™ื ื’ ื–ืขืจืึธืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืจื•ืคืŸ ืึธื ื–ืึธื’ (n.to_string (fill: 3)) ืคึฟืึทืจ n = 4 ื•ื•ืขื˜ ืคึผืจืึธื“ื•ืฆื™ืจืŸ ื“ื™ ืฉื˜ืจื™ืงืœ "004".
  • ืฆื•ื’ืขื’ืขื‘ืŸ ืึท ื ื™ื™ึทืข ืฆื™ืœ, ืงืœืึทื ื’-ืฆื™ื›ื˜ื™ืง-ืคืึทืจืจื™ื›ื˜ืŸ, ื•ื•ืึธืก ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ืœื•ื™ืคืŸ ื“ื™ ืงืœืึทื ื’-ืฆื™ื›ื˜ื™ืง ื ื•ืฆืŸ ืžื™ื˜ ื“ื™ "-ืคื™ืงืก" ืคืึธืŸ.
  • ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืกืึทืคื™ืงืก (TARGET_SUFFIX) ืคื•ืŸ ื“ื™ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืฆื™ืœ ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ื™ ืงืึทืžืคึผื™ื™ืœื™ื ื’ ื‘ืึทืคึฟืขืœ.
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง MESON_PACKAGE_CACHE_DIR ืฆื• ืึธื•ื•ื•ืขืจืจื™ื™ื“ ื“ืขื ื“ืจืš ืฆื• ื“ื™ ืคึผืขืงืœ ืงืึทืฉ (ืกื•ื‘ืคึผืจืึทื“ื–ืฉืขืงืก / ืคึผืึทืงืงืึทื’ืขืงืึทื˜ืฉืข), ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึทืœืึทื•ื™ื ื’ ืื™ืจ ืฆื• ื ื•ืฆืŸ ืึท ืฉืขืจื“ ืงืึทืฉ ืื™ืŸ ืขื˜ืœืขื›ืข ืคึผืจืึทื“ื–ืฉืขืงืก.
  • ืฆื•ื’ืขื’ืขื‘ืŸ "ืžืขืกืึธืŸ ืกืขื˜ืึทืคึผ --clearcache" ื‘ืึทืคึฟืขืœ ืฆื• ื•ื™ืกืžืขืงืŸ ืคึผืขืจืกื™ืกื˜ืขื ื˜ ืงืึทืฉ.
  • ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ "ืคืืจืœืื ื’ื˜" ืงื™ื•ื•ืขืจื“ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ืึทืœืข "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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’