Go 1.24

Go 1.24

Eng nei VerĂ«ffentlechung vun der Go Sprooch, Versioun 1.24, kĂ«nnt sechs MĂ©int duerno Go 1.23. DĂ©i meescht vun den Ännerungen sinn an der Ëmsetzung vun der Toolchain, Runtime a BibliothĂ©iken. WĂ©i Ă«mmer gĂ«tt d'VerĂ«ffentlechung Verspriechen vun Onbedenklechkeet Go 1. D'Sproochdesigner erwaarden datt bal all Go Programmer weider kompilĂ©ieren a lafen wĂ©i virdrun.

Sprooch Ännerungen

Go 1.24 Ă«nnerstĂ«tzt elo voll generesch Typ Aliasen: en Typ Alias ​​kann als deklarĂ©ierten Typ parametrisĂ©iert ginn. Detailer an Sprooch Spezifikatioune. Fir de Moment kann dĂ«s Fonktioun ausgeschalt ginn andeems Dir GOEXPERIMENT=noaliastypeparams setzt; WĂ©i och Ă«mmer, d'Aliastypeparams Optioun gĂ«tt am Go 1.25 gelĂ€scht.

Tools

Gitt Kommando

Go Moduler kĂ«nnen elo ausfĂŒhrbar OfhĂ€ngegkeete verfollegen mat der Tooldirektiv am go.mod. DĂ«st lĂ€scht de Besoin fir de frĂ©iere LĂ©isung fir Tools als eidel Importer an enger Datei ze addĂ©ieren dĂ©i typesch "tools.go" genannt gĂ«tt. De Go Tool Kommando kann elo dĂ«s Tools zousĂ€tzlech zu den Tools lafen, dĂ©i mat Go kommen. MĂ©i Informatioune fannt Dir op Dokumentatioun.

Den neien -Tool FĂ€ndel fir go get bewierkt datt Tool Direktiven an den aktuellen Modul fir dĂ©i spezifizĂ©iert Pakete bĂ€igefĂŒĂŒgt ginn, zousĂ€tzlech fir erfuerderlech Direktiven ze addĂ©ieren.

Nei Meta-Muster Tool bezitt sech op all Tools am aktuellen Modul. DĂ«st kann benotzt ginn fir se all iwwer de go get-Tool ze aktualisĂ©ieren, oder fir se an Ärem GOBIN-Verzeichnis iwwer de go install-Tool z'installĂ©ieren.

Executables erstallt iwwer Go Run an dat neit Go Tool Verhalen ginn elo am Go Build Cache cache. Dëst mécht widderholl Start méiglech wéinst dem verstÀerkte Cache. #69290.

D'go build and go install commands akzeptéieren elo den -json FÀndel, deen Build Output a Feeler als strukturéiert JSON Output op Standard Output bericht. Format Detailer, kuckt go help buildjson.

Ausserdeem, go test -json bericht elo d'Ausgab a bauen Feeler am JSON, gemëscht mam Testresultat JSON. Si kënnen duerch déi nei Action-Typen ënnerscheeden, awer wa se Probleemer am Testintegratiounssystem verursaachen, kënnt Dir zréck op den Textausgang vum Build via GODEBUG Setup gotestjsonbuildtext=1.

DĂ©i nei GOAUTH Ëmfeld Variabel bitt e flexibele Wee fir privat Moduler ze autorisĂ©ieren. Dir kĂ«nnt Detailer gesinn an go help goauth.

De Go Build Kommando ass elo installĂ©iert Versioun vum Haaptmodul an der kompilĂ©ierter BinĂ€r, basĂ©iert op engem Tag an / oder enger Versiounskontrollverpflichtung. D'+dreckeg Suffix gĂ«tt bĂ€igefĂŒĂŒgt wann et net engagĂ©iert Ännerungen sinn. De -buildvcs=falsche FĂ€ndel ka benotzt ginn fir Versiounskontrollinformatioun aus der BinĂ€r ze lĂ€schen.

Nei GODEBUG Setup toolchaintrace=1 kann elo benotzt ginn fir den Toolchain Selektiounsprozess am Go Kommando ze verfolgen.

Cgo

Cgo ënnerstëtzt nei Annotatiounen fir C Funktiounen fir d'Runtime Performance ze verbesseren. #cgo noescape cFunctionName seet dem Compiler datt d'Erënnerung un d'C Funktioun cFunctionName net entkomm ass. #cgo nocallback cFunctionName seet dem Compiler datt d'C Funktioun cFunctionName keng Go Funktiounen zréckrufft. Méi Informatiounen fannt Dir op cgo Dokumentatioun.

Cgo refuséiert de Moment Uruff un eng C Funktioun ze kompiléieren déi verschidde inkompatibel Deklaratiounen huet. Zum Beispill, wann f als ongëlteg f (int) an ongëlteg f (duebel) deklaréiert ass, mellt cgo e Feeler anstatt méiglecherweis eng ongëlteg Uruffsequenz f (0) ze generéieren. Nei an dëser Verëffentlechung ass eng verbessert Detektioun vun dësem Fehlerbedingung wann inkompatibel Deklaratioune a verschiddene Dateien erschéngen. #67699.

Objdump

Den objdump Tool ënnerstëtzt elo Demontage op 64-Bit LoongArch (GOARCH = loong64), RISC-V (GOARCH = riscv64), a S390X (GOARCH = s390x).

Vet

Den neien Testanalysator bericht allgemeng Feeler am Test, Fuzzer, Benchmark, a BeispillerklĂ€rungen an Testsuiten, sou wĂ©i falsch formĂ©iert Nimm, ongĂ«lteg ËnnerschrĂ«ften oder Beispiller dĂ©i net existent IdentifizĂ©ierer dokumentĂ©ieren. E puer vun dĂ«se Feeler kĂ«nnen Tester versoen.

Den existente Printf Parser mellt elo Diagnostik fir Uruff vun der Form fmt.Printf(s), wou s eng net-konstante Formatstring ouni aner Argumenter ass. Esou Uriff si bal ëmmer e Feeler, well de WÀert vun s kann de % Charakter enthalen; benotzen fmt.Print amplaz. 60529. Dëse Scheck tendéiert Saachen am existente Code ze fannen, an ass dofir nëmmen ugewannt wann d'Sproochversioun (wéi spezifizéiert vun der go-Direktiv vun der go.mod Datei oder den `//go:build` Kommentaren) op d'mannst Go 1.24 ass, fir ze vermeiden datt laang Integratiounspaus beim Upgrade op d'Go 1.24 Toolchain verursaachen.

Den existente Buildtag Analyser bericht elo Diagnostik wann et e falsche Buildtag gëtt eeler Versioun bauen Limitatioun Gitt an d' //go:build Direktiv. Zum Beispill, //go:build go1.23.1 bezitt sech op e Punkt Verëffentlechung; benotzt amplaz //go:build go1.23. #64127.

Den existente Copylock Analyser bericht elo eng Diagnostik wann eng Variabel an enger Triple "for" Loop deklaréiert gëtt, sou wéi fir i := iter (); gemaach (ech); i = next(i) { 
 }, enthÀlt sync.Locker, sou wéi sync.Mutex. Go 1.22 geÀnnert d'Behuele vun esou Schleifen fir eng nei Variabel fir all Iteratioun ze kreéieren, d'WÀerter vun der viregter Iteratioun kopéieren; Dës Kopie ass net sécher fir Schleisen. #66387.

GOCACHEPROG

Den internen cmd/go binĂ€ren an Testcachemechanismus kann elo duerch Kannerprozesser implementĂ©iert ginn, dĂ©i e JSON-Protokoll tĂ«scht dem cmd/go-Tool an dem Kandprozess, deen vun der GOCACHEPROG Ëmfeldvariabel genannt gĂ«tt, implementĂ©iert ginn. Virdrun war et fir GOEXPERIMENT. Detailer vum Protokoll kĂ«nne gesi ginn Dokumentatioun.

ZĂ€it vun Ofschloss

Verschidde Runtime Performance Verbesserungen hunn d'CPU Overhead Ă«m 2-3% am DuerchschnĂ«tt iwwer eng Rei vu representativen Benchmarks reduzĂ©iert. D'Resultater kĂ«nnen ofhĂ€ngeg vun der Applikatioun variĂ©ieren. DĂ«s Verbesserungen och eng nei gebaut-an Kaart Ëmsetzung basĂ©iert op schwedesch DĂ«scher, mĂ©i efficace Allocatioun vun klengen Objet ErĂ«nnerung, an eng nei intern Runtime Ëmsetzung vun der mutex.

Déi nei agebaute Kaartimplementatioun an déi nei intern Runtime Mutex kënnen ausgeschalt ginn andeems Dir GOEXPERIMENT = noswissmap an GOEXPERIMENT = nospinbitmutex bei der BauzÀit setzt, respektiv.

Compiler

De Compiler huet scho verbueden nei Methoden mat EmpfÀngertypen ze definéieren déi vu cgo generéiert goufen, awer et war méiglech dës Restriktioun iwwer en Typalias ëmzegoen. Go 1.24 mellt elo ëmmer e Feeler wann den EmpfÀnger e cgo-generéierten Typ bezeechent, entweder direkt oder indirekt (iwwer en Typalias).

Linker

De Linker generéiert elo e GNU Build Identifizéierer (ELF Entrée NT_GNU_BUILD_ID) op ELF Plattformen an en UUID (Mach-O Luede Kommando LC_UUID) op macOS par défaut. D'Build ID oder UUID ass ofgeleet vun der Go Build ID. Dëst kann ausgeschalt ginn mat dem -B none Linker FÀndel, oder iwwerschratt mat dem -B 0xNNNN Linker FÀndel mat engem Benotzer-spezifizéierte hexadezimale WÀert.

Promotioun

Wéi gesot an Gitt 1.22 Verëffentlechungsnotizen, Go 1.24 erfuerdert elo Go 1.22.6 oder méi spéit fir installéiert ze ginn. D'Entwéckler erwaarden datt Go 1.26 e Punkt Verëffentlechung vu Go 1.24 oder méi spéit erfuerdert fir erausgerullt ze ginn.

