LLVM 17.0 został już wydany i to są jego nowości

Logo LLVM

LLVM to framework do tworzenia kompilatorów, a także pomagający budować nowe języki programowania i ulepszać istniejące języki.

Po sześciu miesiącach rozwoju Zaprezentowano nową wersję LLVM 17.0, w którym w Clang 17.0 zaimplementowano różne ulepszenia, zmiany, poprawki błędów, a przede wszystkim różne ważne aspekty.

Dla osób niezaznajomionych z LLVM powinieneś wiedzieć, że to jest kompilatorem kompatybilnym z GCC (kompilatory, optymalizatory i generatory kodu), które kompilują programy do pośredniego kodu bitowego instrukcji wirtualnej typu RISC (maszyna wirtualna niskiego poziomu z wielopoziomowym systemem optymalizacji).

Wygenerowany pseudokod może zostać przekonwertowany przez kompilator JIT na instrukcje maszynowe już w momencie wykonywania programu.

Główne nowe funkcje LLVM 17.0

W prezentowanej nowej wersji LLVM 17.0 należy wziąć pod uwagę różne istotne aspekty, do których należą na przykład: ulepszenia backendu X86, cóż, dodało obsługa rozszerzeń Architektura zestawu instrukcji ISA SHA512, ISA SM3, ISA SM4 i ISA AVX-VNNI-INT16.

Oprócz tego podkreśla ulepszenia w możliwości backendu dla architektury RISC-V które od tego czasu znacznie się rozwinęły dodano obsługę procesora sive-x280.

Kolejną zmianą, którą możemy znaleźć, jest Zaimplementowano obsługę rozszerzeń procesorów XTH*, a także kompatybilność z rozszerzeniami LSX, LASX, LVZ i LBT ISA do backendu architektury LoongArch.

Ulepszone backendy dla architektur AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU, rozszerzone możliwości linkera LLD i dodano nowe polecenie „informacje o rejestrze” do debugera LLDB, aby wyświetlić wszystkie znane informacje o rekordzie.

Jeśli chodzi o ulepszenia w Clang 17.0, podkreślono, że zaimplementowano funkcje zdefiniowane w przyszłym standardzie C2x, takie jak słowa kluczowe bool, static_assert, Aligns, Alignof i Thread_local, a także możliwość określenia pustych nawiasów kwadratowych «{ } » dla inicjalizacji na wartości zerowe.

Kodo C zapewnia możliwość przekazania wyrażenia „goto”. w obrębie bloków „asm” poprzez pośrednio wybrane znaczniki, dodano obsługę rozszerzenia C, które pozwala na użycie typu zamiast wyrażenia jako pierwszego operandu w „_Generic”, oprócz umożliwienia stałym wyrażeniom w języku C używania struktur, unii i tablice zadeklarowane z atrybutem „const”.

Jeśli chodzi o ulepszenia związane ze standardem C++20, wspomina się o tym teraz Na wszystkich platformach z wyjątkiem Windows dostępna jest pełna obsługa Coroutines, Dodatkowo zaimplementowano dodatkowe wymagania dotyczące operacji porównywania wyrażeń stałych.

Podkreśla się to także terazGwarantowana jest poprawna analiza szablonów lambda podany bezpośrednio po parametrach szablonu i zawierający w bloku zmienną o typie zależnym. Zarezerwowano użycie podwójnych podkreśleń w literałach użytkownika i odradzano używanie słowa kluczowego „operator” w definicjach funkcji z zastrzeżonymi identyfikatorami w nazwie

W ulepszeń, które należy wprowadzić w związku ze standardem C++23 , wspomina się, że jest on w końcowej fazie zatwierdzenia przez ISO zmieniony zakres końcowego typu zwracanego w funkcjach lambda aby najpierw przyjrzeć się haczykom, a następnie otaczającemu je tekstowi.

z inne zmiany które wyróżniają się:

  • Dodano możliwość definiowania tablic wielowymiarowych za pomocą
  • Podczas kompilowania aplikacji C++ przy użyciu trybu optymalizacji „-O0” poprawiono generowanie kodu dla wywołań.
  • Dodano obsługę zmiennej środowiskowej NO_COLOR w celu wyłączenia koloru wyjściowego.
  • Znacznie rozszerzono narzędzia do analizy statycznej i diagnostyki, na przykład dodano nowe kontrole przepełnienia liczb całkowitych ze znakiem, korekcję szablonu lambda, wyrażenia constexpr, porównania wskaźników zerowych, użycie niezainicjowanych struktur itp.
  • Biblioteka Libc++ w dalszym ciągu wdraża obsługę możliwości standardów C++20 i C++23, rozpoczęto także prace nad zapewnieniem obsługi specyfikacji C++26.
  • Dodano obsługę wyrażenia „wymaga cplusplus23” w opisach połączeń pomiędzy plikami nagłówkowymi i modułami.

Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w następujący link.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.