{"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\/no\/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 nye utgaven av Go-spr\u00e5ket, versjon 1.24, lanseres seks m\u00e5neder etter <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. De fleste endringene gjelder implementasjonen av verkt\u00f8ykjeden, runtime og biblioteker. Som alltid sikrer utgivelsen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">l\u00f8ftet om kompatibilitet<\/a> Go 1. Utviklerne forventer at nesten alle Go-programmer fortsatt vil kompilere og fungere som f\u00f8r.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Endringer i spr\u00e5ket<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 st\u00f8tter n\u00e5 fullt ut <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">generiske typealias<\/a>: et typealias kan parameteriseres som en deklarert type. Detaljer finnes i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">spr\u00e5kets spesifikasjon<\/a>. Forel\u00f8pig kan muligheten deaktiveres ved \u00e5 sette GOEXPERIMENT=noaliastypeparams; imidlertid vil alternativet aliastypeparams bli fjernet i Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>Tools<\/h2>\n<h3>Go-teamet<\/h3>\n<p> <noindex><\/p>\n<p>Go-moduler kan n\u00e5 spore kj\u00f8rbare avhengigheter ved \u00e5 bruke tool-direktivet i go.mod. Dette fjerner behovet for den tidligere l\u00f8sningen med \u00e5 legge til verkt\u00f8y som tomme importer i filen, vanligvis kalt \u201ctools.go\u201d. Go-verkt\u00f8yet kan n\u00e5 kj\u00f8re disse verkt\u00f8yene i tillegg til verkt\u00f8yene som f\u00f8lger med Go. Mer informasjon finnes i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">dokumentasjonen<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Den nye flagget -tool for go get f\u00f8rer til at et verkt\u00f8ydirektiv legges til den n\u00e5v\u00e6rende modulen for de angitte pakkene i tillegg til \u00e5 legge til kravdirektivet.<\/p>\n<p> <noindex><\/p>\n<p>Ny <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">metam\u00f8nsteret tool<\/a> refererer til alle verkt\u00f8yene i den n\u00e5v\u00e6rende modulen. Dette kan brukes til \u00e5 oppdatere dem alle via go get tool eller installere dem til din GOBIN-katalog via go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Kj\u00f8rbare filer laget gjennom go run og den nye oppf\u00f8rselen til go tool blir n\u00e5 hurtigbufferte i Go-byggehurtigbufferen. Dette forbedrer gjentatte kj\u00f8ringer takket v\u00e6re den \u00f8kte hurtigbufferen. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Go build- og go install-kommandoene tar n\u00e5 flagget -json, som rapporterer bygget og feilmeldinger som strukturert JSON-utgang til standardutgangen. Detaljer om formatet kan sees i go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Videre rapporterer go test -json n\u00e5 bygget og feilmeldinger i JSON, blandet med JSON-resultatet fra testen. De kan skilles ved de nye Action-typene, men hvis de for\u00e5rsaker problemer i testintegreringssystemet, kan man g\u00e5 tilbake til tekstlig utgang for byggingen via <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-innstillingen<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>Den nye milj\u00f8variabelen GOAUTH gir en fleksibel m\u00e5te \u00e5 godkjenne private modulforklaringer p\u00e5. Se detaljer i go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>Go build-kommandoen installerer n\u00e5 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">versjonen av hovedmodulen<\/a> i den kompilerte bin\u00e6rfilen, basert p\u00e5 taggen og\/eller kommiteen i versjonskontrollsystemet. Suffikset +dirty vil bli lagt til hvis det er ikke-committede endringer. Du kan bruke flagget -buildvcs=false for \u00e5 utelate versjonskontrollinformasjon fra bin\u00e6rfilen.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ny <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">konfigurasjon GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> kan n\u00e5 brukes til \u00e5 spore prosessen med valg av verkt\u00f8ysett i Go-teamet.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo st\u00f8tter nye annotasjoner for C-funksjoner for \u00e5 forbedre ytelsen i kj\u00f8retid. #cgo noescape cFunctionName forteller kompilatoren at minnet som sendes til C-funksjonen cFunctionName ikke kan unnslippe. #cgo nocallback cFunctionName forteller kompilatoren at C-funksjonen cFunctionName ikke tilbakekaller noen Go-funksjoner. Mer informasjon kan sees i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">Cgo-dokumentasjonen<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo nekter for \u00f8yeblikket \u00e5 kompilere anrop til C-funksjoner som har flere inkompatible deklarasjoner. For eksempel, hvis f er deklarert som b\u00e5de void f(int) og void f(double), vil Cgo gi en feil i stedet for \u00e5 generere en feilaktig anropsekvens f(0). Nytt i denne utgivelsen er forbedret oppdagelse av denne feilsituasjonen n\u00e5r inkompatible deklarasjoner finnes i forskjellige filer. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>Verkt\u00f8yet objdump st\u00f8tter n\u00e5 disasselering p\u00e5 64-bit LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) og S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>Den nye analysatoren tests rapporterer vanlige feil i testdeklarasjoner, fuzzers, benchmarks og eksempler i testpakker, slik som feilaktige navn, ugyldige signaturer eller eksempler som dokumenterer ikke-eksisterende identifikatorer. Noen av disse feilene kan f\u00f8re til at tester ikke kj\u00f8res.<\/p>\n<p> <noindex><\/p>\n<p>Den eksisterende printf-analysatoren rapporterer n\u00e5 diagnostikk for kall av formen fmt.Printf(s), der s er en ikke-konstant formatstreng, uten andre argumenter. Slike kall er nesten alltid feil, da verdien av s kan inneholde tegn %. Bruk heller fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. Denne sjekken har en tendens til \u00e5 gj\u00f8re funn i eksisterende kode, og derfor anvendes den bare n\u00e5r spr\u00e5kversjonen (som angitt av direktivet for go-filen go.mod eller kommentarene `\/\/go:build) er minst Go 1.24, for \u00e5 unng\u00e5 at langvarig integrering mislykkes ved oppgradering til Go 1.24-verkt\u00f8ysettet.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Den eksisterende buildtag-analyzeren rapporterer n\u00e5 diagnostikk n\u00e5r det er en feil <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">byggrense for eldre versjon<\/a> Go i direktivet \/\/go:build. For eksempel, \/\/go:build go1.23.1 refererer til en patchversjon; bruk i stedet \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Den eksisterende copylock-analyzeren rapporterer n\u00e5 diagnostikk n\u00e5r en variabel, deklarert i en tredobbelt 'for'-l\u00f8kke, som for i := iter(); done(i); i = next(i) { \u2026 }, inneholder sync.Locker, som sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> endres atferden til slike l\u00f8kker ved \u00e5 opprette en ny variabel for hver iterasjon, kopiere verdiene fra forrige iterasjon; denne kopieringen er usikker for l\u00e5ser. <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 interne bin\u00e6rprogrammet cmd\/go og mekanismen for testcache kan n\u00e5 implementeres av underprosesser som implementerer JSON-protokollen mellom cmd\/go-verkt\u00f8yet og underprosessen navngitt av milj\u00f8variabelen GOCACHEPROG. Tidligere var dette under GOEXPERIMENT. Protokolldetaljer kan sees i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">dokumentasjonen<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Kj\u00f8rets tid<\/h2>\n<p> <noindex><\/p>\n<p>Flere ytelsesforbedringer i runtime har redusert CPU-overhead med 2-3% i gjennomsnitt mellom et sett av representative benchmark. Resultatene kan variere avhengig av applikasjonen. Disse forbedringene inkluderer en ny innebygd implementering av map basert p\u00e5 <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">Svenske tabeller<\/a>, mer effektiv tildeling av minne for sm\u00e5 objekter og en ny intern runtime-implementering av mutexer.<\/p>\n<p><\/noindex> <\/p>\n<p>Den nye innebygde implementeringen av map og den nye interne runtime-mutexen kan deaktiveres med innstillingene GOEXPERIMENT=noswissmap og GOEXPERIMENT=nospinbitmutex under bygging henholdsvis.<\/p>\n<h2>Kompilator<\/h2>\n<p>Kompilatoren har allerede forbudt \u00e5 definere nye metoder med mottakertyper som er generert av cgo, men det var mulig \u00e5 omg\u00e5 denne begrensningen via typealias. Go 1.24 rapporterer n\u00e5 alltid en feil hvis mottakeren angir en generert cgo-type, direkte eller indirekte (gjennom typealiasen).<\/p>\n<h2>Linker<\/h2>\n<p>Linkeren genererer n\u00e5 GNU build-ID (ELF NT_GNU_BUILD_ID-optagelse) p\u00e5 ELF-plattformer og UUID (Last Mach-O LC_UUID-kommando) p\u00e5 macOS som standard. Build-IDen eller UUIDen er avledet fra Go-build-IDen. Dette kan sl\u00e5s av med linkerflagget -B none, eller overstyres med linkerflagget -B 0xNNNN med spesifisert brukerdefinert heksadesimalt verdi.<\/p>\n<h2>Rulling<\/h2>\n<p> <noindex><\/p>\n<p>Som angitt i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">utgivelsesnotatene for Go 1.22<\/a>, Go 1.24 krever n\u00e5 Go 1.22.6 eller nyere for kompiling. Utviklerne forventer at Go 1.26 vil kreve en punktutgave av Go 1.24 eller nyere for kompiling.<\/p>\n<p><\/noindex> <\/p>\n<h2>Standardbibliotek<\/h2>\n<h3>Begrenset katalogtilgang til filsystemet<\/h3>\n<p> <noindex><\/p>\n<p>Ny type <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> gir muligheten til \u00e5 utf\u00f8re filsystemoperasjoner innenfor et bestemt katalog.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>kan <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> \u00e5pner katalogen og returnerer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Metodene p\u00e5 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> opererer innenfor denne katalogen og tillater ikke stier \u00e5 referere til steder utenfor katalogen, inkludert de som f\u00f8lger symboliske lenker utenfor katalogen. Metodene p\u00e5 os.Root reflekterer de fleste filsystemoperasjoner tilgjengelig i os-pakken, inkludert for eksempel <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> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Ny benchmarkingfunksjon<\/h3>\n<p> <noindex><\/p>\n<p>Benchmarking kan n\u00e5 bruke en raskere og mer feiltolerant metode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> for \u00e5 gj\u00f8re iterasjoner av benchmark som for b.Loop() { \u2026 } i stedet for typiske l\u00f8kkestrukturer med b.N som for range b.N. Dette gir to betydelige fordeler:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Benchmarkfunksjonen kj\u00f8res n\u00f8yaktig \u00e9n gang for hver -count, slik at dyre oppsettings- og ryddeopptrinn kun kj\u00f8res \u00e9n gang.<\/li>\n<li>Funksjonskallparametre og resultater fortsetter \u00e5 leve, noe som forhindrer kompilatoren i \u00e5 optimalisere hele l\u00f8kkekroppen helt.<\/li>\n<\/ul>\n<h3>Forbedrede finalizers<\/h3>\n<p> <noindex><\/p>\n<p>Ny funksjon <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> er et avslutningsmekanisme som er mer fleksibel, mer effektiv og mindre feilutsatt enn <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup knytter en ryddingsfunksjon til objektet, som vil bli kj\u00f8rt s\u00e5 snart objektet ikke lenger er tilgjengelig. Men, i motsetning til SetFinalizer, kan flere ryddefunksjoner knyttes til ett objekt, ryddinger kan knyttes til interne pekere, ryddinger for\u00e5rsaker vanligvis ikke minnelekkasjer n\u00e5r objektene danner en syklus, og ryddinger forsinker ikke frigj\u00f8ringen av objektet eller objektene det peker p\u00e5. Ny kode b\u00f8r foretrekke AddCleanup f\u00f8r SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Ny pakke weak<\/h3>\n<p> <noindex><\/p>\n<p>Den nye pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> tilbyr svake pekere.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Svake pekere er et lavniv\u00e5primitiv som tilbys for \u00e5 lage strukturer som effektivt bruker minne, som svake ordb\u00f8ker for \u00e5 knytte verdier, kanoniseringsordb\u00f8ker for hva som helst som ikke dekkes av pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, og forskjellige typer cache. For \u00e5 st\u00f8tte disse bruksomr\u00e5dene, gir denne utgivelsen ogs\u00e5 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Ny pakke crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Den nye pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> implementerer ML-KEM-768 og ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM er en post-kvantum n\u00f8kkelutvekslingsmekanisme, tidligere kjent som Kyber og spesifisert i <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nye pakker crypto\/hkdf, crypto\/pbkdf2 og crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Den nye pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implementerer en HMAC-basert n\u00f8kkelproduksjonsfunksjon \u201cExtract-and-Expand\u201d HKDF, som definert i <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Den nye pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implementerer en passordbasert n\u00f8kkelproduksjonsfunksjon PBKDF2, som definert i <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Den nye pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implementerer hash-funksjonen SHA-3 og SHAKE og cSHAKE utvidbare produksjonsfunksjoner, som definert i <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Alle tre pakkene er basert p\u00e5 tidligere eksisterende pakker fra golang.org\/x\/crypto\/\u2026.<\/p>\n<h3>FIPS 140-3 samsvar<\/h3>\n<p> <noindex><\/p>\n<p>Denne utgivelsen inkluderer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">et nytt sett med mekanismer for \u00e5 oppn\u00e5 FIPS 140-3 samsvar<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Go's kryptografiske modul er et sett med interne pakker i standardbiblioteket som brukes transparent for \u00e5 implementere godkjente FIPS 140-3 algoritmer. Applikasjoner krever ingen endringer for \u00e5 bruke Go's kryptografiske modul for godkjente algoritmer.<\/p>\n<p> <noindex><\/p>\n<p>Den nye milj\u00f8variabelen GOFIPS140 kan brukes til \u00e5 velge versjonen av Go's kryptografiske modul for bruk i bygget. Den nye <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">konfigurasjon GODEBUG<\/a> fips140 kan brukes til \u00e5 aktivere FIPS 140-3-modus under kj\u00f8ring.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 inkluderer Go's kryptografiske modul versjon v1.0.0, som for \u00f8yeblikket testes med akkreditert CMVP-laboratorium.<\/p>\n<h3>Ny eksperimentell pakke testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Ny eksperimentell pakke <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> tilbyr st\u00f8tte for testing av samtidig kode.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>kan <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> kj\u00f8rer en gruppe gorutiner i et isolert \u00abboble\u00bb. I boblen fungerer funksjonene i pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">time<\/a> p\u00e5 falske klokker.<\/li>\n<li>Functions <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> venter p\u00e5 at alle gorutiner skal bli blokkert i den aktuelle boblen.<\/li>\n<\/ul>\n<p>Detaljer kan sees i dokumentasjonen for pakken.<\/p>\n<p> <noindex><\/p>\n<p>Pakken synctest er eksperimentell og m\u00e5 aktiveres ved \u00e5 sette GOEXPERIMENT=synctest. API-en for pakken kan endres i fremtidige utgivelser. I <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> kan du se flere detaljer og gi tilbakemelding.<\/p>\n<p><\/noindex> <\/p>\n<h3>Mindre endringer i biblioteket<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implementasjoner (*Writer.AddFS) i archive\/zip og archive\/tar skriver n\u00e5 direktivet for en tom katalog.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> legger til flere funksjoner som arbeider med iteratorer:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> returnerer en iterator over linjer delt med ny linje i en byte slice.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> returnerer en iterator over alle delene av et byte-slice delt med en separator.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> returnerer en iterator over delene av et byte-slice delt etter hver forekomst av separatoren.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> returnerer en iterator over delene av et byte-slice rundt sekvenser av mellomromstegn, som definert <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> returnerer en iterator over delene av et byte-slice rundt sekvenser av Unicode-kodede punkter som tilfredsstiller 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>Verdien som returneres <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> implementerer ikke lenger metodene NewCTR, NewGCM, NewCBCEncrypter og NewCBCDecrypter. Disse metodene var ikke dokumentert og var ikke tilgjengelige p\u00e5 alle arkitekturer. N\u00e5 er verdien <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> m\u00e5 sendes direkte til de tilsvarende funksjonene <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. Per n\u00e5 sjekker crypto\/cipher fremdeles disse metodene for Block-verdiene, selv om de ikke lenger st\u00f8ttes 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 funksjon <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> returnerer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, som implementerer AES-GCM, genererer et tilfeldig engangsnummer under Seal og legger det til starten av den krypterte teksten.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implementering <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, som returneres <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> er n\u00e5 flere ganger raskere p\u00e5 amd64 og arm64. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> NewOFB<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewOFB\">NewCFBEncrypter<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBEncrypter\">NewCFBDecrypter<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">er n\u00e5 erkl\u00e6rt utdaterte. OFB- og CFB-modusene er ikke autentiserte, noe som generelt muliggj\u00f8r aktive angrep som manipulerer og gjenoppretter klartekst. Applikasjoner anbefales \u00e5 bruke<\/a> i stedet. Hvis en ikke-autentisert modus <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> er n\u00f8dvendig, kan man bruke <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> i stedet. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> crypto\/ecdsa<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa\/\">PrivateKey.Sign<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa#PrivateKey.Sign\">lager n\u00e5 en deterministisk signatur i henhold til<\/a> RFC 6979 <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">, hvis kilden til tilfeldighet er nil.<\/a>crypto\/md5<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/md5\/\">md5.New<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Verdien som returneres <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">, implementerer n\u00e5 ogs\u00e5 grensesnittet<\/a>encoding.BinaryAppender <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand\/\">Read<\/a><\/h4>\n<p> <noindex><\/p>\n<p>kan <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">garanterer n\u00e5 frav\u00e6r av feil. Hvis Read st\u00f8ter p\u00e5 en feil under lesing<\/a> Reader <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">, vil programmet avsluttes permanent. Merk at standard Reader er dokumentert til alltid \u00e5 fungere vellykket, s\u00e5 denne endringen b\u00f8r bare p\u00e5virke de programmene som overstyrer Reader-variabelen. Et unntak er Linux-kjerner f\u00f8r versjon 3.17, hvor standard Reader fortsatt \u00e5pner \/dev\/urandom og kan feile.<\/a>P\u00e5 Linux 6.11 og senere bruker Reader n\u00e5 systemkallet getrandom gjennom vDSO. Dette er betydelig raskere, vanligvis for sm\u00e5 lesinger.<\/p>\n<p><\/noindex> <\/p>\n<p>P\u00e5 OpenBSD bruker Reader n\u00e5 arc4random_buf(3).<\/p>\n<p>Text<\/p>\n<p> <noindex><\/p>\n<p>Ny funksjon <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> n\u00e5 kan generere kryptografisk sikre tilfeldige tekststrenger.<\/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> n\u00e5 returnerer en feil hvis en n\u00f8kkel p\u00e5 mindre enn 1024 biter blir forespurt. Alle metodene Sign, Verify, Encrypt og Decrypt returnerer n\u00e5 en feil hvis de brukes med en n\u00f8kkel av st\u00f8rrelse mindre enn 1024 biter. Slike n\u00f8kler er usikre og b\u00f8r ikke brukes. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-innstillinger<\/a> rsa1024min=0 gjenoppretter gammel atferd, men Go-utviklere anbefaler \u00e5 gj\u00f8re dette kun n\u00e5r n\u00f8dvendig og bare i tester, for eksempel ved \u00e5 legge til linjen \/\/go:debug rsa1024min=0 i testfilen. Ny <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">eksempel<\/a> GenerateKey gir en standard 2024-bits testn\u00f8kkel som er enkel \u00e5 bruke.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>N\u00e5 er det trygt og mer effektivt \u00e5 kalle <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> til <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute er n\u00e5 raskere med delvis utfylte <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, for eksempel n\u00e5r n\u00f8kkelen hentes fra JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Pakken avviser n\u00e5 flere feil n\u00f8kler, selv n\u00e5r Validate ikke blir kalt, og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> kan n\u00e5 returnere nye feil for \u00f8delagte tilfeldighetskilder. Feltene <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> og <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> blir n\u00e5 brukt og validert selv n\u00e5r noen verdier mangler. Det er ogs\u00e5 gjort endringer i crypto\/x509 for parsing og henting av RSA-n\u00f8kler, beskrevet nedenfor.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> st\u00f8tter n\u00e5 SHA-512\/224, SHA-512\/256 og SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> bruger n\u00e5 en litt annen metode for \u00e5 generere den private eksponenten (Carmichael-funksjonen i stedet for Eulers funksjon). Sjeldne applikasjoner som ekstern gjenskaper n\u00f8kler bare fra primtall kan gi ulike, men kompatible resultater.<\/p>\n<p><\/noindex> <\/p>\n<p>Operasjoner med offentlige og private n\u00f8kler er n\u00e5 opptil to ganger raskere 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>: verdien som returneres av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> implementerer n\u00e5 ogs\u00e5 grensesnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha256\/\">crypto\/sha256<\/a>: verdiene som returneres av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> implementerer n\u00e5 ogs\u00e5 grensesnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha512\/\">crypto\/sha512<\/a>: verdiene som returneres 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> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, implementerer n\u00e5 ogs\u00e5 grensesnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/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 funksjon <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> lar lar ein bruker utf\u00f8re funksjonen med arkitekturspecifikke innebygde funksjoner som garanterer uendret visse instruksjoner med hensyn til tidsverdien av data. Dette kan brukes til \u00e5 sikre at koden som er laget for \u00e5 kj\u00f8re p\u00e5 konstant tid ikke er optimalisert av prosessorniv\u00e5 funksjoner p\u00e5 en m\u00e5te som gj\u00f8r at den kj\u00f8rer p\u00e5 variabel tid. S\u00e5 langt bruker WithDataIndependentTiming PSTATE.DIT-bit p\u00e5 arm64 og gj\u00f8r ingenting p\u00e5 alle andre arkitekturer. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-innstillinger<\/a> dataindependenttiming=1 aktiverer DIT-modus for hele 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\u00e5 overlappe helt eller ikke med input. Tidligere var oppf\u00f8rselen udefinert i motsatt fall, mens n\u00e5 vil XORBytes panikke.<\/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-serveren st\u00f8tter n\u00e5 Encrypted Client Hello (ECH). Denne funksjonen kan aktiveres ved \u00e5 fylle ut feltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Den nye post-kvante n\u00f8kkelutvekslingsmekanismen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> st\u00f8ttes n\u00e5 og er aktivert som standard n\u00e5r <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> er nil. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-innstillinger<\/a> tlsmlkem=0 returnerer standard.<\/p>\n<p><\/noindex> <\/p>\n<p>St\u00f8tten for eksperimentell n\u00f8kkelutveksling X25519Kyber768Draft00 er fjernet.<\/p>\n<p> <noindex><\/p>\n<p>Rekkef\u00f8lgen for n\u00f8kkelutveksling h\u00e5ndteres n\u00e5 fullstendig av crypto\/tls-pakken. Rekkef\u00f8lgen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> ignoreres n\u00e5, og innholdet brukes kun til \u00e5 bestemme hvilke n\u00f8kkelutvekslinger som skal inkluderes n\u00e5r feltet er fylt ut.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Det nye feltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> opplister identifikatorene for utvidelsene mottatt i Client Hello-meldingen. Dette kan v\u00e6re nyttig for \u00e5 ta fingeravtrykk 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\">GODEBUG-innstillinger<\/a> x509sha1 er fjernet. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> st\u00f8tter ikke lenger signaturer basert 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> implementerer n\u00e5 grensesnittene <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Det standardfeltet for sertifikatpolitikker har blitt endret fra <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> En funksjon har blitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. Ved parsing av sertifikater vil begge felt bli fylt ut, men ved oppretting av sertifikatpolitikker vil de bli hentet fra feltet Certificate.Policies i stedet for Certificate.PolicyIdentifiers. Denne endringen kan bli reversert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">med GODEBUG-innstillingen<\/a> x509usepolicies=0.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#CreateCertificate\">CreateCertificate<\/a> vil n\u00e5 generere serienummer ved hjelp av RFC 5280-kompatibel metode n\u00e5r malen overf\u00f8res via feltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, istedenfor \u00e5 feile.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> st\u00f8tter n\u00e5 validering av politikk, som definert i RFC 5280 og RFC 9618. Det nye feltet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> kan settes til et akseptabelt sett med politikker <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Bare sertifikatkjeder med gyldige policygrafene vil bli returnert fra <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> returnerer n\u00e5 en feil i stedet for \u00e5 hente den feilaktige RSA-n\u00f8kkelen. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> har ikke returfeil, og atferden med feilaktige n\u00f8kler forblir udefinert.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> bruker n\u00e5 og validerer de kodede CRT-verdiene, og kan derfor avvise feilaktige RSA-n\u00f8kler som tidligere ble akseptert. Bruken av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">innstillingen GODEBUG<\/a> x509rsacrt=0 tilbakef\u00f8rer til rekalkulering av CRT-verdiene.<\/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>Pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> legger til st\u00f8tte for \u00e5 h\u00e5ndtere versjoner av symboler i dynamiske ELF-filer (Executable and Linkable Format). Den nye metoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> returnerer en liste over dynamiske versjoner definert i ELF-filen. Den nye metoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> returnerer en liste over dynamiske versjoner som kreves av denne ELF-filen, som er definert i andre ELF-objekter. Til slutt, de nye feltene <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> angir versjonen av symbolet.<\/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>To nye grensesnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> har blitt introdusert for \u00e5 legge til tekstlig eller bin\u00e6r representasjon av objektet til et byte-slice. Disse grensesnittene tilbyr samme funksjonalitet som <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, men i stedet for \u00e5 allokere et nytt slice hver gang, legger de dataene direkte inn i den eksisterende slice. Disse grensesnittene er n\u00e5 implementert av standardbiblioteks typer som allerede implementerer TextMarshaler og\/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>N\u00e5r du bygger, vil feltet i strukturen med den nye opsi omitzero i felt taggen bli utelatt hvis verdien er null. Hvis feltets type har metoden IsZero() bool, vil den bli brukt for \u00e5 bestemme om verdien er null. Ellers vil verdien v\u00e6re null hvis den er <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">en nullverdi for sin type<\/a>. Felt taggen omitzero er renere og mindre utsatt for feil enn omitempty, n\u00e5r hensikten er \u00e5 utelate nullverdier. Spesielt i motsetning til omitempty, utelater omitzero null <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> verdier, som er en vanlig kilde til problemer.<\/p>\n<p><\/noindex> <\/p>\n<p>Hvis b\u00e5de omitempty og omitzero er angitt, vil feltet bli utelatt hvis verdien er tom eller null (eller begge deler samtidig).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> inkluderer n\u00e5 innebygde strukturer for \u00e5 gi mer detaljerte feilmeldinger.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Alle datastrukturer go\/types som avdekker sekvenser av par metoder, som Len() int og At(int) T, har n\u00e5 ogs\u00e5 metoder som returnerer iterat\u00f8rer, noe som forenkler kode som dette:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>Til dette:<\/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>: verdien som returneres av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">New<\/a>encoding.BinaryAppender <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32\/\">hash\/crc32<\/a>: verdiene som returneres av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">New<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, implementerer n\u00e5 ogs\u00e5 grensesnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64\/\">hash\/crc64<\/a>: verdien som returneres av <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">New<\/a>encoding.BinaryAppender <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv\/\">hash\/fnv<\/a>: verdiene som returneres 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> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, implementerer n\u00e5 ogs\u00e5 grensesnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash\/\">hash\/maphash<\/a>: nye funksjoner <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> kan beregne hashen av enhver verdi som kan sammenlignes. Dette gj\u00f8r det mulig \u00e5 hashe hva som helst som kan brukes som n\u00f8kkel i 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> er en handler som aldri er aktivert og alltid kaster bort sitt utdata.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">Niv\u00e5<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> implementerer n\u00e5 interfacet <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> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> implementerer n\u00e5 interfacet <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 til den foreldede h\u00f8yniv\u00e5funksjonen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> har ikke lenger noen effekt. For \u00e5 gjenopprette den gamle oppf\u00f8rselen kan man bruke <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-innstillingen<\/a> randseednop=0. Mer kontekst i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">setning 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> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> implementerer n\u00e5 interfacet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/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> bruker n\u00e5 MPTCP som standard p\u00e5 systemer der dette st\u00f8ttes (for n\u00e5 kun Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> implementerer n\u00e5 interfacet <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>Begrensningen har endret seg <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> p\u00e5 mottatte 1xx-informasjonsresponsene som svar p\u00e5 foresp\u00f8rselen. Tidligere stoppet dette foresp\u00f8rselen og returnerte en feil etter \u00e5 ha mottatt mer enn 5 1xx-responser. N\u00e5 returneres feilen kun hvis den totale st\u00f8rrelsen p\u00e5 alle 1xx-responsene overstiger konfigurasjonsinnstillingen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I tillegg, n\u00e5r foresp\u00f8rselen har en hook for \u00e5 spore <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, er det n\u00e5 ingen begrensning p\u00e5 det totale antallet 1xx-responser. Hook Got1xxResponse kan returnere en feil for \u00e5 stoppe foresp\u00f8rselen.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Server<\/a> har n\u00e5 et HTTP2-felt som tillater konfigurasjon av HTTP\/2-protokollinnstillingene.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nye felt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> gir en enkel m\u00e5te \u00e5 konfigurere hvilke HTTP-protokoller serveren eller klienten bruker.<\/p>\n<p><\/noindex> <\/p>\n<p>Server og klient kan konfigureres til \u00e5 st\u00f8tte usikrede HTTP\/2-tilkoblinger.<\/p>\n<p> <noindex><\/p>\n<p>N\u00e5r <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> inneholder UnencrypterHTTP2, serveren vil akseptere HTTP\/2-tilkoblinger p\u00e5 usikrede porter. Serveren kan akseptere b\u00e5de HTTP\/1 og usikret HTTP\/2 p\u00e5 samme port.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>N\u00e5r <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> inneholder UnencryptedHTTP2 og inneholder ikke HTTP1, transporten vil bruke usikret HTTP\/2 for adresser <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Hvis transporten er konfigurert til \u00e5 bruke b\u00e5de HTTP\/1 og ukryptert HTTP\/2 samtidig, vil den bruke HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>St\u00f8tte for ukryptert HTTP\/2 bruker \u00abHTTP\/2 med forh\u00e5ndskunnskap\u00bb (RFC 9113, seksjon 3.3). Den utdaterte overskriften \u201cUpgrade: h2c\u201d st\u00f8ttes ikke.<\/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> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> implementerer n\u00e5 grensesnitt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a> og <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> implementerer n\u00e5 ogs\u00e5 grensesnittet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/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\">Current<\/a> kan n\u00e5 brukes i Windows Nano Server. Implementeringen ble oppdatert for \u00e5 unng\u00e5 bruk av funksjoner fra biblioteket NetApi32, som ikke finnes i Nano Server.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Lookup\">Lookup<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">LookupId<\/a> st\u00f8tter n\u00e5 f\u00f8lgende innebygde brukertjenestekontoer:<\/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\">Current<\/a> ble betydelig akselerert n\u00e5r gjeldende bruker tilh\u00f8rer et tregt domene, noe som er vanlig for mange bedriftsbrukere. Den nye ytelsen til implementeringen er n\u00e5 i millisekundomr\u00e5det, sammenlignet med den tidligere implementeringen, som kunne ta flere sekunder, til og med minutter, f\u00f8r den var fullf\u00f8rt.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> returnerer n\u00e5 brukeren som eier prosessen, n\u00e5r den gjeldende tr\u00e5den gir seg ut for \u00e5 v\u00e6re en annen bruker. Tidligere returnerte dette en feil.<\/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> implementerer n\u00e5 interfacet <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>kan <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> er n\u00e5 erkl\u00e6rt foreldet. I den nye koden b\u00f8r bruk av systemstien foretrekkes for \u00e5 bestemme bin\u00e6rfilen \u201cgo\u201d, og bruke go env GOROOT for \u00e5 bestemme 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>Pakken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> legger til flere funksjoner for arbeid med iteratorer:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> returnerer en iterator over linjer delt av ny linje i strengen.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> returnerer en iterator over alle delstrenger av strengen, delt med separatoren.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> returnerer en iterator over delstrenger av strengen, delt etter hver forekomst av separatoren.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> returnerer en iterator over delstrenger av strengen rundt sekvenser av mellomrom, som definert<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> returnerer en iterator over delstrenger av strengen rundt sekvenser av Unicode-kodepunkter som tilfredsstiller 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> ble endret for \u00e5 forbedre ytelsen, spesielt for ordbokendringer. For eksempel er sjansen for konkurranse mellom urelaterte endringer i store ordb\u00f8ker redusert, og det er ikke lenger n\u00f8dvendig med inngangstid for \u00e5 oppn\u00e5 lav konkurranseordbok.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Hvis du m\u00f8ter noen problemer, sett GOEXPERIMENT=nosynchashtriemap under bygging for \u00e5 g\u00e5 tilbake til den gamle implementeringen, og vennligst <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">fyll ut problemformularet<\/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>Nye metoder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> returnerer konteksten som oppheves etter at testen er fullf\u00f8rt og f\u00f8r utf\u00f8relsen av testopprydningsfunksjonene.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nye metoder <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> kan brukes til \u00e5 endre arbeidskatalogen under test eller benchmark.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>Malene st\u00f8tter n\u00e5 range-over-func og 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> implementerer n\u00e5 grensesnittene <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">crypto\/rand<\/a> og <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Ports<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Som nevnt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">annonsert<\/a> i utgivelsesnotatene for Go 1.23, krever Go 1.24 Linux-kjernen versjon 3.2 eller nyere.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 er den siste utgivelsen som vil fungere p\u00e5 macOS 11 Big Sur. Go 1.25 vil kreve macOS 12 Monterey eller nyere.<\/p>\n<h3>WebAssembly<\/h3>\n<p>Compiler-direktivet go:wasmexport er lagt til i Go-programmer for \u00e5 eksportere funksjoner til WebAssembly-verten.<\/p>\n<p> <noindex><\/p>\n<p>I WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) st\u00f8tter Go 1.24 bygging av Go-programmet som <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> ved \u00e5 angive byggflagget -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Flere typer er n\u00e5 tillatt som argumenttype eller resultattype for funksjoner go:wasmimport. Spesielt er bool, string, uintptr og pekere til bestemte typer tillatt (detaljer kan sees i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">dokumentasjonen<\/a>), sammen med 32-bit og 64-bit heltalls- og flyttallstyper, samt unsafe.Pointer, som allerede er tillatt. Disse typene er ogs\u00e5 tillatt som argumenttyper eller resultattyper for funksjoner go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>St\u00f8ttefiler for WebAssembly har blitt flyttet til lib\/wasm fra misc\/wasm.<\/p>\n<p>Den opprinnelige minnest\u00f8rrelsen er betydelig redusert, spesielt for sm\u00e5 WebAssembly-applikasjoner.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>32-biters Windows\/arm-port (GOOS=windows GOARCH=arm) ble merket som \u00f8delagt. Detaljer i <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Kilde: <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\/no\/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=\"nn_NO\" \/>\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\/no\/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\/no\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}