
Go-projektet har släppt version 1.25 av sitt programmeringsspråk, och uppdateringen är full av förbättringar inom både verktyg, kompilator, runtime och standardbibliotek. Som vanligt kommer versionen precis sex månader efter föregångaren, men den här gången introduceras flera spännande nyheter – inklusive två större experimentella funktioner.
Ny experimentell Garbage Collector
En av de mest intressanta nyheterna är en ny garbage collector som är optimerad för att hantera många små objekt mer effektivt. Tester visar att den kan minska minneshanteringskostnaden med 10–40 % i praktiska scenarier. Den är inte aktiverad som standard – utvecklare behöver slå på den själva och kan sedan lämna feedback till Go-teamet.
Snabbare och mer flexibel JSON-hantering
Den andra stora experimentella nyheten är paketet encoding/json/v2. Det är en uppdaterad JSON-implementation som lovar snabbare avkodning och fler konfigurationsmöjligheter. Även den här funktionen kräver att man aktivt väljer att använda den.
Automatisk optimering i container-miljöer
Go 1.25 gör att GOMAXPROCS nu automatiskt anpassar sig efter tillgängliga CPU-resurser i miljöer som Kubernetes. Tidigare krävdes manuell konfigurering för att uppnå detta.
Förbättringar i kompilatorn
- Snabbare allokering av slices.
- DWARF5-debuginformation, vilket minskar storleken på binärer och påskyndar länkning, särskilt i större projekt.
Förbättrade utvecklingsverktyg
- Nya
go vet
-kontroller som fångar upp vanliga programmeringsfel. - Möjlighet att ignorera mappar direkt i
go.mod
. go doc
kan nu köra en lokal dokumentationsserver med flaggan-http
.- Ett helt nytt paket –
testing/synctest
– gör det lättare att testa parallell kod utan risk för klassiska race condition-problem.
Standardbiblioteket och säkerhet
- Förbättrad prestanda i kryptografiska algoritmer.
- Mer konsekvent hantering av ASN.1-data.
- Nya funktioner för nätverks- och TLS-anslutningar.
Plattformsförändringar
- Äldre versioner av macOS stöds inte längre.
- Go 1.25 är den sista versionen med stöd för 32-bitars Windows/ARM, som nu tas ur bruk.
Tillgänglighet
Go 1.25 kan laddas ned som färdiga binärfiler och installationspaket från den officiella nedladdningssidan. En fullständig lista över alla ändringar finns i Go 1.25 Release Notes, och fler blogginlägg från utvecklingsteamet väntas de närmaste veckorna.
Exempel i språket go
Ett enkelt program som skriver Hello, World! i terminalen:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Förklaring:
package main
– anger att programmet är ett körbart program.import "fmt"
– tar in paketetfmt
för utskrift.func main()
– huvudfunktionen som körs först.fmt.Println(...)
– skriver ut text med radbrytning.
Kör programmet:
go run hello.go
Kompilera till en binärfil:
go build -o hello hello.go
./hello
Faktaruta: programmeringsspråket Go
Översikt
Go (även kallat Golang
) är ett kompilerat, statiskt typat språk från Google med inbyggd
stöd för samtidighet (goroutines och kanaler), snabb kompilering och enkel distribution
som fristående binärer.
Vad språket klarar
- Högpresterande nätverks- och serverprogram med låg latens.
- Massiv samtidighet via
goroutines
ochchan
utan trådbekymmer. - Snabb kompilering till statiska, portabla binärer (lätt att containerisera).
- Inbyggd minnessäkerhet och garbage collection.
- Stort standardbibliotek: nätverk, HTTP, kryptografi, testning m.m.
- Förstklassiga verktyg:
go build
,go test
,go fmt
,go vet
, moduler.
Vanliga användningsområden
- Moln- och mikrotjänster, REST/GraphQL-API:er.
- Distribuerade system, nätverksservrar, proxyer och gateways.
- DevOps- och plattformsverktyg (t.ex. Docker, delar av Kubernetes-ekosystemet).
- Kommandoradsverktyg och automation.
- Data- och meddelandeflöden (streaming), observability/telemetri.
Kort historik
- Startat på Google av Robert Griesemer, Rob Pike och Ken Thompson.
- Offentligt presenterat 2009; version
1.0
släpptes 2012. - Designmål: enkelhet, snabbhet, effektiv samtidighet och stark verktygskedja.
Styrkor & saker att känna till
- Styrkor: enkel syntax, snabb kompilering, robust standardbibliotek, utmärkt samtidighetsmodell.
- Observera: minimalistisk generik (finns), inga undantag (errors hanteras explicit), mindre fokus på OOP-arv; GUI och mycket tunga numeriska arbetsflöden görs ofta i andra ekosystem.
Exempel (körbar binär i en fil): go build -o app .