Standard Bibliothéik

Verzeechnes-limitéiert Dateisystem Zougang

Neien Typ os.root Bitt d'FÀegkeet fir Dateiesystemoperatioune bannent engem spezifesche Verzeechnes auszeféieren.

Funktioun os.OpenRoot mĂ©cht den Dossier op a geet zrĂ©ck os.root. Methoden op os.root Bedreiwen an deem Verzeechnes an erlaben net WeeĂ«r op Plazen ausserhalb vum Verzeechnes ze referenzĂ©ieren, och dĂ©i, dĂ©i symbolesch Linken ausserhalb vum Verzeechnes verfollegen. D'Methoden op os.Root reflektĂ©ieren dĂ©i meescht Dateiesystemoperatiounen dĂ©i am OS Package verfĂŒgbar sinn, dorĂ«nner z.B. os.Root.Open, os.Root.Create, os.Root.Mkdir Đž os.Root.Stat.

Nei Benchmark Feature

Benchmarks kënnen elo eng méi séier, manner Feeler-ufÀlleg Method benotzen testing.B.Loop iwwer e Benchmark ze iteréieren wéi fir b.Loop() { 
 } amplaz vun den typesche Schleifstrukturen déi bN involvéieren wéi fir Range bN Dëst bitt zwee bedeitend Virdeeler:

  • D'Benchmarkfunktioun gĂ«tt exakt eemol pro -count ausgefouert, sou datt dĂ©i deier Setup- a BotzschrĂ«tt nĂ«mmen eemol ausgefouert ginn.
  • D'Funktioun Call Parameteren a Resultater liewen weider, verhĂ«nnert datt de Compiler de Loopkierper komplett optimĂ©iert.

Verbesserte Finalisateuren

Nei Feature runtime.AddCleanup ass e FĂ€erdegstellungsmechanismus dee mĂ©i flexibel, mĂ©i effizient a manner Feeler ufĂ€lleg ass wĂ©i runtime.SetFinalizer. AddCleanup befestegt eng Botzfunktioun un en Objet deen ausgefouert gĂ«tt soubal den Objet net verfĂŒgbar ass. WĂ©i och Ă«mmer, am GĂ©igesaz zu SetFinalizer, kĂ«nne verschidde BotzmĂ«ttelen un engem eenzegen Objet befestegt ginn, BotzmĂ«ttelen kĂ«nnen un intern Zeeche befestegt ginn, BotzmĂ«ttelen verursaachen net typesch Leck wann Objeten en Zyklus bilden, a BotzmĂ«ttelen verzögeren net d'Deallokatioun vum Objet oder Objeten op et weist. Neie Code sollt AddCleanup iwwer SetFinalizer lĂ©iwer maachen.

Neie schwaache Pak

Neie Pak schwaach stellt schwaach Hiweiser.

Schwaach Zeeche sinn e Primitiv op nidderegen Niveau zur VerfĂŒgung gestallt fir ErĂ«nnerungseffizient Strukturen ze kreĂ©ieren wĂ©i schwaach Dictionnairen fir WĂ€erter ze kartĂ©ieren, KanonikalisĂ©ierungsdictionnairen fir alles wat net vun engem Package ofgedeckt ass. eenzel, a verschidden Zorte vu Cache. Fir dĂ«s BenotzungsfĂ€ll z'Ă«nnerstĂ«tzen, gĂ«tt dĂ«s VerĂ«ffentlechung och runtime.AddCleanup Đž maphash.VerglĂ€ichbar.

Neie Krypto / mlkem Package

Neie Pak krypto/mlkem implementéiert ML-KEM-768 an ML-KEM-1024.

ML-KEM ass e post-quantum Schlësselaustauschmechanismus, fréier bekannt als Kyber a spezifizéiert an FIPS 203.

Nei Packagen crypto/hkdf, crypto/pbkdf2 a crypto/sha3

Neie Pak krypto/hkdf implementéiert d'HMAC-baséiert "Extract-and-Expand" Schlëssel Derivatiounsfunktioun HKDF wéi definéiert an RFC 5869.

Neie Pak crypto/pbkdf2 implementéiert d'Passwuert-baséiert Schlëssel Derivatiounsfunktioun PBKDF2 wéi definéiert an RFC 8018.

Neie Pak krypto/sha3 implementéiert d'SHA-3 Hash Funktioun an d'SHAKE an cSHAKE erweiterbar Ausgangsfunktiounen wéi definéiert an FIPS 202.

All drÀi Packagen baséieren op déi existent golang.org/x/crypto/
 Packagen.

FIPS 140-3 Konformitéit

Dës Verëffentlechung enthÀlt eng nei Rei vu Mechanismen fir FIPS 140-3 Konformitéit ze garantéieren.

De Go Krypto Modul ass eng Rei vun intern Standard BibliothĂ©ik Packagen dĂ©i transparent benotzt gi fir FIPS 140-3 approuvĂ©iert Algorithmen Ă«mzesetzen. Uwendungen erfuerderen keng Ännerungen fir de Go Krypto-Modul fir guttgeheescht Algorithmen ze benotzen.

