Dziki 0.10


Uroczystość wręczenia dyplomów odbyła się 4 sierpnia Dziki 0.10 — darmowy linker napisany w języku Rust i przeznaczony głównie do szybkiego budowania programów w LinuxLinker wykonuje ostatni etap kompilacji: łączy pliki obiektowe i biblioteki w finalny plik wykonywalny lub bibliotekę współdzieloną. Wild może być używany jako zamiennik dla GNU ld, LLD i Mold, chociaż deklarowanym ostatecznym celem twórców jest przyrostowe linkowanie. jeszcze nie wdrożone.

 

Jedną z głównych innowacji było wsparcie parametrów --gdb-index i --no-gdb-indexPo włączeniu tej funkcji Wild tworzy w pliku wyjściowym sekcję .gdb_index zawierającą indeks informacji debugowania. Pozwala to GDB szybciej znajdować niezbędne symbole w dużych programach bez konieczności oddzielnego generowania indeksu po kompilacji. Implementacja obsługuje wersję 9 formatu indeksu GDB; operacje skanowania, scalania i zapisywania indeksu zostały zrównoleglone.

 

Skrypty w Composerze zostały znacząco rozszerzone. Dodano obsługę:

  • sekcje /DISCARD/ w celu wykluczenia niepotrzebnych sekcji wejściowych;
  • Niestandardowe tytuły programów PHDRS;
  • funkcje SIZEOF_HEADERS, DEFINED i SEGMENT_START;
  • słowo kluczowe AT i funkcja LOADADDR;
  • wyrażenia warunkowe z operatorem trójargumentowym;
  • Polecenia SORT, SORT_BY_NAME i SORT_BY_ALIGNMENT;
  • symbol __bss_start;
  • szablony do wypełniania sekcji wyjściowych;
  • Polecenia OUTPUT_FORMAT i OUTPUT_ARCH;
  • kilka względnych liczników bieżącego adresu.

 

Pełna zgodność z GNU ld nie została jeszcze osiągnięta. Na przykład niektóre funkcje polecenia MEMORY, sekcje OVERLAY oraz niektóre metody rozmieszczania sekcji pozostają niedokończone. Programiści pracują nad tym niezależnie. tabela możliwości wymaganych do łączenia jądra Linux.

 

Poprawiono wydajność podczas zapisywania wyników kompilacji w systemach Btrfs i VFAT. Wild automatycznie używa teraz trybu --no-mmap-output-file i nie mapuje pliku wyjściowego do pamięci. W teście linkowania Zed na Btrfs przeprowadzonym przez deweloperów, czas został skrócony z około 2,6–2,8 do 1,5–1,8 sekundy. Autor zmiany ostrzega jednak, że nawet po optymalizacji, Btrfs pozostaje znacznie wolniejszy niż tmpfs w tym scenariuszu; z kolei w przypadku Ext4 i XFS użycie mmap okazało się korzystniejsze.

Wild jest nadal przenoszony na inne formaty i platformy. Wersja eksperymentalna dla WebAssembly umożliwia już łączenie szeregu programów, a port dla Mach-O umożliwia łączenie podstawowych plików wykonywalnych. Rozpoczęto prace nad 32-bitowymi platformami docelowymi, co powinno jeszcze bardziej uprościć wykorzystanie Wilda w rozwoju systemów wbudowanych. Dodano również wstępne przetwarzanie plików obiektowych PowerPC64 ELFv2, a obsługa Mach-O jest stale rozwijana, w tym uniwersalne pliki obiektowe i bezpośrednie łączenie z bibliotekami dynamicznymi. Porty te nie powinny być jeszcze uznawane za gotowe do codziennego użytku.

Linker libwild może teraz akceptować pliki wejściowe i zapisywać dane wyjściowe bezpośrednio w pamięci. Pozwala to innym programom na osadzanie Wild bez konieczności tworzenia plików pośrednich na dysku. Co więcej, biblioteka nie nadpisuje już globalnej puli wątków Rayon, a obsługę kompresji Zstandard można wyłączyć w trakcie kompilacji.

To wydanie zawiera liczne poprawki dla architektur x86-64, AArch64, RISC-V i LoongArch64. Poprawki te obejmują błędy obsługi protokołów TLS, PLT, LTO, skompresowanych informacji debugowania, dużych wyrównań oraz relokacji w PIE i obiektach współdzielonych. Naprawiono również potencjalne awarie podczas analizy skryptu linkera oraz błędy generowania sekcji .tbss, .strtab i .eh_frame.

 

Dzikie wsparcie Linux Na architekturach x86-64, AArch64 i RISC-V; obsługa LoongArch64 i PowerPC64LE jest obecnie wstępnie oznaczona. Linker można zainstalować z gotowych archiwów, za pomocą cargo-binstall, Homebrew, Nix lub za pomocą polecenia cargo install --locked wild-linker. Kod źródłowy jest dystrybuowany według uznania użytkownika. Licencje Apache 2.0 lub MIT.

 

Źródło: linux.org.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster