Lançamento do sistema de montagem Meson 0.52

publicado versão do sistema de compilação mesa 0.52, 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 fornecido licenciado sob Apache 2.0.

O principal objetivo do desenvolvimento do Meson é fornecer alta velocidade no processo de montagem combinada com conveniência e facilidade de uso. Em vez do utilitário make, a compilação padrão usa o kit de ferramentas Ninja, mas também é possível usar outros backends, como xcode e VisualStudio. 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 especificadas em uma linguagem simplificada específica do domínio, são altamente legíveis e compreensíveis para o usuário (conforme pretendido pelos autores, o desenvolvedor deve gastar um mínimo de tempo escrevendo regras).

Com suporte compilar e construir em Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows usando GCC, Clang, Visual Studio e outros compiladores. É possível construir projetos em diversas linguagens de programação, incluindo C, C++, Fortran, Java e Rust. Há suporte para o 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, nas quais a execução da compilação em ambientes diferentes resulta na geração de arquivos executáveis ​​completamente idênticos.

O principal inovações Méson 0.52:

  • Adicionado suporte experimental para Webassembly usando Emscripten como compilador;
  • O suporte para as plataformas Illumos e Solaris foi significativamente melhorado e colocado em condições de funcionamento;
  • Garante que os scripts de internacionalização baseados em gettext sejam ignorados caso o sistema não possua o kit de ferramentas gettext instalado (anteriormente, era exibido um erro ao utilizar o módulo i18n em sistemas sem gettext);
  • Suporte aprimorado para bibliotecas estáticas. Muitos problemas ao usar bibliotecas estáticas desinstaladas foram resolvidos;
  • Adicionada a capacidade de usar dicionários para atribuir variáveis ​​de ambiente. Ao chamar ambiental(), o primeiro elemento agora pode ser especificado como um dicionário no qual as variáveis ​​de ambiente são definidas na forma de chave/valor. Essas variáveis ​​serão transferidas para environment_object como se tivessem sido definidas individualmente por meio do método set(). Os dicionários também podem agora ser passados ​​para várias funções que suportam um argumento "env";
  • Adicionada função "runtarget alias_target(target_name, dep1, ...)" que cria um novo alvo de compilação de primeiro nível que pode ser chamado com o backend de compilação selecionado (por exemplo, "ninja target_name"). Este destino de construção não executa nenhum comando, mas garante que todas as dependências sejam construídas;
  • Habilitada a configuração automática da variável de ambiente PKG_CONFIG_SYSROOT_DIR durante a compilação cruzada se houver uma configuração sys_root na seção “[propriedades]”;
  • Adicionada opção "--gdb-path" para determinar o caminho para o depurador GDB ao especificar a opção "--gdb testname" para executar o GDB com o script de teste especificado;
  • Adicionada detecção automática do alvo de compilação clang-tidy para executar este linter com todos os arquivos de origem. O alvo é criado se clang-tidy estiver disponível no sistema e o arquivo “.clang-tidy” (ou “_clang-tidy”) estiver definido na raiz do projeto;
  • Adicionada dependência('blocos') para uso na extensão Clang Blocos;
  • As visualizações do vinculador e do compilador são separadas, permitindo o uso de diferentes combinações de compiladores e vinculadores;
  • Adicionado o método all_dependencies() aos objetos SourceSet além do método all_sources();
  • Em run_project_tests.py, a opção “--only” foi adicionada para executar testes seletivamente (por exemplo, “python run_project_tests.py —only fortran python3”);
  • A função find_program() agora tem a capacidade de pesquisar apenas as versões necessárias de um programa (a versão é determinada executando o programa com a opção “-version”);
  • Para controlar a exportação de símbolos, a opção vs_module_defs foi adicionada à função shared_module(), semelhante a shared_library();
  • O módulo kconfig foi expandido para suportar configure_file() para especificar um arquivo de entrada;
  • Adicionada a capacidade de especificar vários arquivos de entrada para manipuladores “command:” para configure_file();
  • O comando “dist” para criar um arquivo foi movido para a categoria de comandos de primeiro nível (anteriormente o comando estava vinculado ao ninja). Adicionada opção "--formats" para definir os tipos de arquivos a serem criados (por exemplo,
    "meson dist -formats=xztar,zip").

Fonte: opennet.ru

Adicionar um comentário