Ligazón salvaxe 0.9

O lanzamento tivo lugar Ligazón salvaxe 0.9.0 — un novo linker de alto rendemento escrito en Rust. A versión está listada en GitHub. 23 maio 2026 anosO proxecto está posicionado como un linker para acelerar o desenvolvemento iterativo: os autores queren en última instancia lograr unha vinculación incremental, aínda que aínda non está implementada na versión actual. O código distribúese baixo unha licenza dual. Apache 2.0 / MIT.

A principal modificación de Wild 0.9 é a compatibilidade API do complemento Linker, unha interface introducida no linker Gold e tamén compatible con GNU ld e Mold. Para Wild, isto abre o camiño a complemento de linker LTO — optimizacións do tempo de enlace mediante un complemento de enlace. Os desenvolvedores afirman especificamente que isto é útil principalmente para proxectos de C, C++ e código mixto, mentres que os proxectos puros de Rust adoitan realizar LTO internamente. A compatibilidade con esta funcionalidade aínda ten problemas coñecidos e a vinculación a través do complemento pode ser lenta.

Unha parte significativa do traballo en 0.9 estaba relacionado cos preparativos para o traslado de Wild máis alá Linux/ELF. A lóxica específica de ELF foi movida fóra das abstraccións e comezou o traballo de soporte. Mach-O и montaxe webEstas capacidades aínda non están listas para o seu uso práctico, pero xa apareceron os primeiros elementos: análise Mach-O, procesamento de seccións e segmentos, táboa de símbolos, sinatura de código, binario fat, así como soporte inicial para seccións, símbolos e reubicacións WASM.

Cambios clave en Wild Linker 0.9:

  • Compatibilidade con complementos de linker. Engadiuse compatibilidade coas API dos complementos do linker, necesarias para o LTO do complemento do linker, e compatibilidade con algúns scripts de compilación ld/Mold de GCC/GNU. Tamén se corrixiron algúns problemas relacionados coas devolucións de chamada dos complementos, como o arquivo completo, ThinLTO, o límite de ficheiros abertos e a eliminación de código morto durante o LTO.

  • Expansión importante da compatibilidade con scripts de linkers. Implementáronse as directivas PROVIDE e PROVIDE_HIDDEN, a análise e execución de ASSERT, a compatibilidade cos sufixos MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K e M en literais numéricos, operadores lóxicos, bit a bit e unarios, e a coincidencia por nomes de ficheiros de entrada. Isto achega a Wild unha maior compatibilidade con scripts de ligazóns complexos que se atopan a miúdo no software de sistema e nos proxectos de baixo nivel.

  • Melloras para RISC-V, AArch64, x86-64 e LoongArch64. Engadiuse a relaxación de chamadas RISC-V, a relaxación HI20, R_RISCV_ALIGN, a comprobación de extensións ISA en conflito, recolocacións adicionais de AArch64, thunks de extensión de rango para AArch64, a xestión dunha serie de recolocacións x86-64 con relaxacións e aclaracións de rango e aliñamento para LoongArch64.

  • Novas opcións de compatibilidade. Engadiuse compatibilidade con --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags e a forma sen espazo -o/path.

  • Xeración de obxectos en movemento estático. Engadiuse compatibilidade coa creación de ficheiros de obxectos estáticos relocables: ficheiros de obxectos intermedios que aínda poden participar en futuras vinculacións.

  • Melloras no rendemento sen centrarse nun lanzamento "rápido". Os autores sinalan explicitamente que a versión 0.9 non incluía ningunha mellora importante no rendemento, pero tampouco houbo degradación. As optimizacións locais inclúen unha ruta rápida para coincidentes non globais nos scripts de versións, unha redución no número de operacións atómicas, o cálculo paralelo dos enderezos de sección e símbolo durante as exploracións de relaxación e unha redución do reprocesamento de seccións xa resoltas.

  • Moitas correccións de compatibilidade. Corrixiuse a xestión de símbolos débiles non definidos, .ctores/.dtors, RELRO, scripts de versión, SFrame, IFUNC, --version/-v, erros de símbolos non definidos, avisos, recolocacións de depuración, .eh_frame, SHT_SYMTAB_SHNDX, vinculación estática de obxectos dinámicos e varios escenarios con scripts de vinculación.

  • Documentación e xestión de proxectos. Engadíronse un código de conduta, unha política de uso de LLM, documentación de gobernanza, unha matriz de soporte de scripts de linker, instrucións para usar -fuse-ld=wild con GCC 16.1 e a instalación a través de Brew. O repositorio tamén se moveu a unha organización separada de GitHub, wild-linker.

Polo momento, Salvaxe oficialmente centrada principalmente en Linux e ELF. Os estados README do proxecto admiten x86-64, ARM64, RISC-V riscv64gc e apoio inicial LoongArch64 en Linux; pode construír binarios estáticos, static-PIE, executábeis vinculados dinamicamente e ficheiros .so, funciona con información de depuración, GNU jobserver e algúns scripts de linker. Linking incremental, scripts de linker máis complexos, Mach-O e Windows actualmente clasificadas como oportunidades no realizadas ou inconclusas.

En termos prácticos, Wild 0.9 amplía a compatibilidade co ecosistema de compilación existente, comeza a expandirse máis alá de ELF e engade soporte para escenarios que dificultan o uso do linker en proxectos grandes de C/C++ e mixtos. Para os desenvolvedores de Rust, Wild segue a ser interesante como base potencial para futuras ligazóns incrementais e, para os desenvolvedores de sistemas, como outro competidor rápido de GNU ld, LLD e Mold.

Fonte: linux.org.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster