nemrég bejelentették a «Go 1.19» programozási nyelv új verziójának kiadását, az előző kiadáshoz képest különböző fejlesztésekkel, és mindenekelőtt hibajavításokkal javító változat Az újdonságok közül kiemelhetjük többek között a memóriakezelés fejlesztését, a biztonsági fejlesztéseket.
Azok számára, akik most ismerkednek a Go-val, tudniuk kell, hogy ez egy olyan programozási nyelv, amelyet a közösség részvételével fejlesztettek ki hibrid megoldásként, amely egyesíti a lefordított nyelvek nagy teljesítményét olyan előnyökkel, mint például a szkriptnyelvek, mint pl. a kódírás egyszerűsége, fejlesztés és hibavédelem.
A Go szintaxisa a C nyelv szokásos elemein alapul. néhány kölcsön a Python nyelvből. A nyelvezet meglehetősen szűkszavú, de a kód könnyen olvasható és érthető.
A Go kód külön bináris futtatható fájlokba van fordítva amelyek natív módon futnak, virtuális gép használata nélkül (a profilozási, hibakeresési és egyéb futásidejű hibaelhárítási alrendszerek futásidejű összetevőként vannak beépítve).
A Go 1.19 fő újdonságai
A Go 1.19 bemutatott új verziójában kiemelték, hogy munkát végeztek a funkciók és általános típusok támogatásának finomításán a legfrissebb verzióval egészült ki, melynek segítségével a fejlesztő egyszerre több típussal való működésre tervezett függvényeket definiálhat és használhat, emellett 20%-kal nőtt egyes programok generikus felhasználásával történő teljesítményoptimalizálása.
Egy másik változás, amely kiemelkedik az új verzióból, az az hozzáadva a hivatkozások, listák és az egyszerűbb szintaxis támogatását fejlécek meghatározásához a dokumentum megjegyzéseiben. A gofmt segédprogram formázást biztosít a megjegyzések speciális funkcióinak szem előtt tartásával, az API dokumentációval.
Amellett átdolgozott Go memóriamodell, hogy igazodjon a C, C++, Java, JavaScript, Rust és Swift szabványokhoz amelyek nem fogadnak el szekvenciálisan konzisztens atomi értékeket. Új típusok, mint például az atomic.Int64 és az atomic.Pointer[T] kerültek be a sync/atomic csomagba, hogy megkönnyítsék az atomi értékek használatát.
Másrészt azt is megemlítik A szemétgyűjtő most már képes lágy határértékeket meghatározni, amelyeket a kupac méretének korlátozásával és a memória agresszívabb visszajuttatásával kényszerítenek ki, vagyis a fogyasztás nem minden körülmények között garantáltan a megadott határok között lesz. A lágy korlátok hasznosak lehetnek a rögzített memóriatárolókban futó programok optimalizálásához.
Azt is kiemelik Unix rendszereken a további fájlleírók automatikusan engedélyezve vannak (az RLIMIT_NOFILE korlát növelésével) az x86-64 és ARM64 rendszereken a nagy változási kifejezések felgyorsítására ugrótáblákat használnak, amelyek lehetővé teszik a nagy változási kifejezések akár 20%-kal gyorsabb feldolgozását.
A riscv64 rendszereken a függvényargumentumok CPU-regisztereken keresztül történő átadása valósult meg, ami körülbelül 10%-os teljesítménynövekedést tett lehetővé.
A többi változás közül amelyek kiemelkednek ebből az új verzióból:
- Számos teljesítményoptimalizálást hajtottak végre.
- Hozzáadott támogatás a rutin verem méretének dinamikus beállításához a másolt adatok méretének csökkentése érdekében
- Kísérleti támogatás hozzáadva a Linux környezetekhez a 64 bites LoongArch architektúrán (GOARCH=loong64) alapuló Loongson processzorokkal rendelkező rendszereken.
- A memóriamodell megváltoztatása nem befolyásolta a korábban megírt kóddal való kompatibilitást.
- Új "unix" összeállítási korlátozás került hozzáadásra, amely a "go:build" sorokban használható a Unix-szerű rendszerek (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris) kiszűrésére ).
- A biztonság javítása érdekében az os/exec modul figyelmen kívül hagyja a relatív elérési utakat a PATH környezeti változó kiterjesztésekor (például egy végrehajtható fájl elérési útjának meghatározásakor az aktuális könyvtárat már nem ellenőrzi).
Végül, ha többet szeretne megtudni erről az új kiadásról, a részleteket itt tekintheti meg a következő link.