DĂ©i nei Ëmfeldvariabel GOFIPS140 kann benotzt ginn fir d'Versioun vum Go Krypto-Modul ze wielen fir an engem Build ze benotzen. Nei GODEBUG Setup fips140 ka benotzt ginn fir de FIPS 140-3 Modus beim Runtime z'aktivĂ©ieren.

Go 1.24 enthÀlt de Go Krypto Modul v1.0.0, deen am Moment mat engem CMVP-akkreditéierte Labo getest gëtt.

Nei experimentell Package Testen / Synctest

Neien experimentellen Package testen / synctest Bitt ËnnerstĂ«tzung fir glĂ€ichzĂ€iteg Code ze testen.

  • Funktioun synctest.run leeft eng Grupp vu Goroutinen an enger isolĂ©ierter "Bubble". An der Bubble vun der Package Funktioun ZĂ€it op falsch Aueren operĂ©ieren.
  • Functions synctest.wait waart bis all Goroutine an der aktueller Bubble blockĂ©iert sinn.

Detailer kënnen an der Package Dokumentatioun fonnt ginn.

De Synctest Package ass experimentell a muss aktivĂ©iert ginn andeems Dir GOEXPERIMENT=synctest setzt. De Package API kann an zukĂŒnfteg VerĂ«ffentlechungen Ă€nneren. IN #67434 Dir kĂ«nnt mĂ©i Detailer gesinn a Feedback ginn.

Kleng Ännerungen an der BibliothĂ©ik

Archiv

D'(*Writer.AddFS) Implementatiounen am Archiv/Zip an Archiv/Tar schreiwen elo den Verzeechnesheader fir en eidele Verzeichnis.

Bytes

Package Bytes fĂŒĂŒgt verschidde Funktiounen un dĂ©i mat Iteratoren funktionnĂ©ieren:

  • Linnen GĂ«tt en Iterator iwwer nei Linn getrennte Strings an engem Byte Slice zrĂ©ck.
  • SplitSeq gĂ«tt en Iterator iwwer all Subslice vun engem Byte Slice zrĂ©ck, getrennt vun engem Separator.
  • SplitAfterSeq gĂ«tt en Iterator iwwer d'Subslices vun engem Byte Slice zrĂ©ck, opgedeelt no all Optriede vum Separator.
  • FieldsSeq gĂ«tt en Iterator iwwer Subslice vun engem Byte Slice ronderĂ«m Sequenze vu Raumzeechen zrĂ©ck, wĂ©i definĂ©iert unicode.IsSpace
  • FieldsFuncSeq gĂ«tt en Iterator iwwer Subslice vun engem Byte Slice ronderĂ«m Sequenzen vun Unicode Code Punkten zrĂ©ck, dĂ©i e PrĂ€dikat erfĂ«llen.

krypto/aes

Retour WĂ€ert NewChipher implementĂ©iert net mĂ©i d'NewCTR, NewGCM, NewCBCEncrypter, an NewCBCDecrypter Methoden. DĂ«s Methode waren net dokumentĂ©iert an net op all Architekturen verfĂŒgbar. Elo d'Bedeitung Block muss direkt un dĂ©i entspriechend Funktiounen weiderginn Krypto / Chiffer. Momentan iwwerprĂ©ift d'Krypto / Chiffer nach Ă«mmer dĂ«s Methoden op BlockwĂ€erter, och wann se net mĂ©i vun der StandardbibliothĂ©ik Ă«nnerstĂ«tzt ginn.

Krypto / Chiffer

Nei Feature NewGCMWithRandomNonce geet zréck AEAD, déi AES-GCM implementéiert andeems en eng zoufÀlleg Nonce wÀhrend Seal generéiert an et zum Chiffertext virbereet.

Ëmsetzung bĂ€iginn, zrĂ©ckkomm NewCTR wann benotzt mat krypto/aes elo e puer Mol mĂ©i sĂ©ier op amd64 an arm64.

NeiOFB, NewCFBEncrypter О NewCFBDecrypter sinn elo als obsolet deklaréiert. OFB an CFB Modi sinn net authentifizéiert, wat allgemeng aktiv Attacke erlaabt Kloertext ze manipuléieren an ze recuperéieren. Uwendungen si recommandéiert ze benotzen AEAD am Retour. Wann onauthentifizéiert Modus bÀiginn néideg, ka benotzt ginn NewCTR am Retour.

krypto/ecdsa

PrivateKey.Sign schaaft elo eng deterministesch ËnnerschrĂ«ft no RFC 6979, wann d'Zoufallsquell null ass.

krypto/md5

Retour WÀert md5.nei, implementéiert elo och den Interface encoding.binaryappender.

krypto/rand

