Megérkezett a Zig 0.17: Teljesen megújult buildrendszerrel

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Zig, az általános célú rendszerszintű programozási nyelv most adta ki a 0.17-es verziót. Az új kiadás jelentősen fejleszti az ELF linkert és a buildrendszert, és bővíti az inkrementális fordítás támogatását x86_64 Linux projektekhez.

A legnagyobb előrelépés az új ELF linkerhez kapcsolódik. Ezt az előző kiadásban mutatták be, mostanra pedig teljes x86_64 és SPARC64 támogatást kapott, és részben támogatja a LoongArch architektúrát is.

Az új linker már tud statikus és megosztott (shared) könyvtárakat generálni, kezeli a GNU szimbólumverziózást, a DWARF hibakeresési információkat, a GOT generálást, a copy relocationöket, a szimbólum hash táblákat, a tetszőleges szekcióigazítást és sok más, valódi Linux szoftverekhez szükséges elemet.

Még nem ez az alapértelmezett linker, mert funkciókban nem éri el teljesen a Zig régebbi ELF megvalósítását. A fejlesztők szerint azonban már most is le tud fordítani a legtöbb x86_64 Linuxot célzó Zig projektet. A cél, hogy a következő kiadásban végleg kivezessék a régi ELF linkert.

Ez a fejlődés közvetlenül hat az inkrementális fordításra is. A Zig 0.17 sokat javít ezen a funkción: a projekteknek már nem kell mindent újrafordítaniuk, elég csak a forráskód-változások által érintett részeket.

A legtöbb x86_64 Linux projekt esetében az inkrementális fordítás már együtt használható a Zig watch móddal. A buildrendszer így automatikusan érzékeli a kód módosításait, és szinte azonnal elindítja az inkrementális újrafordítást.

Jelentős munka folyt a Zig buildrendszerén is. A konfigurációs fázis és a build gráfot végrehajtó rész mostantól külön folyamatként fut. A gyorsítótárazást is átdolgozták: a Zig most bináris cache formátumot használ, ami körülbelül 25%-kal kisebb, és a tesztek szerint a cache találatok 5–10%-kal gyorsabbak.

Ezzel együtt érkezik az új Build Server Protocol is. Ezt azért tervezték, hogy a külső eszközök, például IDE-k hozzáférjenek a build gráfhoz, a build lépésekhez, opciókhoz, függőségekhez, generált fájlokhoz és a build állapotához.

Rövid távon van egy hátrány: az architekturális változtatások jelenleg néhány funkciót megtörnek a ZLS-ben, a Zig Language Serverben. A Zig és a ZLS csapat együtt dolgozik azon, hogy kibővítse az új protokollt, így a nyelvi szerver visszakaphassa, majd idővel túl is szárnyalja a korábbi integrációját.

Számos nyelvi szintű változás is érkezett. Többek között módosult az @bitCast viselkedése, az elavult tömbszorzás szintaxist eltávolították az @splat javára, és több régi vagy elavult nyelvi elemet is kivezettek.

Fontos változás a C interoperabilitást is érinti. A Zig 0.16-ban elavulttá nyilvánított @cImportot most eltávolították. A C–Zig fordítás egy hivatalos, külső translate-c csomagba költözik, amelyet a Zig Software Foundation tart karban. Így ez a komponens függetlenül fejlődhet a fő Zig fordítótól.

A platformtámogatás terén a kiadás loongarch32-linux célplatformokat ad hozzá, általánosan használható 64 bites SPARC támogatást hoz, nagyon korai xtensa-linux támogatást vezet be, és javítja a támogatást OpenBSD, FreeBSD, NetBSD, ARM, AArch64 és több kevésbé elterjedt architektúra esetén.

A motorháztető alatt a Zig 0.17 az LLVM-alapú toolchainjét LLVM és Clang 22.1.8 verzióra frissíti. Keresztfordításhoz mostantól elérhető a glibc 2.44. A kiadás a Linux kernel 7.2 fejléceit is tartalmazza. A Zig továbbra is a musl 1.2.5-öt szállítja, visszaportolt biztonsági és hordozhatósági javításokkal.

Összehasonlításképp: a Zig standard könyvtárához minimálisan támogatott Linux verzió továbbra is a Linux 5.10.

A fő újdonságokon túl teljesen újraírták a SPIR-V linkert, amely most már képes inkrementális fordításra és külső SPIR-V objektumfájlok linkelésére. A SPIR-V fordító backend több szálon fut. Emellett folytatódik a kezdeti munka a saját LoongArch és AArch64 fordító backenden.

A Zig 0.17 összes újdonságáról további részletek olvashatók a projekt hivatalos kiadási jegyzeteiben.