Lançamento do sistema de montagem Meson 1.0

Foi publicada a versão do sistema de compilação Meson 1.0.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.0:

  • O módulo para construção de projetos na linguagem Rust foi declarado estável. Este módulo é usado no projeto Mesa para construir componentes escritos em Rust.
  • Suportada pela maioria das funções de verificação do compilador, a opção prefix implementa a capacidade de lidar com matrizes diferentes de strings. Por exemplo, agora você pode especificar: cc.check_header('GL/wglew.h', prefix : ['#include ', '#incluir '])
  • Um novo argumento "--workdir" foi adicionado para permitir que você substitua o diretório de trabalho. Por exemplo, para usar o diretório atual em vez do diretório de trabalho, você pode executar: meson devenv -C builddir --workdir .
  • Novos operadores "in" e "not in" são propostos para determinar a ocorrência de uma substring em uma string, semelhante à verificação anteriormente disponível para a ocorrência de um elemento em um array ou dicionário. Por exemplo: fs = import('fs') if 'something' in fs.read('somefile') # True endif
  • Adicionada a opção "warning-level=everything" para ativar a saída de todos os avisos do compilador disponíveis (em clang e MSVC usa -Weverything e /Wall, e no GCC avisos separados são incluídos, correspondendo aproximadamente ao modo -Weverything em clang).
  • O método Rust.bindgen implementa a capacidade de processar o argumento "dependências" para passar caminhos para dependências que devem ser processadas pelo compilador.
  • A função java.generate_native_headers foi descontinuada e renomeada para java.native_headers para corresponder ao estilo geral de nomenclatura da função do Meson.

Fonte: opennet.ru

Adicionar um comentário