Funktioun Weiderliesen elo garantĂ©iert keng Feeler. Wann Liesen e Feeler beim Liesen begĂ©int Reader, wĂ€ert de Programm permanent ophalen. Bedenkt datt de Standard Reader dokumentĂ©iert ass fir Ă«mmer erfollegrĂ€ich ze schaffen, sou datt dĂ«s Ännerung nĂ«mmen Programmer beaflosst dĂ©i d'Reader Variabel iwwerschreiden. Eng Ausnahm ass Linux Kernel virum 3.17, wou den Default Reader nach Ă«mmer /dev/urandom opmaacht a ka feelen.

Op Linux 6.11 a méi spéit benotzt Reader elo de getrandom System Uruff iwwer vDSO. Dëst ass e puer Mol méi séier, normalerweis fir kleng Liesungen.

Op OpenBSD Reader benotzt elo arc4random_buf(3).

Nei Feature Text kann elo cryptographically sécher zoufÀlleg Text Saiten generéieren.

Krypto/rsa

GenerateKey gëtt elo e Feeler zréck wann eng SchlëssellÀngt vu manner wéi 1024 Bits gefrot gëtt. All Zeechen, Verifizéieren, Verschlësselte, an Decrypt Methoden ginn elo e Feeler zréck wann se mat enger Schlësselgréisst manner wéi 1024 Bit benotzt. Esou Schlëssele sinn onsécher a sollen net benotzt ginn. GODEBUG opsetzen rsa1024min=0 restauréiert dat alt Verhalen, awer d'Go Entwéckler recommandéieren dëst nëmmen wann néideg an nëmmen an Tester ze maachen, zum Beispill andeems Dir d'Linn //go:debug rsa1024min=0 an d'Testdatei bÀidréit. Nei Beispill GenerateKey bitt en einfach ze benotzen Standard 2024-Bit Testschlëssel.

Et ass elo méi sécher a méi effizient ze ruffen PrivateKey.Precompute ze PrivateKey.Validéieren. Precompute ass elo méi séier a PrÀsenz vun deelweis gefëllt Precomputed Values, zum Beispill wann Dir e Schlëssel aus JSON extrahéiert.

De Package refusĂ©iert elo mĂ©i ongĂ«lteg SchlĂ«sselen och wann Validate net genannt gĂ«tt, an GenerateKey kann elo nei Feeler fir gebrach randomness Quellen zrĂ©ck. Felder Primes Đž Virberechent Strukturen Privat SchlĂ«ssel ginn elo benotzt a validĂ©iert och wann e puer WĂ€erter fehlen. Et ginn och Ännerunge fir Krypto/x509 fir RSA-SchlĂ«sselen ze analysĂ©ieren an ze extrahieren, hei Ă«nnen beschriwwen.

ZeechenPKCS1v15 О Verifizéiert PKCS1v15 ënnerstëtzt elo SHA-512/224, SHA-512/256 an SHA-3.

GenerateKey benotzt elo eng liicht aner Method fir de private Exponent ze generéieren (Carmichael Funktioun amplaz Euler Funktioun). Selten Uwendungen déi extern Schlësselen aus nëmmen Prime Zuelen regeneréieren kënnen ënnerschiddlech awer kompatibel Resultater produzéieren.

Operatiounen op ëffentlechen a private Schlësselen sinn elo bis zu zweemol méi séier op wasm.

crypto/sha*

Krypto / subtile

Nei Feature WithDataIndependentTiming erlaabt de Benotzer eng Funktioun auszeféieren mat Architektur-spezifesch Fonctiounen aktivéiert, datt sécherstellen, datt bestëmmte Instruktioune relativ zu der ZÀit vun der Daten WÀert net geÀnnert ginn. Dëst kann benotzt ginn fir sécherzestellen datt de Code geschriwwe gëtt fir a konstanter ZÀit ze lafen net duerch Prozessorniveaufunktiounen optimiséiert gouf sou datt et a variabelen ZÀit leeft. Am Moment benotzt WithDataIndependentTiming de PSTATE.DIT Bit op arm64 a mécht nÀischt op all aner Architekturen. GODEBUG opsetzen dataindependenttiming = 1 aktivéiert den DIT Modus fir de ganze Go Programm.

Konklusioun XORBytes muss komplett oder guer net mam Input iwwerlappen. Virdrun war d'Verhalen soss net definéiert, wÀrend XORBytes elo panikéieren.

Krypto/tls

Den TLS Server ënnerstëtzt elo Encrypted Client Hello (ECH). Dës Fonktioun kann aktivéiert ginn andeems Dir am Feld ausfëllt. Config.EncryptedClientHelloKeys.

En neie Post-Quantum Key Exchange Mechanismus X25519MLKEM768 elo ënnerstëtzt an aktivéiert Par défaut wann Config.CurvePreferences ass null. GODEBUG opsetzen tlsmlkem=0 gëtt Standard zréck.

ËnnerstĂ«tzung fir den experimentellen X25519Kyber768Draft00 SchlĂ«sselaustausch gouf gelĂ€scht.

D'Schlësselaustauschbestellung gëtt elo ganz vum Krypto/tls Package gehandhabt. Uerdnung Config.CurvePreferences gëtt elo ignoréiert an den Inhalt gëtt nëmme benotzt fir ze bestëmmen wéi eng Schlësselaustausch mat abegraff sinn wann d'Feld ausgefëllt ass.

