Lançamento do sistema de montagem Meson 1.1

Foi publicada a versão do sistema de compilação Meson 1.1.0, que é usado para construir projetos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. O código Meson é escrito em Python e licenciado sob a licença Apache 2.0.

O principal objetivo de desenvolvimento do Meson é fornecer um processo de montagem de alta velocidade combinado com conveniência e facilidade de uso. Em vez de make, a compilação usa o kit de ferramentas Ninja por padrão, mas outros back-ends, como xcode e VisualStudio, também podem ser usados. O sistema possui um manipulador de dependência multiplataforma integrado que permite usar o Meson para construir pacotes para distribuições. As regras de montagem são definidas em uma linguagem simplificada específica do domínio, são bem legíveis e compreensíveis para o usuário (de acordo com a ideia dos autores, o desenvolvedor deve gastar um mínimo de tempo escrevendo regras).

Compilação cruzada e construção em Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows usando GCC, Clang, Visual Studio e outros compiladores são suportadas. É possível construir projetos em diversas linguagens de programação, incluindo C, C++, Fortran, Java e Rust. Há suporte para um modo de construção incremental, no qual apenas os componentes diretamente relacionados às alterações feitas desde a última construção são reconstruídos. O Meson pode ser usado para gerar compilações repetíveis, onde a execução da compilação em ambientes diferentes resulta em executáveis ​​completamente idênticos.

Principais inovações do Meson 1.1:

  • Um novo argumento "objects:" foi adicionado a declare_dependency() para anexar objetos diretamente a executáveis ​​na forma de dependências internas que não requerem o uso de link_who.
  • O comando "meson devenv -dump" agora tem a opção de especificar um arquivo para gravar variáveis ​​de ambiente em vez de imprimi-lo na saída padrão.
  • Adicionados métodos FeatureOption.enable_if e FeatureOption.disable_if para facilitar a criação de condicionais na preparação para passar parâmetros para a função dependency(). opt = get_option('feature').disable_if(not foo, error_message: 'Não é possível ativar o recurso quando foo também não está habilitado') dep = dependency('foo', obrigatório: opt)
  • É permitido passar objetos gerados como argumentos para “objetos:”.
  • A função de projeto agora suporta a instalação de arquivos com informações sobre licenças de projeto.
  • A execução de "sudo meson install" garante que os privilégios sejam redefinidos durante as reconstruções das plataformas de destino.
  • O comando "meson install" fornece a capacidade de especificar um manipulador separado para obter direitos de root (por exemplo, você pode escolher polkit, sudo, opendoas ou $MESON_ROOT_CMD). Executar "meson install" no modo não interativo não tenta mais aumentar privilégios.
  • Adicionado suporte para opções de leitura do arquivo meson.options em vez de meson_options.txt.
  • É fornecido o redirecionamento de informações sobre o progresso da introspecção para stderr.
  • Adicionado um novo back-end "none" (--backend=none) para criar projetos que possuem apenas regras de instalação e nenhuma regra de construção.
  • Adicionada uma nova dependência pybind11, permitindo que dependency('pybind11') funcione com pkg-config e cmake sem usar o script pybind11-config.
  • As opções "--reconfigure" e "--wipe" são permitidas (meson setup --reconfigure builddir e meson setup --wipe builddir ) com um builddir vazio.
  • Adicionado suporte para a palavra-chave dry_run a meson.add_install_script() para permitir a execução de seus próprios scripts de instalação ao chamar "meson install --dry-run".

Fonte: opennet.ru

Adicionar um comentário