Meson build system release 1.0

Na-publish ang release ng Meson 1.0.0 build system, na ginagamit para bumuo ng mga proyekto tulad ng X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME at GTK. Ang Meson code ay nakasulat sa Python at lisensyado sa ilalim ng lisensya ng Apache 2.0.

Ang pangunahing layunin ng pagpapaunlad ng Meson ay magbigay ng isang mabilis na proseso ng pagpupulong na sinamahan ng kaginhawahan at kadalian ng paggamit. Sa halip na gumawa, ang build ay gumagamit ng Ninja toolkit bilang default, ngunit ang iba pang mga backend tulad ng xcode at VisualStudio ay maaari ding gamitin. Ang system ay may built-in na multi-platform dependency handler na nagbibigay-daan sa iyong gamitin ang Meson upang bumuo ng mga pakete para sa mga pamamahagi. Ang mga panuntunan sa pagpupulong ay itinakda sa isang pinasimpleng wikang tukoy sa domain, ang mga ito ay mahusay na nababasa at naiintindihan ng gumagamit (ayon sa ideya ng mga may-akda, ang developer ay dapat gumugol ng isang minimum na oras sa pagsulat ng mga panuntunan).

Sinusuportahan ang cross-compiling at pagbuo sa Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS at Windows gamit ang GCC, Clang, Visual Studio at iba pang compiler. Posibleng bumuo ng mga proyekto sa iba't ibang programming language, kabilang ang C, C++, Fortran, Java at Rust. Sinusuportahan ang incremental build mode, kung saan ang mga bahagi lamang na direktang nauugnay sa mga pagbabagong ginawa mula noong huling build ang muling itinayo. Maaaring gamitin ang Meson upang bumuo ng mga paulit-ulit na build, kung saan ang pagpapatakbo ng build sa iba't ibang kapaligiran ay nagreresulta sa ganap na magkaparehong mga executable.

Mga pangunahing inobasyon ng Meson 1.0:

  • ОбъявлСн ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° языкС Rust. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Mesa для сборки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², написанных Π½Π° Rust.
  • Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ prefix, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ компилятора, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов ΠΏΠΎΠΌΠΈΠΌΠΎ строк. НапримСр, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ: cc.check_header(β€˜GL/wglew.h’, prefix : [β€˜#include <windows.h>’, β€˜#include <GL/glew.h>’])
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Β«β€”workdirΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. НапримСр, для использования Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° вмСсто Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ: meson devenv -C builddir β€”workdir .
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Β«inΒ» ΠΈ Β«not inΒ» для опрСдСлСния вхоТдСния Π² строку подстроки ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ€Π°Π½Π΅Π΅ доступной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ вхоТдСния элСмСнта Π² массив ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ. НапримСр: fs = import(β€˜fs’) if β€˜something’ in fs.read(β€˜somefile’) # True endif
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«warning-level=everythingΒ», Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π²Ρ‹Π²ΠΎΠ΄ всСх ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ компилятора (Π² clang ΠΈ MSVC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ -Weverything ΠΈ /Wall, Π° Π² GCC Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ прСдупрСТдСния, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΡƒ -Weverything Π²clang).
  • Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ rust.bindgen Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Β«dependenciesΒ» для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ зависимостям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ компилятором.
  • ОбъявлСна ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ функция java.generate_native_headers, которая ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π° Π² java.native_headers для соотвСтствия ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΡΡ‚ΠΈΠ»ΡŽ наимСнования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, принятому Π² Meson.

Pinagmulan: opennet.ru

Magdagdag ng komento