Neit Feld ClientHelloInfo.Erweiterungen Listt d'Lëscht vun den Extensiounsidentifizéierer, déi am Client Hallo Message kritt goufen. Dëst kann nëtzlech sinn fir Fangerofdréck TLS Clienten.

krypto/x509

GODEBUG opsetzen x509sha1 gouf gelĂ€scht. Certification.Verify Ă«nnerstĂ«tzt net mĂ©i SHA-1 basĂ©iert ËnnerschrĂ«ften.

OID implementéiert elo Interfaces encoding.binaryappender О encoding.TextAppender.

D'Standard Zertifikat Politikfeld gouf geĂ€nnert vun Certificate.PolicyIdentifiers op Zertifikat.Politik. Beim Parsing vun Zertifikater ginn dĂ©i zwee Felder populĂ©iert, awer wann Dir eng Zertifikatpolitik erstellt, gi se aus dem Feld Certificate.Policies amplaz Certificate.PolicyIdentifiers geholl. DĂ«s Ännerung kann zrĂ©ckgesat ginn. GODEBUG Setup x509usepolicies=0.

Erstellt Certificat wÀert elo eng Seriennummer generéieren mat enger RFC 5280 konform Method wann Dir e Schablounfeld passéiert Certificate.SerialNumber null, amplaz Crash.

Zertifikat.Verifizéieren ënnerstëtzt elo d'Politikvalidatioun wéi am RFC 5280 an RFC 9618 definéiert. Neit Feld VerifyOptions.CertificatePolicies kann op eng akzeptabel Formatioun vu Politik gesat ginn OIDs. Nëmmen Zertifikat Ketten mat valabel Politik Grafiken ginn zréck aus Zertifikat.Verifizéieren.

MarshalPKCS8PrivateKey gĂ«tt elo e Feeler zrĂ©ck anstatt en ongĂŒlteg RSA SchlĂ«ssel zrĂ©ckzekommen. (MarshalPKCS1PrivateKey huet kee Feeler zrĂ©ck a sĂ€i Verhalen wann ongĂ«lteg SchlĂ«ssele geliwwert ginn bleift ondefinĂ©iert.)

ParsePKCS1PrivateKey О ParsePKCS8PrivateKey elo benotzt a validéieren encoded CRT WÀerter, sou kann ongëlteg RSA Schlësselen refuséieren déi virdrun akzeptéiert goufen. Benotzung GODEBUG Astellungen x509rsacrt = 0 geet zréck op d'Recalculation vun CRT WÀerter.

debug/elf

Package debug/elf FĂŒĂŒgt ËnnerstĂ«tzung fir d'Handhabung vun Symbolversioune an dynamesche ELF (AusfĂ©ierbar a Linkbar Format) Dateien. Nei Method File.DynamicVersions Gitt eng LĂ«scht vun dynamesche Versiounen zrĂ©ck, dĂ©i an enger ELF Datei definĂ©iert sinn. Nei Method File.DynamicVersionNeeds Gitt eng LĂ«scht vun dynamesche Versiounen zrĂ©ck, dĂ©i vun dĂ«ser ELF-Datei erfuerderlech sinn, dĂ©i an aneren ELF-Objeten definĂ©iert sinn. Endlech, nei Felder Symbol.HasVersion Đž Symbol.VersionIndex uginn der Versioun vum Symbol.

Zeechesaatz

Zwee nei Interfaces TextAppender Đž BinaryAppender goufen agefouert fir en Text oder binĂ€re Representatioun vun engem Objet op eng Byte Slice ze addĂ©ieren. DĂ«s Interfaces bidden dĂ©iselwecht FunktionalitĂ©it wĂ©i TextMarshaler Đž Binary Marshaler, awer amplaz all KĂ©ier eng nei Slice ze verdeelen, fĂŒgen se Daten direkt un eng bestehend Slice un. DĂ«s SchnĂ«ttplazen sinn am Moment duerch Standard BibliothĂ©ik Typen implementĂ©iert dĂ©i schonn TextMarshaler an / oder BinaryMarshaler implementĂ©ieren.

encoding/json

Wann Dir baut, gëtt e Strukturfeld mat der neier Omitzero-Optioun am Strukturfeld-Tag ausgeliwwert wann sÀi WÀert null ass. Wann den Terrain Typ huet eng IsZero () bool Method, et gëtt benotzt ginn ze bestëmmen, ob de WÀert null ass. Soss gëtt de WÀert null wann et null WÀert fir seng Zort. Den Omitzero Feldtag ass méi propper a manner Feeler-ufÀlleg wéi Omitempty wann d'Absicht ass null WÀerter ofzeginn. Besonnesch, am Géigesaz zu der Omitempty, verléisst omitzero Nullen ZÀit.ZÀit WÀerter, déi eng gemeinsam Quell vu Problemer ass.

Wann souwuel Omitempty an Omitzero spezifizéiert sinn, gëtt d'Feld ausgeliwwert wann de WÀert eidel oder null ass (oder béid).

UnmarshalTypeError.Field enthÀlt elo agebaute Strukturen fir méi detailléiert Fehlermeldungen ze bidden.

goen / Zorte

All go/types Datestrukturen déi Sequenzen vu Methodepaaren aussiichten, wéi Len() int an At(int) T, hunn elo och Methoden déi Iteratoren zréckginn, wat méi einfache Code wéi dësen erlaabt:

params := fn.Type.(*types.Signature).Params() fir i := 0; i < params.Len(); i++ { use(params.At(i)) }

Op dëser:

for param := range fn.Signature().Params().Variables() { use(param) }

Methoden: Interface.EmbeddedTypes Interface.ExplicitMethoden Interface.Methoden MethodSet.Methoden Benannt.Methoden Ëmfang.Kanner Struktur.Felder Tuple.Variablen TypeList.Types TypeParamList.TypeParams Gewerkschaft.BegrĂ«ffer

hash/*

log/slog

Nei DiscardHandler ass en Handler deen ni aktivéiert ass an ëmmer seng Ausgab verwerft.

Niveau О LevelVar elo den Interface ëmsetzen encoding.TextAppender.

mathematesch/*

net

Lauschtert Condig benotzt elo MPTCP als Standard op Systemer wou et ënnerstëtzt gëtt (aktuell nëmmen Linux).

IP implementéiert elo den Interface encoding.TextAppender.

net/http

D'Restriktioun huet geĂ€nnert Transport op dĂ©i kritt 1xx InformatiounsÄntwerten als Äntwert op d'Ufro. Virdru gĂ©if dĂ«st d'Ufro stoppen an e Feeler zrĂ©ckginn nodeems se mĂ©i wĂ©i 5 1xx Äntwerte kritt hunn. DĂ«st gĂ«tt elo nĂ«mmen e Feeler zrĂ©ck wann d'GesamtgrĂ©isst vun allen 1xx Äntwerten d'Konfiguratiounsastellung iwwerschreift Transport.MaxResponseHeaderBytes.

Och wann eng Ufro e Tracking Haken huet net/http/httptrace.ClientTrace.Got1xxResponse, elo gĂ«tt et keng Limit fir d'Gesamtzuel vun den Äntwerten 1xx. De Got1xxResponse Hook kann e Feeler zrĂ©ckginn fir d'Ufro ze stoppen.

Transport Đž Server hunn elo en HTTP2 Feld dat Konfiguratioun vun HTTP / 2 Protokoll Astellunge erlaabt.

Nei Felder Server.Protokoller О Transport.Protokoller bitt en einfache Wee fir ze konfiguréieren wéi eng HTTP-Protokoller de Server oder Client benotzt.

De Server an de Client kënne konfiguréiert ginn fir onverschlësselte HTTP/2 Verbindungen z'ënnerstëtzen.

Wéini Server.Protokoller enthÀlt UnencrypterHTTP2, de Server akzeptéiert HTTP/2 Verbindungen op onverschlësselte Ports. De Server kann souwuel HTTP/1 an onverschlësselte HTTP/2 am selwechten Hafen akzeptéieren.

Wéini Transport.Protokoller enthÀlt UnencryptedHTTP2 an enthÀlt keen HTTP1, den Transport benotzt onverschlësselte HTTP/2 fir Adressen http://. Wann en Transport konfiguréiert ass fir souwuel HTTP/1 an onverschlësselte HTTP/2 ze benotzen, benotzt en HTTP/1.

ËnnerstĂ«tzung fir onverschlĂ«sselte HTTP/2 benotzt "HTTP/2 mat Forward-Learning" (RFC 9113, Sektioun 3.3). Den ofgeschniddene Header "Upgrade: h2c" gĂ«tt net Ă«nnerstĂ«tzt.

net/netip

Addr, AdrPort О PrÀfix elo Interfaces implementéieren encoding.binaryappender О encoding.TextAppender.

net/url

URL implementéiert elo och den Interface encoding.binaryappender.

os / Benotzer

Op Windows aktuell kann elo am Windows Nano Server benotzt ginn. D'Implementatioun gouf aktualiséiert fir d'Benotzung vu Funktiounen aus der NetApi32 Bibliothéik ze vermeiden, déi vum Nano Server fehlt.

Op Windows aktuell, Opfaassung О LookupId ënnerstëtzt elo déi folgend agebaute Benotzerservicekonten:

  • NT AUTHORITY SYSTEM
  • NT AUTHORITYLOCAL SERVICE
  • NT AUTHORITYNETWORK SERVICE

Op Windows aktuell gouf wesentlech beschleunegt wann den aktuelle Benotzer mat engem luesen Domain ugeschloss ass, wat e gemeinsame Fall fir vill Firme Benotzer ass. D'Performance vun der neier Implementatioun ass elo an der Uerdnung vu Millisekonnen, am Verglach zu der viregter Implementatioun, déi e puer Sekonnen, souguer Minutten, daueren kann.

Op Windows aktuell gëtt elo de Benotzer vum Prozessbesëtzer zréck wann den aktuelle Fuedem en anere Benotzer impersonéiert. Virdrun huet dëst e Feeler zréckginn.

regexp

Regexp implementéiert elo den Interface encoding.TextAdapter.

Course

Funktioun GOROOT ass elo ofgeschaaft. An mĂ©i neien Ëmfeld, sollt Dir lĂ©iwer de Systemwee benotze fir de "goen" BinĂ€r ze definĂ©ieren, a benotzt go env GOROOT fir GOROOT ze definĂ©ieren.

thongs

Package thongs fĂŒĂŒgt verschidde Funktiounen un fir mat Iteratoren ze schaffen:

  • Linnen GĂ«tt en Iterator iwwer nei Linn getrennte Linnen an enger String zrĂ©ck.
  • SplitSeq gĂ«tt en Iterator zrĂ©ck iwwer all Ënnerstringen vun enger String getrennt vun engem Separator.
  • SplitAfterSeq gĂ«tt en Iterator iwwer Substrings vun enger String zrĂ©ck, opgedeelt no all Optriede vum Separator.
  • FieldsSeq gĂ«tt en Iterator iwwer Substrings vun enger String Ă«m Sequenzen vu Whitespace Charaktere zrĂ©ck, wĂ©i definĂ©iertunicode.IsSpace
  • FieldsFuncSeq Gitt en Iterator zrĂ©ck iwwer Substrings vu String ronderĂ«m Sequenzen vun Unicode Code Punkten dĂ©i e PrĂ€dikat erfĂ«llen.

synchroniséiert

Ëmsetzung sync.map gouf geĂ€nnert fir d'Performance ze verbesseren, besonnesch fir Wierderbuch Ännerungen. Zum Beispill, disjoint Set Change Contestatioun ass manner wahrscheinlech op groussen Dictionnairen, an et erfuerdert keng OpbauzĂ€it mĂ©i fir eng niddereg Contestatioun Wierderbuchbelaaschtung z'erreechen.

Wann Dir Problemer begĂ©int, setzt GOEXPERIMENT = nosynchashtriemap wĂ€rend dem Bau fir zrĂ©ck an dĂ©i al Ëmsetzung zrĂ©ckzekommen an w.e.g. fĂ«llt de Problemformular aus.

Testen

Nei Methoden T.Kontext О B. Kontext e Kontext zréck, dee verworf gëtt nodeems den Test fÀerdeg ass a ier d'Testreinigungsfunktiounen ausgefouert ginn.

Nei Methoden T.Chdir Đž B.Chdir ka benotzt ginn fir den Aarbechtsverzeechnes fir d'Dauer vun engem Test oder Benchmark z'Ă€nneren.

Text / Schabloun

Schabloune ënnerstëtzen elo Range-over-Func an Range-over-int.

ZĂ€it

ZÀit implementéiert elo Interfaces encoding.binaryappender О encoding.TextAppender.

HĂ€fen

Linux

Wéi et war ugekënnegt No de Go 1.23 Release Notizen, Go 1.24 erfuerdert Linux Kernel Versioun 3.2 oder méi spéit.

Darwin

Go 1.24 ass déi lescht Verëffentlechung déi op macOS 11 Big Sur leeft. Go 1.25 erfuerdert macOS 12 Monterey oder méi spéit.

WebAssemblée

D'go:wasmexport Compiler Direktiv gouf op Go Programmer bĂ€igefĂŒĂŒgt fir Funktiounen an de WebAssembly Host ze exportĂ©ieren.

Am WebAssembly System Interface Preview 1 (GOOS = wasip1 GOARCH = wasm), ënnerstëtzt Go 1.24 e Go Programm ze bauen als Reakter / Bibliothéik andeems Dir de Build FÀndel spezifizéiert -buildmode=c-shared.

Méi Aarte sinn elo als Argument oder Resultattypen fir go:wasmimport Funktiounen erlaabt. Besonnesch Bool, String, uintptr a Pointer op bestëmmten Typen sinn erlaabt (kuckt Detailer an Dokumentatioun), zesumme mat den 32-Bit- a 64-Bit-Gelenger- a Floating-Point-Typen, an onsécher.Pointer, déi scho erlaabt sinn. Dës Zorte sinn och als Argument oder Resultat Zorte fir go:wasmexport Funktiounen erlaabt.

ËnnerstĂ«tzungsdateien fir WebAssembly goufen op lib/wasm vun misc/wasm geplĂ«nnert.

Den initialen Erënnerungsofdrock ass wesentlech reduzéiert, besonnesch fir kleng WebAssembly Uwendungen.

Windows

Den 32-Bit Fënsteren / Arm Hafen (GOOS = Windows GOARCH = Aarm) gouf als gebrach markéiert. Detailer an #70705

Source: linux.org.ru

Kaaft zouverlĂ€sseg Hosting fir Site mat DDoS Schutz, VPS VDS Server đŸ”„ Kaaft zouverlĂ©issegt WebsĂ€ithosting mat DDoS-Schutz, VPS VDS Server | ProHoster