{"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\/nl\/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>De nieuwste uitgave van de Go-taal, versie 1.24, verschijnt zes maanden na <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. De meeste wijzigingen betreffen de implementatie van de toolchain, runtime en bibliotheken. Zoals altijd biedt de release <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">de belofte van compatibiliteit<\/a> Go 1. De ontwikkelaars van de taal verwachten dat bijna alle Go-programma's zoals voorheen blijven compileren en functioneren.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Wijzigingen in de taal<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 ondersteunt nu volledig <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">generic type aliases<\/a>: een type-alias kan worden geparametriseerd als een gedeclareerd type. Meer details in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">de taal specificatie<\/a>. Voorlopig kan de mogelijkheid worden uitgeschakeld door GOEXPERIMENT=noaliastypeparams in te stellen; echter, de optie aliastypeparams zal worden verwijderd in Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>Hulpmiddelen<\/h2>\n<h3>De go-commando<\/h3>\n<p> <noindex><\/p>\n<p>Go-modules kunnen nu uitvoerende afhankelijkheden volgen met behulp van de tooldirectieve in go.mod. Dit elimineert de noodzaak voor de eerdere workaround om tools als lege importen in het bestand toe te voegen, meestal genaamd \u201ctools.go\u201d. De go tool kan nu deze tools uitvoeren naast de tools die met Go worden meegeleverd. Meer informatie is te vinden in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">de documentatie<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>De nieuwe vlag -tool voor go get leidt tot het toevoegen van een tooldirectieve in het huidige module voor de gespecificeerde pakketten, naast het toevoegen van vereiste directieven.<\/p>\n<p> <noindex><\/p>\n<p>Nieuwe <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">meta-patroon tool<\/a> verwijst naar alle tools in het huidige module. Dit kan worden gebruikt om ze allemaal te updaten via go get tool of om ze in je GOBIN-directory te installeren via go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Uitvoerbare bestanden gemaakt met go run en het nieuwe gedrag van go tool worden nu gecached in de Go-bouwcache. Dit maakt herhaaldelijke uitvoeringen mogelijk door de vergrote cache. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>De go build- en go install-commando's accepteren nu de vlag -json, die de uitvoer en fouten van de bouw geeft als gestructureerde JSON-uitvoer op de standaarduitvoer. De details van het formaat zijn te vinden in go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Bovendien, go test -json geeft nu de uitvoer en fouten van de bouw in JSON, vermengd met de JSON van de testresultaten. Ze kunnen worden onderscheiden door nieuwe types Actie, maar als ze problemen veroorzaken in het testsysteem, kan men teruggaan naar de tekstuele bouwuitvoer via <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">de GODEBUG-instelling<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>De nieuwe omgevingsvariabele GOAUTH biedt een flexibele manier om autorisaties voor priv\u00e9-module-invullingen te beheren. Zie de details in go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>De go build-commando installeert nu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">de versie van het hoofdmodule<\/a> in de gecompileerde binaire, gebaseerd op de tag en\/of commit van het versiebeheersysteem. De suffix +dirty wordt toegevoegd als er ongeregistreerde wijzigingen aanwezig zijn. Gebruik de vlag -buildvcs=false om versiebeheerinformatie uit de binaire uit te sluiten.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nieuwe <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-instellingen<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> kan nu gebruikt worden voor het volgen van het proces van het kiezen van een toolchain in het go-team.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo ondersteunt nieuwe annotaties voor C-functies voor het verbeteren van de runtime-prestaties. #cgo noescape cFunctionName zegt tegen de compiler dat het geheugen dat aan C-functie cFunctionName is doorgegeven niet kan ontsnappen. #cgo nocallback cFunctionName laat de compiler weten dat C-functie cFunctionName geen Go-functies terugroept. Meer informatie is te vinden in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">de cgo-documentatie<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo weigert momenteel om C-functies te compileren die meerdere incompatibele declaraties hebben. Bijvoorbeeld, als f is gedeclareerd als zowel void f(int) als void f(double), zal cgo een foutmelding geven in plaats van een onjuiste aanroepvolgorde van f(0) te genereren. Een nieuwe functie in deze release is verbeterde detectie van deze fout, wanneer incompatibele declaraties in verschillende bestanden voorkomen. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>De objdump-tool ondersteunt nu disassemblage voor 64-bits LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) en S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>De nieuwe tests-analyzer meldt veelvoorkomende fouten in testdeclaraties, fuzzers, benchmarks en voorbeelden in testpakketten, zoals onjuist gevormde namen, onjuiste handtekeningen of voorbeelden die niet-bestaande identificeerders documenteren. Sommige van deze fouten kunnen leiden tot het niet uitvoeren van tests.<\/p>\n<p> <noindex><\/p>\n<p>De bestaande printf-analyzer meldt nu diagnostiek voor aanroepen van de vorm fmt.Printf(s), waarbij s een niet-constante formatteerstring is zonder andere argumenten. Dergelijke aanroepen zijn vrijwel altijd een fout, omdat de waarde van s het % teken kan bevatten; gebruik in plaats daarvan fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. Deze controle heeft de neiging om bevindingen in bestaande code te maken, en daarom wordt deze alleen toegepast wanneer de taalversie (zoals gespecificeerd door de go-directive in het go.mod-bestand of door de comments `\/\/go:build) minimaal Go 1.24 is, om te voorkomen dat langdurige integratieschema's falen bij de upgrade naar de Go 1.24 toolchain.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>De bestaande buildtag-analyseert meldt nu diagnosen wanneer er iets mis is. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">beperkingen van de oudere versie.<\/a> Ga naar de \/\/go:build-directive. Bijvoorbeeld, \/\/go:build go1.23.1 verwijst naar een patchrelease; in plaats daarvan gebruik je \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>De bestaande copylock-analyseert meldt nu diagnosen wanneer een variabele, gedeclareerd in een driedubbele 'for'-lus, zoals for i := iter(); done(i); i = next(i) { \u2026 }, sync.Locker bevat, zoals sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> veranderde het gedrag van dergelijke lussen door voor elke iteratie een nieuwe variabele te maken, waarbij waarden van de vorige iteratie worden gekopieerd; deze kopie is niet veilig voor locks. <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>De interne binaire cmd\/go en het testcachemechanisme kunnen nu worden ge\u00efmplementeerd door subprocessen die een JSON-protocol implementeren tussen het cmd\/go-hulpmiddel en de subprocess, genoemd met de omgevingsvariabele GOCACHEPROG. Eerder was dit voor GOEXPERIMENT. De details van het protocol zijn zichtbaar in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">de documentatie<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Tijd van uitvoering.<\/h2>\n<p> <noindex><\/p>\n<p>Verschillende prestatieverbeteringen in runtime hebben de CPU-overhead met 2-3% gemiddeld verminderd in een representatieve set benchmarks. De resultaten kunnen vari\u00ebren afhankelijk van de toepassing. Deze verbeteringen omvatten een nieuwe ingebouwde mapimplementatie gebaseerd op <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">Zweedse Tafels<\/a>, effici\u00ebnter geheugenbeheer voor kleine objecten, en een nieuwe interne runtime-implementatie van mutexes.<\/p>\n<p><\/noindex> <\/p>\n<p>De nieuwe ingebouwde mapimplementatie en de nieuwe interne runtime-mutex kunnen worden uitgeschakeld met de instellingen GOEXPERIMENT=noswissmap en GOEXPERIMENT=nospinbitmutex tijdens de bouw, respectievelijk.<\/p>\n<h2>Compilator<\/h2>\n<p>De compiler verbiedt al het defini\u00ebren van nieuwe methoden met ontvangerstypes die door cgo zijn gegenereerd, maar het was mogelijk om deze beperking te omzeilen via type-aliasing. Go 1.24 meldt nu altijd een fout als de ontvanger verwijst naar een gegenereerd cgo-type, direct of indirect (via een type-alias).<\/p>\n<h2>Linker<\/h2>\n<p>De linker genereert nu standaard een GNU-buildidentificatie (ELF NT_GNU_BUILD_ID-record) op ELF-platforms en een UUID (Mach-O LC_UUID-loadcommando) op macOS. De buildidentificatie of UUID wordt afgeleid van de Go-buildidentificatie. Dit kan worden uitgeschakeld met de linkerflag -B none, of worden overschreven met de linkerflag -B 0xNNNN met een door de gebruiker opgegeven hexadecimale waarde.<\/p>\n<h2>Ontwikkeling<\/h2>\n<p> <noindex><\/p>\n<p>Zoals aangegeven in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">de releaseopmerkingen van Go 1.22<\/a>, Go 1.24 vereist nu Go 1.22.6 of later voor mounting. Ontwikkelaars verwachten dat Go 1.26 een patchrelease van Go 1.24 of later zal vereisen.<\/p>\n<p><\/noindex> <\/p>\n<h2>StANDAARDBIBLIOTHEEK<\/h2>\n<h3>Beperkte directory toegang tot het bestandssysteem<\/h3>\n<p> <noindex><\/p>\n<p>Nieuw type <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> biedt de mogelijkheid om bestandsoperaties uit te voeren binnen een specifieke directory.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> opent een directory en retourneert <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Methoden in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> werken binnen deze directory en voorkomen dat paden verwijzen naar locaties buiten de directory, inclusief die welke via symbolische links buiten de directory gaan. Methodes op os.Root weerspiegelen de meeste bestandsoperaties die beschikbaar zijn in het os-pakket, inclusief bijvoorbeeld <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> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nieuwe benchmarkfunctie<\/h3>\n<p> <noindex><\/p>\n<p>Benchmarks kunnen nu een snellere en minder foutgevoelige methode gebruiken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> voor iteraties van benchmarks zoals for b.Loop() { \u2026 } in plaats van typische cyclische structuren met b.N zoals for range b.N. Dit biedt twee belangrijke voordelen:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>De benchmarkfunctie wordt precies \u00e9\u00e9n keer uitgevoerd per -count, waardoor dure setup- en cleanup-stappen slechts \u00e9\u00e9n keer worden uitgevoerd.<\/li>\n<li>De parameters voor het aanroepen van de functie en de resultaten blijven bestaan, zodat de compiler de volledige optimalisatie van de lusinhoud voorkomt.<\/li>\n<\/ul>\n<h3>Verbeterde finalizers<\/h3>\n<p> <noindex><\/p>\n<p>Nieuwe functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> is een afsluitmechanisme dat flexibeler, effici\u00ebnter en minder foutgevoelig is dan <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup koppelt een opruimfunctie aan een object, dat wordt uitgevoerd zodra het object niet meer toegankelijk is. In tegenstelling tot SetFinalizer kunnen echter meerdere opruimfuncties aan \u00e9\u00e9n object worden gekoppeld, opruimfuncties kunnen worden gekoppeld aan interne pointers, en opruimfuncties veroorzaken doorgaans geen lekken wanneer objecten een cyclus vormen, en opruimfuncties stellen het vrijgeven van het object of de objecten waarnaar het verwijst niet uit. Nieuwe code moet de voorkeur geven aan AddCleanup boven SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nieuw pakket weak<\/h3>\n<p> <noindex><\/p>\n<p>Nieuw pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> biedt zwakke pointers.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Zwakke pointers zijn een laag-niveau primitief dat is voorzien voor het cre\u00ebren van structuren die effectief geheugen gebruiken, zoals zwakke woordenboeken voor het koppelen van waarden, canonisatie woordenboeken voor alles dat niet wordt gedekt door het pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, en verschillende soorten caches. Ter ondersteuning van deze use-cases biedt deze release ook <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nieuw pakket crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Nieuw pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> implementaties van ML-KEM-768 en ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM is een post-kwantum sleuteldelingsmechanisme, voorheen bekend als Kyber en gespecificeerd in <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nieuwe pakketten crypto\/hkdf, crypto\/pbkdf2 en crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Nieuw pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implmenteert de op HMAC gebaseerde sleuteluitvoerfunctie \u201cExtract-and-Expand\u201d HKDF, zoals gedefinieerd in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nieuw pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implmenteert de op wachtwoord gebaseerde sleuteluitvoerfunctie PBKDF2, zoals gedefinieerd in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nieuw pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implmenteert de hashfunctie SHA-3 en SHAKE en cSHAKE functies voor uitbreidbare uitvoer, zoals gedefinieerd in <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Alle drie de pakketten zijn gebaseerd op eerder bestaande pakketten van golang.org\/x\/crypto\/....<\/p>\n<h3>FIPS 140-3 Compliance<\/h3>\n<p> <noindex><\/p>\n<p>Deze release omvat <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">een nieuwe set mechanismen voor het waarborgen van FIPS 140-3 compliance<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>De cryptografische module van Go is een set interne pakketten van de standaardbibliotheek die transparant worden gebruikt voor de implementatie van goedgekeurde FIPS 140-3 algoritmen. Toepassingen vereisen geen wijzigingen om de cryptografische module van Go voor goedgekeurde algoritmen te gebruiken.<\/p>\n<p> <noindex><\/p>\n<p>De nieuwe omgevingsvariabele GOFIPS140 kan worden gebruikt om de versie van de cryptografische module van Go voor gebruik in de build te kiezen. Nieuwe <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-instellingen<\/a> fips140 kan worden gebruikt om de FIPS 140-3 modus tijdens runtime in te schakelen.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 omvat de cryptografische module van Go versie v1.0.0, die momenteel wordt getest met een geaccrediteerde CMVP-laboratorium.<\/p>\n<h3>Nieuw experimenteel pakket testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Nieuw experimenteel pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> biedt ondersteuning voor het testen van concurrerende code.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> start een groep goroutines in een ge\u00efsoleerde \u2018bubble\u2019. In de bubble opereren functies van het pakket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">met behulp van de mutate-plugin, de vereiste tijdzone instellen en deze tijdstempel plaatsen in<\/a> op valse klokken.<\/li>\n<li>Functies <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> wachten tot alle goroutines zijn geblokkeerd in de huidige bubble.<\/li>\n<\/ul>\n<p>Details zijn te vinden in de documentatie van het pakket.<\/p>\n<p> <noindex><\/p>\n<p>Het synctest-pakket is experimenteel en kan worden ingeschakeld door GOEXPERIMENT=synctest in te stellen. De API van het pakket kan in toekomstige releases veranderen. In <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> kun je meer details vinden en feedback geven.<\/p>\n<p><\/noindex> <\/p>\n<h3>Minimale wijzigingen in de bibliotheek<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implementaties (*Writer.AddFS) in archive\/zip en archive\/tar schrijven nu de directoryheader voor een lege directory.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> voegt enkele functies toe die werken met iterators:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> geeft een iterator terug over de regels gescheiden door nieuwe lijnen in een byte-slice.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> geeft een iterator terug over alle sub-slices van de byte-slice, gescheiden door de scheidingstekens.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> geeft een iterator terug over de sub-slices van de byte-slice, gescheiden na elke optreden van de scheidingsteken.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> geeft een iterator terug over de sub-slices van de byte-slice rond reeksen spaties, zoals gedefinieerd door <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> geeft een iterator terug over de sub-slices van de byte-slice rond reeksen Unicode-codepunten die voldoen aan de predicaat.<\/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>Waarde die wordt teruggegeven <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> implementeren geen methoden meer voor NewCTR, NewGCM, NewCBCEncrypter en NewCBCDecrypter. Deze methoden waren niet gedocumenteerd en waren niet beschikbaar op alle architecturen. Nu moet de waarde <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> direct worden doorgegeven aan de bijbehorende functies <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. Op dit moment controleert crypto\/cipher nog steeds deze methoden op de waarden Block, ook al worden ze niet langer ondersteund door de standaardbibliotheek.<\/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>Nieuwe functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> geeft hij <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, die AES-GCM implementeert door een willekeurige eenmalige nonce te genereren tijdens Seal en deze aan het begin van de versleutelde tekst toe te voegen.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implementatie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, wordt teruggegeven <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> bij gebruik met <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> nu meerdere keren sneller op amd64 en 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> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> zijn nu verouderd. De OFB- en CFB-modi zijn niet-geauthenticeerd, waardoor actieve aanvallen het mogelijk maken om te manipuleren en de platte tekst te herstellen. Toepassingen wordt aangeraden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> in plaats daarvan te gebruiken. Als een niet-geauthenticeerde modus <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> vereist is, kan <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> in plaats daarvan worden gebruikt.<\/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> cre\u00ebert nu een deterministische handtekening volgens <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, als de bron van willekeurigheid nil is.<\/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>Waarde die wordt teruggegeven <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, implementeert nu ook het interface <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>Functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">Lezen<\/a> garandeert nu dat er geen mislukkingen zijn. Als Read een fout tegenkomt tijdens het lezen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, wordt het programma zonder waarschuwing be\u00ebindigd. Let op dat de standaard Reader altijd gedocumenteerd is om succesvol te werken, dus deze verandering zou alleen invloed moeten hebben op die programma's die de Reader-variabele overschrijven. Een uitzondering vormen Linux-kernels tot versie 3.17, waar de standaard Reader nog steeds \/dev\/urandom opent en kan falen.<\/p>\n<p><\/noindex> <\/p>\n<p>Op Linux 6.11 en later gebruikt Reader nu de systeemaanroep getrandom via vDSO. Dit is meerdere malen sneller, meestal voor kleine leesbewerkingen.<\/p>\n<p>Op OpenBSD gebruikt Reader nu arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Nieuwe functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Tekst<\/a> kan nu cryptografisch veilige willekeurige tekststrings genereren.<\/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> geeft nu een foutmelding terug als er een sleutel van minder dan 1024 bits wordt aangevraagd. Alle methoden Sign, Verify, Encrypt en Decrypt geven nu een foutmelding terug als ze worden gebruikt met een sleutel van minder dan 1024 bits. Dergelijke sleutels zijn onveilig en mogen niet worden gebruikt. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-instellingen<\/a> rsa1024min=0 herstelt het oude gedrag, maar de Go-ontwikkelaars raden aan dit alleen te doen indien nodig en alleen in tests, bijvoorbeeld door de regel \/\/go:debug rsa1024min=0 aan het testbestand toe te voegen. De nieuwe <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">bijvoorbeeld<\/a> GenerateKey biedt een eenvoudig te gebruiken standaard test sleutel van 2024 bits.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Het is nu veilig en effici\u00ebnter om <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> tot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute is nu sneller bij aanwezigheid van gedeeltelijk ingevulde <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, bijvoorbeeld bij het extraheren van een sleutel uit JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Het pakket wijst nu meer onjuiste sleutels af, zelfs wanneer Validate niet wordt aangeroepen, en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> kan nu nieuwe fouten teruggeven voor defecte willekeurige bronnen. Velden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> struct seccomp_data <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> worden nu gebruikt en gevalideerd, zelfs wanneer sommige waarden ontbreken. Er zijn ook wijzigingen aangebracht in crypto\/x509 voor het parseren en extraheren van RSA-sleutels, die hieronder worden beschreven.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> ondersteunen nu SHA-512\/224, SHA-512\/256 en SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> gebruikt nu een iets andere methode voor het genereren van de priv\u00e9-exponent (de Carmichael-functie in plaats van de Euler-functie). Zeldzame toepassingen die sleutels alleen uit priemgetallen recre\u00ebren, kunnen verschillende, maar compatibele resultaten genereren.<\/p>\n<p><\/noindex> <\/p>\n<p>Bewerkingen met publieke en private sleutels zijn nu tot twee keer sneller op wasm.<\/p>\n<h3>crypto\/sha*<\/h3>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha1\/\">crypto\/sha1<\/a>: waarde geretourneerd door <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> heeft nu ook de interface ge\u00efmplementeerd <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>: waarden geretourneerd door <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> heeft nu ook de interface ge\u00efmplementeerd <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>: waarden geretourneerd door <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> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, heeft nu ook de interface ge\u00efmplementeerd <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>Nieuwe functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> maakt het de gebruiker mogelijk om een functie uit te voeren met ingeschakelde, architectuur-specifieke functies die de onveranderlijkheid van bepaalde instructies met betrekking tot de tijd van gegevenswaarde waarborgen. Dit kan worden gebruikt om ervoor te zorgen dat de code die is gemaakt om te werken bij constante tijd niet is geoptimaliseerd door functies op het niveau van de processor op een manier dat het in variabele tijd werkt. Momenteel gebruikt WithDataIndependentTiming de PSTATE.DIT-bit op arm64 en doet verder niets op andere architecturen. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-instellingen<\/a> dataindependenttiming=1 schakelt de DIT-modus in voor het hele Go-programma.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Uitslag <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> moet volledig of helemaal niet met de invoer overlappen. Het vorige gedrag was onbepaald in andere gevallen, terwijl XORBytes nu een panic zal veroorzaken.<\/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>De TLS-server ondersteunt nu Encrypted Client Hello (ECH). Deze functie kan worden ingeschakeld door het veld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nieuwe post-quantum key exchange mechanisme <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> wordt nu ondersteund en standaard ingeschakeld wanneer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> nil is. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-instellingen<\/a> tlsmlkem=0 geeft de standaard terug.<\/p>\n<p><\/noindex> <\/p>\n<p>Ondersteuning voor de experimentele key exchange X25519Kyber768Draft00 is verwijderd.<\/p>\n<p> <noindex><\/p>\n<p>De volgorde van het sleuteluitwisselingsproces wordt nu volledig afgehandeld in het crypto\/tls-pakket. De volgorde <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> wordt nu genegeerd, en de inhoud wordt alleen gebruikt om te bepalen welke sleuteluitwisselingen in te schakelen wanneer het veld is ingevuld.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nieuw veld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> lijst de extensie-ID's op die zijn ontvangen in het Client Hello-bericht. Dit kan nuttig zijn om TLS-klanten te fingerprinten.<\/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-instellingen<\/a> x509sha1 is verwijderd. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> ondersteunt geen handtekeningen op basis van SHA-1 meer.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> implementeren nu de interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Het standaardveld voor certificaatbeleid is gewijzigd van <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> en een werkende opdracht krijgen. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. Bij het parseren van certificaten zullen beide velden worden ingevuld, maar bij het maken van certificaatbeleidsregels zullen deze worden genomen uit het veld Certificate.Policies in plaats van Certificate.PolicyIdentifiers. Deze wijziging kan worden teruggebracht <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">met de GODEBUG-instelling<\/a> x509usepolicies=0.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#CreateCertificate\">CreateCertificate<\/a> zal nu een serienummer genereren met behulp van een RFC 5280-compatibele methode bij het doorgeven van de sjabloon via het veld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, in plaats van te falen.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> ondersteunt nu beleidsvalidatie zoals gedefinieerd in RFC 5280 en RFC 9618. Het nieuwe veld <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> kan worden ingesteld op een aanvaardbare set van beleid <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Alleen ketens van certificaten met geldige beleidsgrafieken worden geretourneerd vanuit <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> geeft nu een fout terug in plaats van een onjuiste RSA-sleutel te extraheren. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> heeft geen foutterugkeer en het gedrag bij het verstrekken van onjuiste sleutels blijft onbepaald.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> gebruiken nu en valideren gecodeerde CRT-waarden, zodat ze onjuiste RSA-sleutels kunnen afwijzen die eerder zijn geaccepteerd. Het gebruik van <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG-instellingen<\/a> x509rsacrt=0 keert terug naar het herberekenen van CRT-waarden.<\/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>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> voegt ondersteuning toe voor het verwerken van symbolenversies in dynamische ELF-bestanden (Executable and Linkable Format). Nieuwe methode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> geeft een lijst van dynamische versies terug die in het ELF-bestand zijn gedefinieerd. Nieuwe methode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> geeft een lijst van dynamische versies terug die door dit ELF-bestand worden vereist en die zijn gedefinieerd in andere ELF-objecten. Tot slot geven nieuwe velden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> de versie van het symbool aan.<\/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>Twee nieuwe interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> zijn ge\u00efntroduceerd om een tekstuele of binaire weergave van een object aan een byte-slice toe te voegen. Deze interfaces bieden dezelfde functionaliteit als <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, maar in plaats van elke keer een nieuwe slice te alloceren, voegen ze gegevens rechtstreeks toe aan de bestaande slice. Deze interfaces worden nu ge\u00efmplementeerd door typen van de standaardbibliotheek die al TextMarshaler en\/of BinaryMarshaler implementeren.<\/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>Bij het bouwen zal het veld van de structuur met de nieuwe optie omitzero in de tag van de structuur worden weggelaten als de waarde nul is. Als het type veld een methode heeft IsZero() bool, zal deze worden gebruikt om te bepalen of de waarde nul is. Anders zal de waarde nul zijn als het <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">nulwaarde voor zijn type<\/a>. De omitzero-veldtag is schoner en minder foutgevoelig dan omitempty wanneer de bedoeling is nulwaarden over te slaan. In het bijzonder, in tegenstelling tot omitempty, slaat omitzero nul- <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> waarden over, wat een veelvoorkomende bron van problemen is.<\/p>\n<p><\/noindex> <\/p>\n<p>Als zowel omitempty als omitzero zijn opgegeven, zal het veld worden weggelaten als de waarde leeg of nul is (of beiden tegelijk).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> bevat nu ingebedde structuren om meer gedetailleerde foutmeldingen te bieden.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Alle data structuren go\/types, die de paren van methoden zoals Len() int en At(int) T onthullen, hebben nu ook methoden die iterators teruggeven, wat het mogelijk maakt om de code zoals dit te vereenvoudigen:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>Hier op:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Methoden: <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>: waarde geretourneerd door <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">Nieuw<\/a>, implementeert nu ook het interface <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>: waarden geretourneerd door <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">Nieuw<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, heeft nu ook de interface ge\u00efmplementeerd <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>: waarde geretourneerd door <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">Nieuw<\/a>, implementeert nu ook het interface <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>: waarden geretourneerd door <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> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, heeft nu ook de interface ge\u00efmplementeerd <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>: nieuwe functies <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> kunnen de hash van elke waarde berekenen die vergeleken kan worden. Dit maakt het mogelijk om iets te hashen dat als sleutel voor een Go woordenboek kan worden gebruikt.<\/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>Nieuwe <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> is een handler die nooit geactiveerd wordt en altijd zijn output weggooit.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">Level<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> implementeren nu het interface <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> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> implementeren nu het interface <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>: aanroepen van de verouderde hoog-niveau functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> hebben geen effect meer. Om het oude gedrag te herstellen kan men gebruiken <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">de GODEBUG-instelling<\/a> randseednop=0. Meer context in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">voorstel 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> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> implementeren nu het interface <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> gebruikt nu standaard MPTCP op systemen waar dit wordt ondersteund (voorlopig alleen Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> implementeren nu het interface <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>De beperking is veranderd <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> op ontvangen informatie antwoorden 1xx als reactie op de aanvraag. Eerder stopte dit de aanvraag en gaf een fout weer na het ontvangen van meer dan 5 antwoorden 1xx. Nu geeft dit alleen een fout weer als de totale grootte van alle antwoorden 1xx de configuratie-instelling overschrijdt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Bovendien, wanneer de aanvraag een hook heeft voor het volgen <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, is er nu geen beperking op het totale aantal antwoorden 1xx. De hook Got1xxResponse kan een fout retourneren om de aanvraag te stoppen.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Server<\/a> hebben nu een HTTP2-veld dat het configureren van de HTTP\/2 protocolinstellingen mogelijk maakt.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nieuwe velden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> bieden een eenvoudige manier om te configureren welke HTTP-protocollen de server of de client gebruiken.<\/p>\n<p><\/noindex> <\/p>\n<p>De server en client kunnen zo worden ingesteld dat ze onversleutelde verbindingen met HTTP\/2 ondersteunen.<\/p>\n<p> <noindex><\/p>\n<p>Wanneer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> bevat UnencrypterHTTP2, de server accepteert HTTP\/2 verbindingen op onversleutelde poorten. De server kan zowel HTTP\/1 als onversleuteld HTTP\/2 op dezelfde poort accepteren.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Wanneer <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> bevat UnencryptedHTTP2 en bevat geen HTTP1, het transport zal onversleuteld HTTP\/2 gebruiken voor adressen <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Als de transport is geconfigureerd om zowel HTTP\/1 als niet-gecodeerd HTTP\/2 te gebruiken, zal het HTTP\/1 gebruiken.<\/p>\n<p><\/noindex> <\/p>\n<p>Ondersteuning voor niet-gecodeerd HTTP\/2 maakt gebruik van 'HTTP\/2 met voorafgaande kennis' (RFC 9113, sectie 3.3). De verouderde header 'Upgrade: h2c' wordt niet ondersteund.<\/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\">Adres<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#AddrPort\">AdresPoort<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> implementeren nu interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> en <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> heeft nu ook de interface ge\u00efmplementeerd <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>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Huidig<\/a> kan nu worden gebruikt op Windows Nano Server. De implementatie is bijgewerkt om het gebruik van functies uit de NetApi32-bibliotheek, die ontbreekt in Nano Server, te vermijden.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Huidig<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Lookup\">Zoekopdracht<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">ZoekId<\/a> ondersteunen nu de volgende ingebouwde gebruikersservice-accounts:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>NT AUTHORITY\\SYSTEM<\/li>\n<li>NT AUTHORITY\\LOKALE DIENST<\/li>\n<li>NT AUTHORITY\\NETWERKDIENST<\/li>\n<\/ul>\n<p> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Huidig<\/a> is aanzienlijk versneld wanneer de huidige gebruiker is verbonden met een langzame domein, wat gebruikelijk is voor veel zakelijke gebruikers. Nu is de prestaties van de implementatie in de orde van milliseconden, vergeleken met de vorige implementatie die enkele seconden, zelfs minuten, kon duren voordat deze was voltooid.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Huidig<\/a> geeft nu de eigenaar van het proces terug wanneer de huidige thread zichzelf als een andere gebruiker voordoet. Voorheen gaf dit een foutmelding terug.<\/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> implementeren nu het interface <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>Functie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> is nu als verouderd verklaard. In de nieuwe code moet het systeempad voor het defini\u00ebren van de binaire 'go' worden geprefereerd en gebruik 'go env GOROOT' om GOROOT te bepalen.<\/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>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> voegt verschillende functies toe voor het werken met iterators:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> geeft een iterator terug bij regelgebroken strings in de string.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> geeft een iterator terug voor alle substrings van de string, gescheiden door de scheidingsteken.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> geeft een iterator terug voor substrings van de string, gescheiden na elke instantie van het scheidingsteken.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> geeft een iterator terug voor substrings van de string rond de reeksen spatie tekens, zoals gedefinieerd.<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> geeft een iterator terug voor substrings van de string rond reeksen van Unicode-codepunten die voldoen aan de predicaat.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Implementatie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> is gewijzigd om de prestaties te verbeteren, vooral voor wijzigingen in het woordenboek. Bijvoorbeeld, het is minder waarschijnlijk dat er concurrentie is voor wijzigingen in niet-overlappende verzamelingen in grote woordenboeken, en er is geen tijdsverzwaring meer nodig om de concurrerende belasting van een laag-dichte woordenboek te bereiken.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Als u problemen tegenkomt, stel dan GOEXPERIMENT=nosynchashtriemap in tijdens de bouw om terug te keren naar de oude implementatie en alstublieft, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">vul het probleemformulier in<\/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>Nieuwe methoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> geven de context terug die wordt geannuleerd na het voltooien van de test en v\u00f3\u00f3r het uitvoeren van de opruimfuncties.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nieuwe methoden <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> kunnen worden gebruikt om de werkdirectory te veranderen tijdens de uitvoering van de test of benchmark.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>Sjablonen ondersteunen nu range-over-func en range-over-int.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\/\">met behulp van de mutate-plugin, de vereiste tijdzone instellen en deze tijdstempel plaatsen in<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">Tijd<\/a> implementeren nu de interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> en <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Poorten<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Hoe het was <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">aangekondigd<\/a> in de release-opmerkingen van Go 1.23, vereist Go 1.24 kernel Linux versie 3.2 of later.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 is de laatste release die werkt op macOS 11 Big Sur. Go 1.25 zal macOS 12 Monterey of later vereisen.<\/p>\n<h3>WebAssembly<\/h3>\n<p>De compilerdirective go:wasmexport is toegevoegd aan Go-programma's om functies naar de WebAssembly-host te exporteren.<\/p>\n<p> <noindex><\/p>\n<p>In WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) ondersteunt Go 1.24 het bouwen van een Go-programma als <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> door de bouwvlag -buildmode=c-shared op te geven.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Meer typen zijn nu toegestaan als argument- of resultaattype voor functies go:wasmimport. In het bijzonder zijn bool, string, uintptr en pointers naar specifieke typen toegestaan (details zijn te vinden in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">de documentatie<\/a>), samen met 32-bits en 64-bits typen integers en floating point, en unsafe.Pointer, die al zijn toegestaan. Deze types zijn ook toegestaan als argument- of resultaattypes voor functies go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>Ondersteunende bestanden voor WebAssembly zijn verplaatst naar lib\/wasm vanuit misc\/wasm.<\/p>\n<p>De oorspronkelijke geheugengrootte is aanzienlijk verminderd, vooral voor kleine WebAssembly-toepassingen.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>De 32-bit Windows\/ARM-poort (GOOS=windows GOARCH=arm) is gemarkeerd als defect. Details staan in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Bron: <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.3 - 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\/nl\/blog\/news\/go-1-24\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\/nl\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}