nylig udgivelsen af den nye version af programmeringssproget «Go 1.19» blev annonceret, en version, der forbedrer i forhold til den tidligere udgivelse ved at tilføje forskellige forbedringer og frem for alt fejlrettelser.Af de nyheder, som vi kan fremhæve, er blandt andet forbedringerne i hukommelseshåndtering, sikkerhedsforbedringer.
For dem, der er nye til Go, skal du vide, at dette er et programmeringssprog, der er udviklet med deltagelse af fællesskabet som en hybridløsning, der kombinerer den høje ydeevne af kompilerede sprog med fordele som scriptsprog som f.eks. det er nemt at skrive kode, udvikling og fejlbeskyttelse.
Syntaksen for Go er baseret på de sædvanlige elementer i C-sproget. med nogle lån fra Python-sproget. Sproget er ret kortfattet, men koden er let at læse og forstå.
Go-koden er kompileret i separate binære eksekverbare filer der kører native, uden at bruge en virtuel maskine (profilering, fejlfinding og andre runtime fejlfindingsundersystemer er indbygget som runtime-komponenter).
Vigtigste nye funktioner i Go 1.19
I denne nye version af Go 1.19, der præsenteres, fremhæves det Der er arbejdet på at forfine understøttelsen af funktioner og generiske typer tilføjet i den seneste version, ved hjælp af hvilken udvikleren kan definere og bruge funktioner designet til at arbejde med flere typer på én gang, plus ydeevneoptimering af nogle programmer ved hjælp af generiske stoffer er blevet øget med 20%.
En anden ændring, der skiller sig ud fra den nye version, er den tilføjet understøttelse af links, lister og enklere syntaks at definere overskrifter i dokumentkommentarer. Gofmt-værktøjet giver formatering med de avancerede funktioner i kommentarer i tankerne med API-dokumentationen.
Udover det revideret Go-hukommelsesmodel til at tilpasse sig C, C++, Java, JavaScript, Rust og Swift som ikke tillader sekventielt konsistente atomværdier. Nye typer som atomic.Int64 og atomic.Pointer[T] er blevet introduceret i sync/atomic-pakken for at gøre det nemmere at bruge atomværdier.
På den anden side nævnes det også garbage collector har nu mulighed for at definere bløde grænser, som håndhæves ved at begrænse størrelsen af heapen og returnere hukommelsen til systemet mere aggressivt, det vil sige, at forbruget ikke garanteres at være inden for de specificerede grænser under alle forhold. Bløde grænser kan være nyttige til at optimere programmer, der kører i faste hukommelsesbeholdere.
Det fremhæves også, at på Unix-systemer aktiveres yderligere filbeskrivelser automatisk (forøgelse af RLIMIT_NOFILE-grænsen), for at fremskynde store ændringsudtryk på x86-64- og ARM64-systemer, bruges jump-tabeller, som gør det muligt at behandle store ændringsudtryk op til 20 % hurtigere.
På riscv64-systemer blev videregivelse af funktionsargumenter via CPU-registre implementeret, hvilket muliggjorde en ydelsesforøgelse på omkring 10%.
Af de andre ændringer der skiller sig ud fra denne nye version:
- Adskillige ydelsesoptimeringer er blevet implementeret.
- Tilføjet understøttelse for dynamisk indstilling af den rutinemæssige stakstørrelse for at reducere størrelsen af de kopierede data
- Tilføjet eksperimentel understøttelse af Linux-miljøer på systemer med Loongson-processorer baseret på 64-bit LoongArch-arkitekturen (GOARCH=loong64).
- Ændring af hukommelsesmodellen påvirkede ikke kompatibiliteten med tidligere skrevet kode.
- Tilføjet en ny "unix" byggebegrænsning, der kan bruges i "go:build"-linjer til at filtrere Unix-lignende systemer fra (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris ).
- For at forbedre sikkerheden ignorerer os/exec-modulet nu relative stier, når PATH-miljøvariablen udvides (for eksempel, når stien til en eksekverbar fil bestemmes, kontrolleres den aktuelle mappe ikke længere).
Endelig, hvis du er interesseret i at lære mere om denne nye udgivelse, kan du tjekke detaljerne på følgende link.