Lanzamento do sistema de montaxe Meson 0.58. Proxecto para crear unha implementación de Meson en linguaxe C

Publicouse a versión do sistema de compilación Meson 0.58, que se usa para construír proxectos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. O código Meson está escrito en Python e está licenciado baixo a licenza Apache 2.0.

O obxectivo clave de desenvolvemento de Meson é proporcionar un proceso de montaxe de alta velocidade combinado con comodidade e facilidade de uso. En lugar de facer, a compilación usa o conxunto de ferramentas Ninja de forma predeterminada, pero tamén se poden usar outros backends como xcode e VisualStudio. O sistema ten incorporado un controlador de dependencias multiplataforma que che permite usar Meson para crear paquetes para distribucións. As regras de montaxe están establecidas nunha linguaxe simplificada específica do dominio, son ben lexibles e comprensibles para o usuario (segundo a idea dos autores, o desenvolvedor debería dedicar un mínimo de tempo a escribir regras).

Admítese a compilación cruzada e a creación en Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows mediante GCC, Clang, Visual Studio e outros compiladores. É posible construír proxectos en varias linguaxes de programación, incluíndo C, C++, Fortran, Java e Rust. Admítese un modo de compilación incremental, no que só se reconstruíron os compoñentes que están directamente relacionados cos cambios realizados desde a última compilación. Meson pódese usar para xerar compilacións repetibles, onde a execución da compilación en diferentes ambientes dá lugar a executables completamente idénticos.

Principais innovacións de Meson 0.58:

  • Meson ten incorporadas operacións de formato de cadea. En lugar de chamar ao método de formato, agora pode substituír os valores directamente, por exemplo, en lugar de "'Unha cadea @0@ que se formateará @1@'.format(n, m)", pode especificar inmediatamente "f' Unha cadea @n@ para formatear @m@'".
  • Engadiuse un método "substituír" aos obxectos cadea para realizar a operación de substituír unha subcadea por outra, por exemplo, "s = s.replace('aaa', 'bbb')."
  • Engadiuse a función "range(start, stop[, step])" para devolver un obxecto que se pode usar nun bucle foreach, como "foreach i : range(15)".
  • Implementouse o método meson.add_devenv(), que lle permite engadir un obxecto de ambiente() para establecer variables de ambiente cando se utiliza o comando "meson devenv", por exemplo, para establecer unha variable de ambiente coa ruta do directorio de complementos.
  • Para os contornos de desenvolvemento, propúxose un novo comando: “meson devenv -C builddir [], que permite executar o comando nun contorno configurado para lanzar proxectos desde o directorio de compilación (sen instalación).
  • Por defecto, a opción "-pipe" deixa de pasarse cando se executan todos os compiladores compatibles.
  • Permítese chamar a meson.add_dist_script() desde subproxectos.
  • Proporcionou a posibilidade de executar os métodos append() e prepend() varias veces no mesmo obxecto de ambiente().
  • A función error() permite máis dun argumento, separados por un espazo (semellante a warning() e message()).
  • Engadida a opción "--skip-subprojects" para omitir selectivamente a instalación de subproxectos.

Por separado, podemos sinalar o proxecto Boson, dirixido a crear unha implementación portátil e sinxela da linguaxe de guión ensamblador Meson, escrita en C en lugar de Python. O proxecto aínda está na fase inicial de desenvolvemento e aínda non está listo para a montaxe completa dos proxectos de traballo. O código ten licenza GPLv3 (o Python Meson orixinal está licenciado baixo a licenza Apache 2.0).

Fonte: opennet.ru

Engadir un comentario