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.
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").