Wild 0.10


O lançamento ocorreu em 4 de agosto Wild 0.10 — de um linkador livre, escrito em Rust e destinado principalmente à rápida construção de programas no Linux. O linkador executa a etapa final da construção: combina arquivos de objeto e bibliotecas em um arquivo executável ou biblioteca compartilhada prontos. Wild pode ser utilizado como uma substituição para GNU ld, LLD e Mold, embora o objetivo final declarado pelos desenvolvedores — a ligação incremental — ainda não tenha sido implementado.

 

Uma das principais novidades foi o suporte para os parâmetros —gdb-index e —no-gdb-index. Ao ativar essa funcionalidade, o Wild cria na saída uma seção .gdb_index com um índice de informações de depuração. Com isso, o GDB pode encontrar mais rapidamente os símbolos necessários em programas grandes, sem precisar gerar o índice separadamente após a construção. A implementação suporta a nona versão do formato GDB Index; as operações de varredura, combinação e gravação do índice foram paralelizadas.

 

O suporte ao trabalho com scripts de linkador foi significativamente expandido. Apoiou-se agora:

  • seções /DISCARD/ para excluir seções de entrada desnecessárias;
  • cabeçalhos personalizados para programas PHDRS;
  • funções SIZEOF_HEADERS, DEFINED e SEGMENT_START;
  • a palavra-chave AT e a função LOADADDR;
  • expressões condicionais com operador ternário;
  • os comandos SORT, SORT_BY_NAME e SORT_BY_ALIGNMENT;
  • o símbolo __bss_start;
  • modelos de preenchimento para seções de saída;
  • os comandos OUTPUT_FORMAT e OUTPUT_ARCH;
  • múltiplos contadores relativos para o endereço atual.

 

A compatibilidade total com o GNU ld ainda não foi alcançada. Por exemplo, parte das funcionalidades do comando MEMORY, seções OVERLAY e algumas maneiras de alocar seções permanecem incompletas. Os desenvolvedores mantêm separadamente uma tabela de funcionalidades necessárias para a construção do kernel Linux.

 

A performance ao alocar os resultados da construção em Btrfs e VFAT foi melhorada. Wild agora utiliza automaticamente o modo —no-mmap-output-file e não mapeia o arquivo de saída na memória através de mmap. Em um teste realizado pelo desenvolvedor com o linkador Zed no Btrfs, o tempo diminuiu de cerca de 2,6–2,8 para 1,5–1,8 segundos. No entanto, o autor da alteração alerta que, mesmo após a otimização, o Btrfs neste cenário ainda é significativamente mais lento que o tmpfs; para Ext4 e XFS, o uso de mmap, por outro lado, se mostrou mais vantajoso.

A transferência do Wild para outros formatos e plataformas continua. A versão experimental para WebAssembly já é capaz de compor uma série de programas, e o port para Mach-O suporta os arquivos executáveis mais simples. O trabalho nas plataformas de destino de 32 bits foi iniciado, o que deve facilitar a aplicação do Wild no desenvolvimento de sistemas embarcados. Também foi adicionada a manipulação inicial de arquivos objeto PowerPC64 ELFv2 e o suporte ao Mach-O continua a se desenvolver, incluindo arquivos objeto universais e a vinculação direta com bibliotecas dinâmicas. Esses ports ainda não devem ser considerados prontos para uso diário.

A versão de biblioteca do vinculador libwild agora pode receber arquivos de entrada e salvar o resultado diretamente na memória. Isso permite que outros programas integrem o Wild sem a necessidade de criar arquivos intermediários no disco. Além disso, a biblioteca não substitui mais o pool global de threads Rayon, e o suporte para compressão Zstandard pode ser desativado durante a construção.

A nova versão inclui várias correções para x86-64, AArch64, RISC-V e LoongArch64. Foram corrigidos erros no processamento de TLS, PLT, LTO, informações de depuração compactadas, grandes alinhamentos e movimentações em objetos PIE e compartilhados. Possíveis encerramentos inesperados ao analisar scripts de vinculador e erros na formação das seções .tbss, .strtab e .eh_frame também foram corrigidos.

 

O Wild suporta Linux nas arquiteturas x86-64, AArch64 e RISC-V; o suporte para LoongArch64 e PowerPC64LE é atualmente considerado inicial. O vinculador pode ser instalado a partir de arquivos prontos, através de cargo-binstall, Homebrew, Nix ou pelo comando cargo install —locked wild-linker. O código fonte é disponibilizado ao usuário sob licenças Apache 2.0 ou MIT.

 

Fonte: linux.org.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster