{"id":121950,"date":"2025-02-15T14:22:29","date_gmt":"2025-02-15T12:22:29","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/go-1-24"},"modified":"2025-02-15T14:22:29","modified_gmt":"2025-02-15T12:22:29","slug":"go-1-24","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/news\/go-1-24","title":{"rendered":"Go 1.24","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><a rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/images\/21754\/original.png\" itemprop=\"contentURL\">            <img decoding=\"async\" alt=\"Go 1.24\" src=\"\/wp-content\/uploads\/2025\/02\/6d6299421d83951d055782658814425f.jpg\" style=\"display:block;margin: 0 auto;\" \/>                   <\/a>                       <noindex>      <noindex><\/p>\n<p>Den nya versionen av Go-spr\u00e5ket, version 1.24, sl\u00e4pps sex m\u00e5nader efter <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. De flesta \u00e4ndringarna handlar om implementeringen av verktygskedjan, runtime och bibliotek. Som alltid ger versionen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">l\u00f6ftet om kompatibilitet<\/a> Go 1. Utvecklarna av spr\u00e5ket f\u00f6rv\u00e4ntar sig att n\u00e4stan alla Go-program fortfarande kommer att kompilera och fungera som tidigare.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>\u00c4ndringar i spr\u00e5ket<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 st\u00f6der nu helt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">generiska typalias<\/a>: ett typalias kan parametriseras som en deklarerad typ. Mer information finns i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">spr\u00e5kets specifikation<\/a>. F\u00f6r tillf\u00e4llet kan m\u00f6jligheten inaktiveras genom att st\u00e4lla in GOEXPERIMENT=noaliastypeparams; dock kommer alternativet aliastypeparams att tas bort i Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>Verktyg<\/h2>\n<h3>Go-kommandot<\/h3>\n<p> <noindex><\/p>\n<p>Go-moduler kan nu sp\u00e5ra k\u00f6rbara beroenden med hj\u00e4lp av verktygsdirektivet i go.mod. Detta tar bort behovet av den tidigare tillf\u00e4lliga l\u00f6sningen att l\u00e4gga till verktyg som tomma importer i filen, vanligtvis kallad \"tools.go\". Go-verktyget kan nu k\u00f6ra dessa verktyg ut\u00f6ver de verktyg som f\u00f6ljer med Go. Mer information kan ses i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">dokumentationen<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Den nya flaggan -tool f\u00f6r go get leder till att verktygsdirektivet l\u00e4ggs till i den aktuella modulen f\u00f6r de angivna paketen, ut\u00f6ver att l\u00e4gga till kravsdirektiv.<\/p>\n<p> <noindex><\/p>\n<p>Ny <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">metam\u00f6nster tool<\/a> refererar till alla verktyg i den aktuella modulen. Detta kan anv\u00e4ndas f\u00f6r att uppdatera dem alla via go get tool eller f\u00f6r att installera dem i din GOBIN-katalog via go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>K\u00f6rbara filer som skapats via go run och det nya beteendet hos go tool cachas nu i Go:s byggcache. Detta g\u00f6r upprepade k\u00f6rningar snabbare genom att \u00f6ka cache-storleken. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Kommandona go build och go install accepterar nu flaggan -json, som rapporterar utdata och byggfel som strukturerad JSON utdata till standardutg\u00e5ngen. Detaljer om formatet kan ses i go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Dessutom rapporterar go test -json nu utdata och byggfel i JSON, tillsammans med testresultat i JSON. De kan s\u00e4rskiljas med nya action-typer, men om de skapar problem i testsystemets integration kan man \u00e5terg\u00e5 till textutdata f\u00f6r byggandet via <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">inst\u00e4llningen GODEBUG<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>Den nya milj\u00f6variabeln GOAUTH ger ett flexibelt s\u00e4tt att autentisera privata modulh\u00e4mtningar. Mer information kan ses i go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>Go build-kommandot installerar nu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">versionen av huvudmodulen<\/a> i den kompilerade bin\u00e4ren, baserat p\u00e5 taggen och\/eller commit:en i versionskontrollsystemet. Suffixet +dirty l\u00e4ggs till om det finns osparade \u00e4ndringar. Du kan anv\u00e4nda flaggan -buildvcs=false f\u00f6r att hoppa \u00f6ver versionskontrollinformation fr\u00e5n bin\u00e4ren.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ny <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">konfiguration av GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> kan nu anv\u00e4ndas f\u00f6r att sp\u00e5ra processen f\u00f6r val av toolchain i go-kommandot.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo st\u00f6der nya annotationer f\u00f6r C-funktioner f\u00f6r att f\u00f6rb\u00e4ttra prestandan under k\u00f6rning. #cgo noescape cFunctionName s\u00e4ger till kompileraren att det minne som skickas till C-funktionen cFunctionName inte kan undkomma. #cgo nocallback cFunctionName signalerar kompileraren att C-funktionen cFunctionName inte anropar n\u00e5gra Go-funktioner. Mer information kan ses i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">cgo-dokumentationen<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo v\u00e4grar f\u00f6r n\u00e4rvarande att kompilera anrop till C-funktioner som har flera of\u00f6renliga deklarationer. Till exempel, om f deklareras som b\u00e5de void f(int) och void f(double), kommer cgo att rapportera ett fel ist\u00e4llet f\u00f6r att eventuellt generera en felaktig anropssekvens f(0). Nytt i denna version \u00e4r f\u00f6rb\u00e4ttrad uppt\u00e4cktsf\u00f6rm\u00e5ga av detta felvillkor n\u00e4r of\u00f6renliga deklarationer f\u00f6rekommer i olika filer. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>Verktyget objdump st\u00f6der nu avkodning f\u00f6r 64-bitars LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) och S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>Den nya analysatorn tests rapporterar vanliga fel i testdeklarationer, fuzzers, benchmarks och exempel i testpaket, s\u00e5som felaktigt formade namn, ogiltiga signaturer eller exempel som dokumenterar icke-existerande identiteter. N\u00e5gra av dessa fel kan resultera i att tester inte k\u00f6rs.<\/p>\n<p> <noindex><\/p>\n<p>Den befintliga printf-analysatorn rapporterar nu diagnoser f\u00f6r anrop av formen fmt.Printf(s), d\u00e4r s \u00e4r en icke-konstant formatstr\u00e4ng, utan andra argument. S\u00e5dana anrop \u00e4r n\u00e4stan alltid felaktiga, eftersom v\u00e4rdet s kan inneh\u00e5lla tecknet %; anv\u00e4nd ist\u00e4llet fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. Denna kontroll tenderar att g\u00f6ra fynd i befintlig kod och till\u00e4mpas d\u00e4rf\u00f6r endast n\u00e4r versionsspr\u00e5ket (som anges av direktivet go-filen go.mod eller kommentarer `\/\/go:build) \u00e4r \u00e5tminstone Go 1.24, f\u00f6r att undvika att skapa avbrott i kontinuerlig integration n\u00e4r du uppdaterar till Go 1.24-toolchain.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Den befintliga buildtag-analysatorn rapporterar nu diagnostik n\u00e4r det finns en felaktig <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">versionsbegr\u00e4nsning f\u00f6r byggande<\/a> Go i direktivet \/\/go:build. Till exempel, \/\/go:build go1.23.1 h\u00e4nvisar till en punktrelease; ist\u00e4llet anv\u00e4nd \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Den befintliga copylock-analysatorn rapporterar nu diagnostik n\u00e4r en variabel som deklarerats i en tredubbel 'for'-loop, som for i := iter(); done(i); i = next(i) { \u2026 }, inneh\u00e5ller sync.Locker, som sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> \u00e4ndrade beteendet hos s\u00e5dana loopar till att skapa en ny variabel f\u00f6r varje iteration, kopiera v\u00e4rden fr\u00e5n f\u00f6reg\u00e5ende iteration; denna kopiering \u00e4r os\u00e4ker f\u00f6r l\u00e5s. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/66387\">#66387<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>GOCACHEPROG<\/h3>\n<p> <noindex><\/p>\n<p>Det interna bin\u00e4ra cmd\/go och testcache-mekanismen kan nu implementeras av barnprocesser som implementerar JSON-protokollet mellan cmd\/go-verktyget och en barnprocess som kallas av milj\u00f6variabeln GOCACHEPROG. Tidigare var det GOEXPERIMENT. Protokolldetaljer kan ses i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">dokumentationen<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>K\u00f6rningstid<\/h2>\n<p> <noindex><\/p>\n<p>Flera prestandaf\u00f6rb\u00e4ttringar i k\u00f6rrutinen har minskat CPU-\u00f6verhead med 2-3 % i genomsnitt bland ett representativt urval av benchmark-tester. Resultaten kan variera beroende p\u00e5 applikationen. Dessa f\u00f6rb\u00e4ttringar inkluderar en ny inbyggd implementation av map baserad p\u00e5 <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">Svenska tabeller<\/a>, effektivare minnesallokering av sm\u00e5 objekt och en ny inbyggd runtime-implementation av mutex.<\/p>\n<p><\/noindex> <\/p>\n<p>Den nya inbyggda map-implementationen och den nya inbyggda runtime-mutexen kan st\u00e4ngas av med inst\u00e4llningarna GOEXPERIMENT=noswissmap och GOEXPERIMENT=nospinbitmutex vid bygget respektive.<\/p>\n<h2>Kompilatorn<\/h2>\n<p>Kompilatorn har redan f\u00f6rbjudit att definiera nya metoder med mottagartyper som har genererats av cgo, men det har varit m\u00f6jligt att kringg\u00e5 denna begr\u00e4nsning genom att anv\u00e4nda typalias. Go 1.24 rapporterar nu alltid ett fel om mottagaren refererar till en genererad cgo-typ, direkt eller indirekt (genom typalias).<\/p>\n<h2>L\u00e4nkaren<\/h2>\n<p>L\u00e4nkaren genererar nu en GNU byggidentifierare (ELF NT_GNU_BUILD_ID-post) p\u00e5 ELF-plattformar och UUID (Mach-O LC_UUID-laddningskommando) p\u00e5 macOS som standard. Byggidentifieraren eller UUID:en genereras fr\u00e5n byggidentifieraren i Go. Detta kan st\u00e4ngas av med l\u00e4nkexception flaggan -B none, eller \u00e5sidos\u00e4ttas med flaggan -B 0xNNNN med ett angivet anv\u00e4ndardefinierat hexav\u00e4rde.<\/p>\n<h2>Rullning<\/h2>\n<p> <noindex><\/p>\n<p>Som anges i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">versionsnoterna f\u00f6r Go 1.22<\/a>, Go 1.24 kr\u00e4ver nu Go 1.22.6 eller senare f\u00f6r att kunna k\u00f6ras. Utvecklarna f\u00f6rv\u00e4ntar sig att Go 1.26 kommer att kr\u00e4va en punktversion av Go 1.24 eller senare.<\/p>\n<p><\/noindex> <\/p>\n<h2>Standardbiblioteket<\/h2>\n<h3>Begr\u00e4nsad katalog\u00e5tkomst till filsystemet<\/h3>\n<p> <noindex><\/p>\n<p>Ny typ <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> ger m\u00f6jlighet att utf\u00f6ra filsystemoperationer inom en viss katalog.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Funktionen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> \u00f6ppnar katalogen och returnerar <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Metoder p\u00e5 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> fungerar inom denna katalog och till\u00e5ter inte s\u00f6kv\u00e4gar att referera till platser utanf\u00f6r katalogen, inklusive de som f\u00f6ljer symboliska l\u00e4nkar utanf\u00f6r katalogen. Metoder p\u00e5 os.Root speglar flertalet filsystemoperationer tillg\u00e4ngliga i paketet os, inklusive till exempel <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Open\">os.Root.Open<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Create\">os.Root.Create<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Mkdir\">os.Root.Mkdir<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Ny benchmark-funktion<\/h3>\n<p> <noindex><\/p>\n<p>Benchmarks kan nu anv\u00e4nda en snabbare och mindre felben\u00e4gen metod <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> f\u00f6r att utf\u00f6ra iterationer av benchmark som for b.Loop() { \u2026 } ist\u00e4llet f\u00f6r typiska loopstrukturer som involverar b.N som for range b.N. Detta erbjuder tv\u00e5 betydande f\u00f6rdelar:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Benchmark-funktionen k\u00f6rs exakt en g\u00e5ng f\u00f6r varje -count, s\u00e5 kostsamma installations- och st\u00e4dfaser k\u00f6rs endast en g\u00e5ng.<\/li>\n<li>Funktionsanropsparametrar och resultat forts\u00e4tter att existera, vilket f\u00f6rhindrar kompilatorn fr\u00e5n att optimera bort kroppens cykel helt.<\/li>\n<\/ul>\n<h3>F\u00f6rb\u00e4ttrade st\u00e4dare<\/h3>\n<p> <noindex><\/p>\n<p>Ny funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> \u00e4r en st\u00e4dmekanism som \u00e4r mer flexibel, mer effektiv och mindre ben\u00e4gen f\u00f6r fel \u00e4n <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup kopplar en st\u00e4dfunktion till ett objekt, som kommer att k\u00f6ras s\u00e5 snart objektet blir otillg\u00e4ngligt. Men till skillnad fr\u00e5n SetFinalizer kan flera st\u00e4dningar kopplas till ett objekt, st\u00e4dningar kan kopplas till interna pekare, st\u00e4dningar orsakar vanligtvis inte minnesl\u00e4ckor n\u00e4r objekt bildar cykler, och st\u00e4dningar f\u00f6rdr\u00f6jer inte frig\u00f6randet av objektet eller objekt som det pekar p\u00e5. Ny kod b\u00f6r f\u00f6redra AddCleanup framf\u00f6r SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nytt paket weak<\/h3>\n<p> <noindex><\/p>\n<p>Det nya paketet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> tillhandah\u00e5ller svaga pekare.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Svaga pekare \u00e4r en l\u00e5g niv\u00e5 primitiv som tillhandah\u00e5lls f\u00f6r att skapa strukturer som effektivt utnyttjar minnet, s\u00e5som svaga ordb\u00f6cker f\u00f6r att mappa v\u00e4rden, normaliseringsordb\u00f6cker f\u00f6r vad som helst som inte t\u00e4cks av paketet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, och olika typer av cache. F\u00f6r att st\u00f6dja dessa anv\u00e4ndningsfall ger denna release \u00e4ven <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Ett nytt paket crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Det nya paketet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> implementerar ML-KEM-768 och ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM \u00e4r en post-kvantnyckelutbytesmekanism, tidigare k\u00e4nd som Kyber och specificerad i <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nya paket crypto\/hkdf, crypto\/pbkdf2 och crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Det nya paketet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implementerar en HMAC-baserad nyckelutg\u00e5ngsfunktion \u201cExtract-and-Expand\u201d HKDF, som definieras i <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Det nya paketet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implementerar en l\u00f6senordsbaserad nyckelutg\u00e5ngsfunktion PBKDF2, som definieras i <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Det nya paketet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implementerar hashfunktionen SHA-3 samt SHAKE och cSHAKE funktioner f\u00f6r utvidgad utg\u00e5ng, som definieras i <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Alla tre paketen \u00e4r baserade p\u00e5 tidigare existerande paket fr\u00e5n golang.org\/x\/crypto\/....<\/p>\n<h3>Compliance FIPS 140-3<\/h3>\n<p> <noindex><\/p>\n<p>Denna release inkluderar <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">ett nytt upps\u00e4ttning mekanismer f\u00f6r att s\u00e4kerst\u00e4lla compliance med FIPS 140-3<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Go:s kryptografiska modul best\u00e5r av ett upps\u00e4ttning interna paket fr\u00e5n standardbiblioteket, som transparent anv\u00e4nds f\u00f6r att implementera godk\u00e4nda FIPS 140-3 algoritmer. Applikationer kr\u00e4ver inga \u00e4ndringar f\u00f6r att anv\u00e4nda Go:s kryptografiska modul f\u00f6r godk\u00e4nda algoritmer.<\/p>\n<p> <noindex><\/p>\n<p>Den nya milj\u00f6variabeln GOFIPS140 kan anv\u00e4ndas f\u00f6r att v\u00e4lja version av Go:s kryptografiska modul f\u00f6r anv\u00e4ndning i bygget. Den nya <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">konfiguration av GODEBUG<\/a> fips140 kan anv\u00e4ndas f\u00f6r att aktivera FIPS 140-3-l\u00e4get under k\u00f6rning.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 inkluderar kryptografiska moduler Go version v1.0.0, som f\u00f6r n\u00e4rvarande testas med ett ackrediterat CMVP-laboratorium.<\/p>\n<h3>Ett nytt experimentellt paket testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Ett nytt experimentellt paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> ger st\u00f6d f\u00f6r testning av konkurrentkod.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funktionen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> startar en grupp gorutiner i en isolerad \"bubbla\". I bubblan fungerar paketets funktioner <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">time<\/a> p\u00e5 falska klockor.<\/li>\n<li>Funktioner <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> v\u00e4ntar p\u00e5 att alla gorutiner ska blockeras i den aktuella bubblan.<\/li>\n<\/ul>\n<p>Detaljer kan ses i paketets dokumentation.<\/p>\n<p> <noindex><\/p>\n<p>Paketet synctest \u00e4r experimentellt och m\u00e5ste aktiveras genom att st\u00e4lla in GOEXPERIMENT=synctest. API:t f\u00f6r paketet kan \u00e4ndras i framtida versioner. I <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> kan man se fler detaljer och ge feedback.<\/p>\n<p><\/noindex> <\/p>\n<h3>Mindre \u00e4ndringar i biblioteket<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implementationer (*Writer.AddFS) i archive\/zip och archive\/tar skriver nu en katalogrubrik f\u00f6r en tom katalog.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> l\u00e4gger till flera funktioner som arbetar med iteratorer:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> returnerar en iterator \u00f6ver rader som delats med en ny rad i en byte-skiva.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> returnerar en iterator \u00f6ver alla delsekvenser av en byte-slice, uppdelad av en separator.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> returnerar en iterator \u00f6ver delsekvenser av en byte-slice, uppdelad efter varje f\u00f6rekomst av separatorn.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> returnerar en iterator \u00f6ver delsekvenser av en byte-slice omkring sekvenser av mellanslagstecken, definierat som <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unicode#IsSpace\">unicode.IsSpace<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsFuncSeq\">FieldsFuncSeq<\/a> returnerar en iterator \u00f6ver delsekvenser av en byte-slice omkring sekvenser av Unicode-kodpunkter som uppfyller predikatet.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>V\u00e4rdet som returneras <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> implementerar inte l\u00e4ngre metoderna NewCTR, NewGCM, NewCBCEncrypter och NewCBCDecrypter. Dessa metoder var icke-dokumenterade och var inte tillg\u00e4ngliga p\u00e5 alla arkitekturer. Nu ska v\u00e4rdet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> passeras direkt till de motsvarande funktionerna <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. F\u00f6r n\u00e4rvarande kontrollerar crypto\/cipher fortfarande dessa metoder p\u00e5 Block-v\u00e4rden, \u00e4ven om de inte l\u00e4ngre st\u00f6ds av standardbiblioteket.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Ny funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> \u00e5terv\u00e4nder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, som implementerar AES-GCM, genererar en slumpm\u00e4ssig eng\u00e5ngsnummen under Seal och l\u00e4gger till den i b\u00f6rjan av den krypterade texten.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implementering <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, som returneras <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> n\u00e4r den anv\u00e4nds med <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> \u00e4r nu flera g\u00e5nger snabbare p\u00e5 amd64 och arm64.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewOFB\">NewOFB<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBEncrypter\">NewCFBEncrypter<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> \u00e4r nu f\u00f6rklarade som f\u00f6r\u00e5ldrade. OFB- och CFB-l\u00e4gena \u00e4r icke-autentiska vilket generellt till\u00e5ter aktiva attacker att manipulera och \u00e5terst\u00e4lla klartext. Applikationer rekommenderas att anv\u00e4nda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> ist\u00e4llet. Om ett icke-autentiserat l\u00e4ge <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> \u00e4r n\u00f6dv\u00e4ndigt, kan man anv\u00e4nda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> ist\u00e4llet.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa\/\">crypto\/ecdsa<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa#PrivateKey.Sign\">PrivateKey.Sign<\/a> skapar nu en deterministisk signatur enligt <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, om randomiseringsk\u00e4llan \u00e4r nil.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/md5\/\">crypto\/md5<\/a><\/h4>\n<p> <noindex><\/p>\n<p>V\u00e4rdet som returneras <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand\/\">crypto\/rand<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Funktionen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">Read<\/a> garanterar nu fr\u00e5nvaro av misslyckanden. Om Read st\u00f6ter p\u00e5 ett fel under l\u00e4sning <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, kommer programmet att avslutas of\u00f6r\u00e4nderligt. Observera att standard Reader \u00e4r dokumenterad att alltid fungera korrekt, s\u00e5 denna f\u00f6r\u00e4ndring b\u00f6r bara p\u00e5verka de program som \u00f6verskrider Reader-variabeln. Ett undantag \u00e4r Linux-k\u00e4rnor f\u00f6re version 3.17, d\u00e4r standard Reader fortfarande \u00f6ppnar \/dev\/urandom och kan misslyckas.<\/p>\n<p><\/noindex> <\/p>\n<p>P\u00e5 Linux 6.11 och senare anv\u00e4nder Reader nu systemanropet getrandom via vDSO. Detta \u00e4r flera g\u00e5nger snabbare, vanligtvis f\u00f6r sm\u00e5 l\u00e4sningar.<\/p>\n<p>P\u00e5 OpenBSD anv\u00e4nder Reader nu arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Ny funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> kan nu generera kryptografiskt s\u00e4kra slumpm\u00e4ssiga textstr\u00e4ngar.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa\/\">crypto\/rsa<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> returnerar nu ett fel om en nyckel p\u00e5 mindre \u00e4n 1024 bitar beg\u00e4rs. Alla metoder Sign, Verify, Encrypt och Decrypt returnerar nu ett fel om de anv\u00e4nds med en nyckel som \u00e4r mindre \u00e4n 1024 bitar. S\u00e5dana nycklar \u00e4r os\u00e4kra och b\u00f6r inte anv\u00e4ndas. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Inst\u00e4llning av GODEBUG<\/a> rsa1024min=0 \u00e5terst\u00e4ller det gamla beteendet, men Go-utvecklarna rekommenderar att detta endast g\u00f6rs om det \u00e4r absolut n\u00f6dv\u00e4ndigt och endast i tester, till exempel genom att l\u00e4gga till raden \/\/go:debug rsa1024min=0 i testfilen. Ny <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">exempel<\/a> GenerateKey tillhandah\u00e5ller en l\u00e4ttanv\u00e4nd standard 2024-bits testnyckel.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Det \u00e4r nu s\u00e4kert och mer effektivt att anropa <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> till <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute \u00e4r nu snabbare i n\u00e4rvaro av delvis fyllda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, till exempel vid extrahering av nyckeln fr\u00e5n JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Paketen avvisar nu fler ogiltiga nycklar, \u00e4ven n\u00e4r Validate inte anropas, och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> kan nu returnera nya fel f\u00f6r trasiga slumpk\u00e4llor. F\u00e4lten <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> strukturer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> anv\u00e4nds och valideras \u00e4ven n\u00e4r vissa v\u00e4rden saknas. Det har ocks\u00e5 gjorts \u00e4ndringar i crypto\/x509 f\u00f6r att analysera och extrahera RSA-nycklar, som beskrivs nedan.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> st\u00f6der nu SHA-512\/224, SHA-512\/256 och SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> anv\u00e4nder nu en n\u00e5got annan metod f\u00f6r att generera den privata exponenten (Carmichael-funktionen ist\u00e4llet f\u00f6r Eulers funktion). S\u00e4llsynta applikationer som \u00e5terskapar nycklar uteslutande fr\u00e5n primtal kan skapa olika, men kompatibla resultat.<\/p>\n<p><\/noindex> <\/p>\n<p>Operationer p\u00e5 offentliga och privata nycklar \u00e4r nu upp till tv\u00e5 g\u00e5nger snabbare p\u00e5 wasm.<\/p>\n<h3>crypto\/sha*<\/h3>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha1\/\">crypto\/sha1<\/a>: v\u00e4rdet som returneras av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha256\/\">crypto\/sha256<\/a>: v\u00e4rdena som returneras av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha512\/\">crypto\/sha512<\/a>: v\u00e4rdena som returneras av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New\">sha512.New<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New384\">sha512.New384<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_224\">sha512.New512_224<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle\/\">crypto\/subtle<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Ny funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> m\u00f6jligg\u00f6r f\u00f6r anv\u00e4ndaren att exekvera funktioner med aktiverade arkitekturspecifika funktioner som garanterar of\u00f6r\u00e4ndradhet av vissa instruktioner i f\u00f6rh\u00e5llande till tidens datav\u00e4rden. Detta kan anv\u00e4ndas f\u00f6r att s\u00e4kerst\u00e4lla att kod som \u00e4r skapad f\u00f6r att k\u00f6ra p\u00e5 konstant tid inte har optimerats av processorns niv\u00e5funktioner p\u00e5 ett s\u00e4tt som g\u00f6r att den k\u00f6rs p\u00e5 variabel tid. F\u00f6r n\u00e4rvarande anv\u00e4nder WithDataIndependentTiming biten PSTATE.DIT p\u00e5 arm64 och g\u00f6r ingenting p\u00e5 andra arkitekturer. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Inst\u00e4llning av GODEBUG<\/a> dataindependenttiming=1 aktiverar DIT-l\u00e4get f\u00f6r hela Go-programmet.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Utdata <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> m\u00e5ste \u00f6verlappa helt eller inte alls med ing\u00e5ngen. Tidigare beteende var odefinierat i annat fall, medan XORBytes nu kommer att panikera.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls\/\">crypto\/tls<\/a><\/h4>\n<p> <noindex><\/p>\n<p>TLS-servern st\u00f6der nu Encrypted Client Hello (ECH). Denna funktion kan aktiveras genom att fylla i f\u00e4ltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ny post-kvant nyckelutbytesmekanism <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> st\u00f6ds nu och \u00e4r aktiverad som standard n\u00e4r <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> \u00e4r nil. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Inst\u00e4llning av GODEBUG<\/a> tlsmlkem=0 returnerar standardv\u00e4rdet.<\/p>\n<p><\/noindex> <\/p>\n<p>St\u00f6det f\u00f6r den experimentella nyckelutbytet X25519Kyber768Draft00 har tagits bort.<\/p>\n<p> <noindex><\/p>\n<p>Nyckelutbytesordningen hanteras nu helt av paketet crypto\/tls. Ordningen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> ignoreras nu, och inneh\u00e5llet anv\u00e4nds endast f\u00f6r att avg\u00f6ra vilka nyckelutbyten som ska inkluderas n\u00e4r f\u00e4ltet \u00e4r ifyllt.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Det nya f\u00e4ltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> listar identifierarna f\u00f6r de till\u00e4gg som mottagits i Client Hello-meddelandet. Detta kan vara anv\u00e4ndbart f\u00f6r att ta fingeravtryck av TLS-klienter.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509\/\">crypto\/x509<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Inst\u00e4llning av GODEBUG<\/a> x509sha1 har tagits bort. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> st\u00f6djer inte l\u00e4ngre signaturer baserade p\u00e5 SHA-1.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> implementerar nu gr\u00e4nssnitten <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Standardf\u00e4ltet f\u00f6r certifikatpolicyer har \u00e4ndrats fr\u00e5n <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> till <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. Vid tolkning av certifikat kommer b\u00e5da f\u00e4lten att fyllas i, men vid skapande av certifikatpolicyer kommer de att h\u00e4mtas fr\u00e5n f\u00e4ltet Certificate.Policies ist\u00e4llet f\u00f6r Certificate.PolicyIdentifiers. Denna \u00e4ndring kan \u00e5terst\u00e4llas <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">med inst\u00e4llningen GODEBUG<\/a> x509usepolicies=0.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#CreateCertificate\">CreateCertificate<\/a> kommer nu att generera ett serienummer med hj\u00e4lp av en RFC 5280-kompatibel metod vid \u00f6verf\u00f6ring av mallen via f\u00e4ltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, ist\u00e4llet f\u00f6r att misslyckas.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> st\u00f6djer nu policyvalidering, som definieras i RFC 5280 och RFC 9618. Det nya f\u00e4ltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> kan st\u00e4llas in p\u00e5 en acceptabel upps\u00e4ttning policyer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Endast certifikatkedjor med giltiga policygrafar kommer att \u00e5terl\u00e4mnas fr\u00e5n <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS8PrivateKey\">MarshalPKCS8PrivateKey<\/a> returnerar nu ett fel ist\u00e4llet f\u00f6r att extrahera en felaktig RSA-nyckel. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> har inget felmeddelande och dess beteende med felaktiga nycklar som tillhandah\u00e5lls f\u00f6rblir of\u00f6ruts\u00e4gbart.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> anv\u00e4nder nu och validerar kodade CRT-v\u00e4rden, s\u00e5 de kan avvisa ogiltiga RSA-nycklar som tidigare accepterades. Anv\u00e4ndning av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-inst\u00e4llningen<\/a> x509rsacrt=0 \u00e5terg\u00e5r till omber\u00e4kning av CRT-v\u00e4rden.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\/\">debug\/elf<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> l\u00e4gger till st\u00f6d f\u00f6r hantering av versionsinformation i dynamiska ELF-filer (Executable and Linkable Format). Den nya metoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> \u00e5terl\u00e4mnar en lista \u00f6ver dynamiska versioner som definieras i ELF-filen. Den nya metoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> \u00e5terl\u00e4mnar en lista \u00f6ver dynamiska versioner som kr\u00e4vs av denna ELF-fil, som definieras i andra ELF-objekt. Till slut pekar de nya f\u00e4lten <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> till versionen av symbolen.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/\">encoding<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Tv\u00e5 nya gr\u00e4nssnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> har inf\u00f6rts f\u00f6r att l\u00e4gga till textuell eller bin\u00e4r representation av objektet till en byte-slice. Dessa gr\u00e4nssnitt erbjuder samma funktionalitet som <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, men ist\u00e4llet f\u00f6r att allokera en ny slice varje g\u00e5ng, l\u00e4gger de data direkt i den existerande slicen. Dessa gr\u00e4nssnitt \u00e4r nu implementerade av typerna i standardbiblioteket som redan implementerar TextMarshaler och\/eller BinaryMarshaler.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json\/\">encoding\/json<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Vid serialisering kommer f\u00e4ltet i strukturen med den nya omitzero-alternativet i f\u00e4ltets tagg att uteslutas om dess v\u00e4rde \u00e4r noll. Om typens f\u00e4lt har metoden IsZero() bool, kommer den att anv\u00e4ndas f\u00f6r att avg\u00f6ra om v\u00e4rdet \u00e4r noll. Annars kommer v\u00e4rdet att vara noll om det \u00e4r <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">ett nollv\u00e4rde f\u00f6r dess typ<\/a>. F\u00e4lt-taggen omitzero \u00e4r renare och mindre ben\u00e4gen f\u00f6r misstag \u00e4n omitempty, n\u00e4r avsikten \u00e4r att utesluta nollv\u00e4rden. S\u00e4rskilt j\u00e4mf\u00f6rt med omitempty, utesluter omitzero noll <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> v\u00e4rden, vilket \u00e4r en vanlig k\u00e4lla till problem.<\/p>\n<p><\/noindex> <\/p>\n<p>Om b\u00e5de omitempty och omitzero anges kommer f\u00e4ltet att uteslutas om v\u00e4rdet \u00e4r tomt eller noll (eller b\u00e5da samtidigt).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> inneh\u00e5ller nu inbyggda strukturer f\u00f6r att ge mer detaljerade felmeddelanden.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Alla datastrukturer go\/types som avsl\u00f6jar sekvenser av metodpar, som Len() int och At(int) T, har nu ocks\u00e5 metoder som returnerar iteratorer, vilket f\u00f6renklar kod likt detta:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>F\u00f6r detta:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Metoder: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.EmbeddedTypes\">Interface.EmbeddedTypes<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.ExplicitMethods\">Interface.ExplicitMethods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.Methods\">Interface.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#MethodSet.Methods\">MethodSet.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Named.Methods\">Named.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Scope.Children\">Scope.Children<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Struct.Fields\">Struct.Fields<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Tuple.Variables\">Tuple.Variables<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#TypeList.Types\">TypeList.Types<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#TypeParamList.TypeParams\">TypeParamList.TypeParams<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Union.Terms\">Union.Terms<\/a><\/p>\n<p><\/noindex> <\/p>\n<h4>hash\/*<\/h4>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32\/\">hash\/adler32<\/a>: v\u00e4rdet som returneras av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">Ny<\/a>, implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32\/\">hash\/crc32<\/a>: v\u00e4rdena som returneras av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">Ny<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64\/\">hash\/crc64<\/a>: v\u00e4rdet som returneras av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">Ny<\/a>, implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv\/\">hash\/fnv<\/a>: v\u00e4rdena som returneras av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New32\">New32<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New32a\">New32a<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New64\">New64<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New64a\">New64a<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128\">New128<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash\/\">hash\/maphash<\/a>: nya funktioner <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> kan ber\u00e4kna hash av vilket v\u00e4rde som helst som g\u00e5r att j\u00e4mf\u00f6ra. Detta g\u00f6r det m\u00f6jligt att hashera vad som helst som kan anv\u00e4ndas som nyckel i en Go-dictionary.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog\/\">log\/slog<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Ny <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> \u00e4r en hanterare som aldrig \u00e4r aktiverad och alltid kastar bort sin utdata.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">Niv\u00e5<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> implementerar nu ett gr\u00e4nssnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4>math\/*<\/h4>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big\/\">math\/big<\/a>: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Float\">Float<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Int\">Int<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> implementerar nu ett gr\u00e4nssnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/\">math\/rand<\/a>: anrop av f\u00f6r\u00e5ldrad h\u00f6g-niv\u00e5funktion <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> har inte l\u00e4ngre n\u00e5gon effekt. F\u00f6r att \u00e5terst\u00e4lla det gamla beteendet kan man anv\u00e4nda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">inst\u00e4llningen GODEBUG<\/a> randseednop=0. Mer kontext i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">f\u00f6rslag 67273<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2\/\">math\/rand\/v2<\/a>: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#ChaCha8\">ChaCha8<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> implementerar nu ett gr\u00e4nssnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/\">net<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#ListenConfig\">ListenCondig<\/a> anv\u00e4nder nu MPTCP som standard p\u00e5 system d\u00e4r det st\u00f6ds (just nu bara Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> implementerar nu ett gr\u00e4nssnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/\">net\/http<\/a><\/h4>\n<p> <noindex><\/p>\n<p>\u00c4ndrat begr\u00e4nsning <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> p\u00e5 mottagna informationssvar 1xx som svar p\u00e5 en beg\u00e4ran. Tidigare stoppade detta beg\u00e4ran och returnerade ett fel efter att ha mottagit mer \u00e4n 5 svar 1xx. Nu returneras ett fel endast om den totala storleken av alla svar 1xx \u00f6verskrider konfigurationsinst\u00e4llningen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Dessutom, n\u00e4r en beg\u00e4ran har en hook f\u00f6r sp\u00e5rning <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, finns det nu ingen begr\u00e4nsning p\u00e5 det totala antalet svar 1xx. Hook Got1xxResponse kan returnera ett fel f\u00f6r att stoppa beg\u00e4ran.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Server<\/a> har nu ett HTTP2-f\u00e4lt som till\u00e5ter konfigurering av HTTP\/2-protokollinst\u00e4llningar.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nya f\u00e4lt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> ger ett enkelt s\u00e4tt att konfigurera vilka protokoll en HTTP-server eller klient anv\u00e4nder.<\/p>\n<p><\/noindex> <\/p>\n<p>Server och klient kan konfigureras f\u00f6r att st\u00f6dja okrypterade HTTP\/2-anslutningar.<\/p>\n<p> <noindex><\/p>\n<p>N\u00e4r <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> inneh\u00e5ller UnencrypterHTTP2, servern kommer att ta emot HTTP\/2-anslutningar p\u00e5 okrypterade portar. Servern kan ta emot b\u00e5de HTTP\/1 och okrypterat HTTP\/2 p\u00e5 samma port.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>N\u00e4r <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> inneh\u00e5ller UnencryptedHTTP2 och g\u00f6r inte HTTP1, transportet kommer att anv\u00e4nda okrypterat HTTP\/2 f\u00f6r adresser <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Om transporten \u00e4r konfigurerad att anv\u00e4nda b\u00e5de HTTP\/1 och okrypterad HTTP\/2, kommer den att anv\u00e4nda HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>St\u00f6det f\u00f6r okrypterad HTTP\/2 anv\u00e4nder \"HTTP\/2 med f\u00f6rhandskunskap\" (RFC 9113, avsnitt 3.3). Den f\u00f6r\u00e5ldrade rubriken \"Upgrade: h2c\" st\u00f6ds inte.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip\/\">net\/netip<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Addr\">Addr<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#AddrPort\">AddrPort<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> implementerar nu gr\u00e4nssnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/url\/\">net\/url<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/url#URL\">URL<\/a> implementerar nu ocks\u00e5 gr\u00e4nssnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user\/\">os\/user<\/a><\/h4>\n<p> <noindex><\/p>\n<p>I Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a> kan nu anv\u00e4ndas i Windows Nano Server. Implementeringen har uppdaterats f\u00f6r att undvika anv\u00e4ndning av funktioner fr\u00e5n biblioteket NetApi32, som saknas i Nano Server.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Lookup\">Lookup<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">LookupId<\/a> st\u00f6djer nu f\u00f6ljande inbyggda anv\u00e4ndartj\u00e4nstkonton:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>NT AUTHORITYSYSTEM<\/li>\n<li>NT AUTHORITYLOCAL SERVICE<\/li>\n<li>NT AUTHORITYNETWORK SERVICE<\/li>\n<\/ul>\n<p> <noindex><\/p>\n<p>I Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a> har avsev\u00e4rt accelererats n\u00e4r den aktuella anv\u00e4ndaren \u00e4r ansluten till en l\u00e5ngsam dom\u00e4n, vilket \u00e4r vanligt bland m\u00e5nga f\u00f6retagsanv\u00e4ndare. Den nya prestandan i implementeringen ligger nu i millisekunder, j\u00e4mf\u00f6rt med den tidigare implementeringen som kunde ta flera sekunder, till och med minuter, att slutf\u00f6ra.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Aktuell<\/a> returnerar nu \u00e4garen av processen n\u00e4r den aktuella tr\u00e5den framh\u00e4ver sig sj\u00e4lv som en annan anv\u00e4ndare. Tidigare returnerade detta ett fel.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/regexp\/\">regexp<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/regexp#Regexp\">Regexp<\/a> implementerar nu ett gr\u00e4nssnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAdapter<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/\">runtime<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Funktionen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> har nu deklarerats som f\u00f6r\u00e5ldrad. I ny kod b\u00f6r systemv\u00e4gen f\u00f6redras f\u00f6r att definiera bin\u00e4rfilen \"go\", och anv\u00e4nd \"go env GOROOT\" f\u00f6r att definiera GOROOT.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\/\">strings<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> l\u00e4gger till flera funktioner f\u00f6r att arbeta med iteratorer:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> returnerar en iterator av rader delade av ny rad i str\u00e4ngen.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> returnerar en iterator av alla delstr\u00e4ngar i str\u00e4ngen, delade av separeraren.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> returnerar en iterator av delstr\u00e4ngar i str\u00e4ngen, delade efter varje f\u00f6rekomst av separeraren.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> returnerar en iterator av delstr\u00e4ngar i str\u00e4ngen runt sekvenser av mellanslag, som definierat.<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unicode#IsSpace\">unicode.IsSpace<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsFuncSeq\">FieldsFuncSeq<\/a> returnerar en iterator av delstr\u00e4ngar i str\u00e4ngen kring sekvenser av unicode-kodpunkter som uppfyller predikatet.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Implementering <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> har f\u00f6r\u00e4ndrats f\u00f6r att f\u00f6rb\u00e4ttra prestandan, s\u00e4rskilt f\u00f6r \u00e4ndringar av ordboken. Till exempel \u00e4r det mindre troligt med konkurrens om f\u00f6r\u00e4ndringar av icke-\u00f6verlappande upps\u00e4ttningar i stora ordb\u00f6cker, och ingen uppbyggnadstid kr\u00e4vs f\u00f6r att uppn\u00e5 l\u00e5g konkurrens belastning p\u00e5 ordboken.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Om du st\u00f6ter p\u00e5 n\u00e5gra problem, st\u00e4ll in GOEXPERIMENT=nosynchashtriemap under bygget f\u00f6r att \u00e5terg\u00e5 till den gamla implementationen, och var god <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">fyll i problemformul\u00e4ret<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/\">testing<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Nya metoder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> \u00e5terf\u00f6r kontexten som avbryts efter att testet \u00e4r klart och f\u00f6re utf\u00f6randet av testets st\u00e4dfunktioner.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nya metoder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> kan anv\u00e4ndas f\u00f6r att \u00e4ndra arbetskatalogen under testets eller benchmarkens varaktighet.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>Mallar st\u00f6der nu range-over-func och range-over-int.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\/\">time<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">Tid<\/a> implementerar nu gr\u00e4nssnitten <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> och <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Portar<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Som det var <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">meddelats<\/a> i utgivningsanteckningarna f\u00f6r Go 1.23, kr\u00e4ver Go 1.24 Linux k\u00e4rna version 3.2 eller senare.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 \u00e4r den senaste utg\u00e5van som kommer att fungera p\u00e5 macOS 11 Big Sur. Go 1.25 kommer att kr\u00e4va macOS 12 Monterey eller senare.<\/p>\n<h3>WebAssembly<\/h3>\n<p>Kommandot f\u00f6r kompilatorn go:wasmexport har lagts till i Go-program f\u00f6r att exportera funktioner till WebAssembly-v\u00e4rden.<\/p>\n<p> <noindex><\/p>\n<p>I WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) st\u00f6der Go 1.24 bygget av Go-program som <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> genom att ange byggflagg -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Fler typer \u00e4r nu till\u00e5tna som argument- eller resultattyper f\u00f6r funktioner go:wasmimport. Speciellt \u00e4r bool, string, uintptr och pekare till vissa typer till\u00e5tna (detaljer kan ses i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">dokumentationen<\/a>), tillsammans med 32-bitars och 64-bitars heltalstyper och flyttal, samt unsafe.Pointer som redan \u00e4r till\u00e5tna. Dessa typer \u00e4r ocks\u00e5 till\u00e5tna som argument- eller resultattyper f\u00f6r funktioner go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>St\u00f6dfiler f\u00f6r WebAssembly har flyttats till lib\/wasm fr\u00e5n misc\/wasm.<\/p>\n<p>Den ursprungliga minnesstorleken har minskats avsev\u00e4rt, s\u00e4rskilt f\u00f6r sm\u00e5 WebAssembly-appar.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>32-bitars port windows\/arm (GOOS=windows GOARCH=arm) har markerats som trasig. Detaljer i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>K\u00e4lla: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/news\/development\/17884044\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":121951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-121950","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/news\/go-1-24\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Go 1.24 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/news\/go-1-24\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-02-15T12:22:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-02-15T12:22:29+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Go 1.24 | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Go 1.24 | ProHoster","og:url":"https:\/\/prohoster.info\/sv\/blog\/news\/go-1-24","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2025-02-15T12:22:29+00:00","article:modified_time":"2025-02-15T12:22:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"121950","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 10:38:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 10:38:20","updated":"2026-01-23 10:38:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}