Një version i ri i gjuhës Go, versioni 1.24, vjen gjashtë muaj më pas Shkoni 1.23. Shumica e ndryshimeve janë në zbatimin e zinxhirit të veglave, kohën e funksionimit dhe bibliotekat. Si gjithmonë, lirimi ofron premtimi i përputhshmërisë Shko 1. Dizajnerët e gjuhëve presin që pothuajse të gjitha programet Go do të vazhdojnë të përpilohen dhe ekzekutohen si më parë.
Ndryshimet në gjuhë
Go 1.24 tani mbështet plotësisht pseudonimet e tipit gjenerik: një pseudonim tip mund të parametrizohet si një lloj i deklaruar. Detajet në specifikimet e gjuhës. Tani për tani, kjo veçori mund të çaktivizohet duke vendosur GOEXPERIMENT=noaliatypeparams; Megjithatë, opsioni aliastypeparams do të hiqet në Go 1.25.
Mjete
Shko komanda
Modulet Go tani mund të gjurmojnë varësitë e ekzekutueshme duke përdorur direktivën e veglave në go.mod. Kjo heq nevojën për zgjidhjen e mëparshme të shtimit të mjeteve si importe boshe në një skedar që zakonisht quhet "tools.go". Komanda go tool tani mund të ekzekutojë këto mjete përveç mjeteve që vijnë me Go. Më shumë informacion mund të gjeni në dokumentacionin.
Flamuri i ri i mjetit për go get shkakton shtimin e direktivave të veglave në modulin aktual për paketat e specifikuara, përveç shtimit të direktivave të kërkuara.
I ri mjet meta-model i referohet të gjitha mjeteve në modulin aktual. Kjo mund të përdoret për t'i përditësuar të gjitha nëpërmjet mjetit go get, ose për t'i instaluar në direktorinë tuaj GOBIN nëpërmjet mjetit të instalimit go.
Ekzekutuesit e krijuar përmes go run dhe sjellja e re e veglës go tani ruhen në memorien e memories Go build. Kjo bën të mundur lëshimet e përsëritura për shkak të rritjes së cache. # 69290.
Komandat go build dhe go install tani pranojnë flamurin -json, i cili raporton daljen e ndërtimit dhe gabimet si dalje të strukturuar JSON në dalje standarde. Detajet e formatit mund të shihen në go help buildjson.
Për më tepër, shkoni testoni -json tani raporton gabimet e prodhimit dhe të ndërtimit në JSON, të përziera me rezultatin e testit JSON. Ato mund të dallohen nga llojet e reja të Veprimit, por nëse shkaktojnë probleme në sistemin e integrimit të testimit, mund të ktheheni në daljen e tekstit të ndërtimit nëpërmjet Konfigurimi GODEBUG gotestjsonbuildtext=1.
Ndryshorja e re e mjedisit GOAUTH ofron një mënyrë fleksibël për të autorizuar tërheqjet e moduleve private. Mund të shihni detaje në goauth help.
Komanda go build tani është instaluar versioni i modulit kryesor në binarin e përpiluar, bazuar në një etiketë dhe/ose një kompetim të kontrollit të versionit. Prapashtesa +dirty do të shtohet nëse ka ndryshime të pakomponuara. Flamuri -buildvcs=false mund të përdoret për të hequr informacionin e kontrollit të versionit nga binar.
i ri Konfigurimi GODEBUG toolchaintrace=1 tani mund të përdoret për të gjurmuar procesin e përzgjedhjes së zinxhirit të veglave në komandën go.
Cgo
Cgo mbështet shënime të reja për funksionet C për të përmirësuar performancën e kohës së ekzekutimit. #cgo noescape cFunctionName i tregon kompajlerit se memoria e kaluar në funksionin C cFunctionName nuk është eleminuar. #cgo nocallback cFunctionName i tregon përpiluesit se funksioni C cFunctionName nuk thërret asnjë funksion Go. Më shumë informacion mund të gjeni në dokumentacioni cgo.
Cgo aktualisht refuzon të përpilojë thirrje për një funksion C që ka deklarata të shumta të papajtueshme. Për shembull, nëse f deklarohet si void f(int) dhe si void f(double), cgo do të raportojë një gabim në vend që të gjenerojë një sekuencë të pavlefshme thirrjeje f(0). E re në këtë version është zbulimi i përmirësuar i këtij kushti gabimi kur shfaqen deklarata të papajtueshme në skedarë të ndryshëm. # 67699.
Objdump
Vegla objdump tani mbështet çmontimin në LoongArch 64-bit (GOARCH=loong64), RISC-V (GOARCH=riscv64) dhe S390X (GOARCH=s390x).
Yndyrë
Analizuesi i ri i testeve raporton gabime të zakonshme në deklaratat e testeve, fuzzerit, standardeve dhe shembujve në grupet e testeve, të tilla si emra të keqformuar, nënshkrime të pavlefshme ose shembuj që dokumentojnë identifikues joekzistues. Disa nga këto gabime mund të shkaktojnë dështimin e testeve.
Analisti ekzistues printf tani raporton diagnostikimin për thirrjet e formës fmt.Printf(s), ku s është një varg formati jo konstant pa argumente të tjera. Thirrje të tilla janë pothuajse gjithmonë një gabim, pasi vlera e s mund të përmbajë karakterin %; përdorni fmt.Print në vend të kësaj. 60529. Ky kontroll tenton të gjejë gjëra në kodin ekzistues dhe për këtë arsye zbatohet vetëm kur versioni i gjuhës (siç specifikohet nga direktiva go e skedarit go.mod ose komentet `//go:build`) është të paktën Go 1.24, për të shmangur shkaktimin e ndërprerjeve të gjata të integrimit kur përmirësohet në zinxhirin e veglave Go 1.24.
Analizuesi ekzistues i etiketës së ndërtimit tani raporton diagnostikimin kur ka një etiketë ndërtimi të pasaktë kufizimi i ndërtimit të versionit të vjetër Shkoni në direktivën //go:build. Për shembull, //go:build go1.23.1 i referohet një lëshimi të pikës; në vend të kësaj përdorni //go:build go1.23. # 64127.
Analizatori ekzistues i bllokimit të kopjeve tani raporton një diagnostikim kur një variabël deklarohet në një qark të trefishtë "for", si p.sh. për i := iter(); bërë (i); i = next(i) { … }, përmban sync.Locker, të tilla si sync.Mutex. Shkoni 1.22 ndryshoi sjelljen e sytheve të tillë për të krijuar një ndryshore të re për çdo përsëritje, duke kopjuar vlerat nga përsëritja e mëparshme; Ky kopjim nuk është i sigurt për bravë. # 66387.
GOCACHEPROG
Mekanizmi i brendshëm binar cmd/go dhe mekanizmi i ruajtjes së memories testuese tani mund të zbatohet nga proceset fëmijë që zbatojnë një protokoll JSON midis veglës cmd/go dhe procesit fëmijë të emërtuar nga ndryshorja e mjedisit GOCACHEPROG. Më parë ishte për GOEXPERIMENT. Detajet e protokollit mund të shihen në dokumentacionin.
Koha e përfundimit
Disa përmirësime të performancës në kohën e ekzekutimit reduktuan shpenzimet e përgjithshme të CPU-së me 2-3% mesatarisht në një grup standardesh përfaqësuese. Rezultatet mund të ndryshojnë në varësi të aplikacionit. Këto përmirësime përfshijnë një zbatim të ri të integruar të hartës bazuar në Tabelat suedeze, shpërndarje më efikase e memories së objekteve të vogla dhe një implementim i ri i brendshëm i funksionimit të mutex.
Zbatimi i ri i integruar i hartës dhe mutex i ri i brendshëm i kohës së ekzekutimit mund të çaktivizohen duke vendosur përkatësisht GOEXPERIMENT=noswissmap dhe GOEXPERIMENT=nospinbitmutex në kohën e ndërtimit.
Përpilues
Përpiluesi tashmë e ndaloi përcaktimin e metodave të reja me llojet e marrësve që u krijuan nga cgo, por ishte e mundur të punohej rreth këtij kufizimi nëpërmjet një pseudonimi tip. Go 1.24 tani raporton gjithmonë një gabim nëse marrësi tregon një lloj të gjeneruar nga cgo, drejtpërdrejt ose tërthorazi (nëpërmjet një pseudonimi tip).
Lidhës
Lidhësi gjeneron tani një identifikues ndërtimi GNU (hyrja ELF NT_GNU_BUILD_ID) në platformat ELF dhe një UUID (komandë ngarkimi Mach-O LC_UUID) në macOS si parazgjedhje. ID-ja e ndërtimit ose UUID rrjedh nga ID-ja e ndërtimit Go. Kjo mund të çaktivizohet me flamurin lidhës -B asnjë, ose të anashkalohet me flamurin lidhës -B 0xNNNN me një vlerë heksadecimal të specifikuar nga përdoruesi.
cranking
Siç thuhet në Shkoni në shënimet e lëshimit të 1.22, Go 1.24 tani kërkon që Go 1.22.6 ose më vonë të instalohet. Zhvilluesit presin që Go 1.26 do të kërkojë një lëshim me pikë të Go 1.24 ose më vonë për t'u lansuar.
Biblioteka standarde
Qasje në sistemin e skedarëve të kufizuar nga drejtoria
Lloji i ri os.rrënjë Ofron aftësinë për të kryer operacione të sistemit të skedarëve brenda një drejtorie specifike.
Funksion os.OpenRoot hap drejtorinë dhe kthehet os.rrënjë. Metodat në os.rrënjë operojnë në atë direktori dhe nuk lejojnë shtigjet t'u referohen vendndodhjeve jashtë drejtorisë, duke përfshirë ato që ndjekin lidhje simbolike jashtë drejtorisë. Metodat në os.Root pasqyrojnë shumicën e operacioneve të sistemit të skedarëve të disponueshëm në paketën os, duke përfshirë, për shembull, os.Root.Open, os.Root.Create, os.Root.Mkdir и os.Root.Stat.
Karakteristikë e re standarde
Standardet tani mund të përdorin një metodë më të shpejtë dhe më pak të prirur ndaj gabimeve testimi.B.Loop për të përsëritur mbi një pikë referimi si për b.Loop() { … } në vend të strukturave tipike të lakut që përfshijnë bN si për diapazonin bN Kjo ofron dy avantazhe të rëndësishme:
- Funksioni i standardit ekzekutohet saktësisht një herë për numërim, kështu që hapat e shtrenjtë të konfigurimit dhe pastrimit kryhen vetëm një herë.
- Parametrat dhe rezultatet e thirrjes së funksionit vazhdojnë, duke e penguar kompajlerin të optimizojë plotësisht trupin e ciklit.
Finalizues të përmirësuar
Veçori e re koha e ekzekutimit.AddCleanup është një mekanizëm kompletimi që është më fleksibël, më efikas dhe më pak i prirur ndaj gabimeve sesa koha e ekzekutimit.SetFinalizer. AddCleanup bashkëngjit një funksion pastrimi me një objekt që do të ekzekutohet sapo objekti të bëhet i padisponueshëm. Megjithatë, ndryshe nga SetFinalizer, pastrime të shumta mund të bashkëngjiten në një objekt të vetëm, pastrime mund të bashkëngjiten me tregues të brendshëm, pastrimet zakonisht nuk shkaktojnë rrjedhje kur objektet formojnë një cikël dhe pastrimet nuk vonojnë shpërndarjen e objektit ose objekteve ku ai tregon. Kodi i ri duhet të preferojë AddCleanup mbi SetFinalizer.
Paketa e re e dobët
Paketa e re i dobët jep tregues të dobët.
Treguesit e dobët janë një primitiv i nivelit të ulët i parashikuar për krijimin e strukturave efikase të memories, të tilla si fjalorë të dobët për hartimin e vlerave, fjalorë kanonikalizimi për çdo gjë që nuk mbulohet nga një paketë. unik, dhe lloje të ndryshme të cache-ve. Për të mbështetur këto raste përdorimi, ky version ofron gjithashtu koha e ekzekutimit.AddCleanup и maphash.Të krahasueshme.
Paketa e re kripto/mlkem
Paketa e re kripto/mlkem implementon ML-KEM-768 dhe ML-KEM-1024.
ML-KEM është një mekanizëm post-kuantik i shkëmbimit të çelësave, i njohur më parë si Kyber dhe i specifikuar në FIPS 203.
Paketa të reja crypto/hkdf, crypto/pbkdf2 dhe crypto/sha3
Paketa e re kripto/hkdf zbaton funksionin e derivimit të çelësit të bazuar në HMAC "Extract-and-Expand" HKDF siç përcaktohet në RFC5869.
Paketa e re kripto/pbkdf2 zbaton funksionin e derivimit të çelësit të bazuar në fjalëkalim PBKDF2 siç përcaktohet në RFC8018.
Paketa e re kripto/sha3 zbaton funksionin hash SHA-3 dhe funksionet e daljes të zgjerueshme SHAKE dhe cSHAKE siç përcaktohet në FIPS 202.
Të tre paketat bazohen në paketat ekzistuese golang.org/x/crypto/….
Pajtueshmëria me FIPS 140-3
Ky lëshim përfshin një grup i ri mekanizmash për të siguruar përputhjen me FIPS 140-3.
Moduli kripto Go është një grup paketash bibliotekare standarde të brendshme që përdoren në mënyrë transparente për të zbatuar algoritmet e miratuar FIPS 140-3. Aplikacionet nuk kërkojnë ndryshime për të përdorur modulin kripto Go për algoritme të miratuara.
Ndryshorja e re e mjedisit GOFIPS140 mund të përdoret për të zgjedhur versionin e modulit kripto Go për t'u përdorur në një ndërtim. E re Konfigurimi GODEBUG fips140 mund të përdoret për të aktivizuar modalitetin FIPS 140-3 në kohën e ekzekutimit.
Go 1.24 përfshin modulin Go crypto v1.0.0, i cili aktualisht po testohet me një laborator të akredituar nga CMVP.
Testimi/sinkronizimi i paketës së re eksperimentale
Paketa e re eksperimentale testimi / sinkronizimi Ofron mbështetje për testimin e kodit të njëkohshëm.
- Funksion sinkronizoj.drejtoj drejton një grup gorutinash në një "flluskë" të izoluar. Në flluskën e funksionit të paketës kohë operojnë me orë false.
- Funksionet sinkronizoj.prit prisni derisa të gjitha gorutinat të bllokohen në flluskën aktuale.
Detajet mund të gjenden në dokumentacionin e paketës.
Paketa e sinkronizimit është eksperimentale dhe duhet të aktivizohet duke vendosur GOEXPERIMENT=synctest. API-ja e paketës mund të ndryshojë në publikimet e ardhshme. NË # 67434 Mund të shihni më shumë detaje dhe të jepni komente.
Ndryshime të vogla në bibliotekë
Arkivi
Implementimet (*Writer.AddFS) në archive/zip dhe archive/tar tani shkruajnë kokën e drejtorisë për një direktori bosh.
bytes
paketë bytes shton disa funksione që punojnë me përsëritës:
- Lines Kthen një përsëritës mbi vargjet e ndara me vijë të re në një copë bajt.
- SplitSeq kthen një përsëritës mbi të gjitha nënslicët e një fete bajt të ndarë nga një ndarës.
- SplitAfterSeq kthen një përsëritës mbi nënslicët e një fete bajt, të ndarë pas çdo shfaqjeje të ndarësit.
- FushatSeq kthen një përsëritës mbi nënslicat e një fete bajt rreth sekuencave të karaktereve hapësinore, siç përcaktohet unicode.IsSpace
- FieldsFuncSeq kthen një përsëritës mbi nënslicat e fetës së bajtit rreth sekuencave të pikave të kodit Unicode që kënaqin kallëzuesin.
kripto/aes
Vlera e kthimit NewChipher nuk zbaton më metodat NewCTR, NewGCM, NewCBCEencrypter dhe NewCBCDecrypter. Këto metoda ishin të padokumentuara dhe nuk ishin të disponueshme në të gjitha arkitekturat. Tani kuptimi Bllok duhet të kalohet drejtpërdrejt në funksionet e duhura kripto/shifror. Aktualisht, kripto/shifrimi i kontrollon ende këto metoda në vlerat e Bllokut, edhe pse ato nuk mbështeten më nga biblioteka standarde.
kripto/shifror
Veçori e re NewGCMWithRandomNonce kthehet AEAD, i cili zbaton AES-GCM duke gjeneruar një nonce të rastësishme gjatë Seal dhe duke e vendosur atë në tekstin e shifruar.
Zbatimi Lumë, u kthye CTR e re kur përdoret me kripto/aes tani disa herë më shpejt në amd64 dhe arm64.
NewOFB, Kriptuesi i ri CFBE и Dekriptuesi i ri CFB tashmë janë shpallur të vjetruara. Modalitetet OFB dhe CFB janë të paautentikuara, gjë që në përgjithësi lejon sulmet aktive të manipulojnë dhe rikuperojnë tekstin e thjeshtë. Aplikimet rekomandohen për t'u përdorur AEAD në këmbim. Nëse modaliteti i paautentikuar Lumë e nevojshme, mund të përdoret CTR e re në këmbim.
kripto/ecdsa
PrivateKey.Sign tani krijon një nënshkrim përcaktues sipas RFC6979, nëse burimi i rastësisë është zero.
kripto/md5
Vlera e kthimit md5.i ri, tani implementon edhe ndërfaqen kodimi.aplikimi binary.
kripto/rand
Funksion Lexo tani nuk garanton asnjë dështim. Nëse Read has një gabim gjatë leximit Lexues, programi do të përfundojë përgjithmonë. Vini re se Reader i parazgjedhur është i dokumentuar që gjithmonë të funksionojë me sukses, kështu që ky ndryshim duhet të prekë vetëm programet që anashkalojnë variablin Reader. Një përjashtim janë kernelet Linux para 3.17, ku Reader i paracaktuar ende hap /dev/urandom dhe mund të dështojë.
Në Linux 6.11 dhe më vonë, Reader tani përdor thirrjen e sistemit getrandom nëpërmjet vDSO. Kjo është disa herë më e shpejtë, zakonisht për lexime të vogla.
Në OpenBSD Reader tani përdor arc4random_buf(3).
Veçori e re Tekst tani mund të gjenerojë vargje teksti të rastësishme kriptografikisht të sigurta.
kripto/rsa
GenerateKey tani kthen një gabim nëse kërkohet një gjatësi çelësi më pak se 1024 bit. Të gjitha metodat Sign, Verify, Encrypt dhe Decrypt tani kthejnë një gabim nëse përdoren me një madhësi çelësi më të vogël se 1024 bit. Çelësa të tillë janë të pasigurt dhe nuk duhen përdorur. Konfigurimi i GODEBUG rsa1024min=0 rikthen sjelljen e vjetër, por zhvilluesit Go rekomandojnë ta bëni këtë vetëm kur është e nevojshme dhe vetëm në teste, për shembull duke shtuar rreshtin //go:debug rsa1024min=0 në skedarin e testimit. E re shembull GenerateKey ofron një çelës testimi standard 2024-bit të lehtë për t'u përdorur.
Tani është më e sigurt dhe më efikase të telefonosh PrivateKey.Parallogaritje tek PrivateKey.Vlerëso. Parallogaritja tani është më e shpejtë në prani të plotësimit pjesërisht Vlerat e parallogaritura, për shembull kur nxjerr një çelës nga JSON.
Paketa tani refuzon më shumë çelësa të pavlefshëm edhe kur nuk thirret Validate, dhe GenerateKey tani mund të kthejë gabime të reja për burime të rastësishme të prishura. Fushat primes и I llogaritur paraprakisht struktura Çelësi Privat tani përdoren dhe vërtetohen edhe kur mungojnë disa vlera. Ekzistojnë gjithashtu ndryshime në crypto/x509 për analizimin dhe nxjerrjen e çelësave RSA, të përshkruara më poshtë.
ShenjaPKCS1v15 и VerifikoPKCS1v15 tani mbështesin SHA-512/224, SHA-512/256 dhe SHA-3.
GenerateKey tani përdor një metodë paksa të ndryshme për të gjeneruar eksponentin privat (funksioni Carmichael në vend të funksionit Euler). Aplikacionet e rralla që rigjenerojnë nga jashtë çelësat vetëm nga numrat kryesorë mund të prodhojnë rezultate të ndryshme, por të pajtueshme.
Operacionet në çelësat publikë dhe privatë janë tani deri në dy herë më të shpejta në wasm.
kripto/sha*
- kripto/sha1: vlera e kthimit sha1.E re tani implementon edhe ndërfaqen kodimi.aplikimi binary.
- kripto/sha256: vlerat e kthyera sha256.E re и sha256.E re224 tani implementoni edhe ndërfaqen kodimi.aplikimi binary.
- kripto/sha512: vlerat e kthyera sha512.E re, sha512.E re384, sha512.E re512_224 и sha512.E re512_256, tani implementoni edhe ndërfaqen kodimi.aplikimi binary.
kripto / delikate
Veçori e re Me Kohën e pavarur të të dhënave lejon përdoruesin të ekzekutojë një funksion me veçori specifike të arkitekturës të aktivizuara që sigurojnë që udhëzime të caktuara të mos ndryshohen në lidhje me kohën e vlerës së të dhënave. Kjo mund të përdoret për të siguruar që kodi i shkruar për të ekzekutuar në kohë konstante nuk është optimizuar nga funksionet e nivelit të procesorit në mënyrë që të ekzekutohet në kohë të ndryshueshme. Aktualisht WithDataIndependentTiming përdor bitin PSTATE.DIT në arm64 dhe nuk bën asgjë në të gjitha arkitekturat e tjera. Konfigurimi i GODEBUG dataindependenttiming=1 mundëson modalitetin DIT për të gjithë programin Go.
Prodhim XORBajt duhet të mbivendosen plotësisht ose aspak me hyrjen. Më parë sjellja ishte e papërcaktuar ndryshe, ndërsa tani XORBytes do të bjerë në panik.
kripto/tls
Serveri TLS tani mbështet Encrypted Client Hello (ECH). Kjo veçori mund të aktivizohet duke plotësuar fushën. Config.EncryptedClientHelloKeys.
Një mekanizëm i ri i shkëmbimit të çelësave post-kuantik X25519MLKEM768 tani mbështetet dhe aktivizohet si parazgjedhje kur Config.Preferencat e kurbës është zero. Konfigurimi i GODEBUG tlsmlkem=0 kthen parazgjedhjen.
Mbështetja për shkëmbimin eksperimental të çelësave X25519Kyber768Draft00 është hequr.
Porosia e shkëmbimit të çelësave tani trajtohet tërësisht nga paketa crypto/tls. Rendit Config.Preferencat e kurbës tani injorohet dhe përmbajtja përdoret vetëm për të përcaktuar se cilat shkëmbime kyçe duhet të përfshihen kur të plotësohet fusha.
Fushë e re ClientHelloInfo.Extensions Liston listën e identifikuesve të shtesave të marra në mesazhin Client Hello. Kjo mund të jetë e dobishme për marrjen e gjurmëve të gishtërinjve nga klientët TLS.
kripto/x509
Konfigurimi i GODEBUG x509sha1 është hequr. Vërtetim.Verifiko nuk mbështet më nënshkrimet e bazuara në SHA-1.
OID tani implementon ndërfaqet kodimi.aplikimi binary и kodimi.TextAppender.
Fusha e politikës së paracaktuar të certifikatës është ndryshuar nga Certifikata.Identifikuesit e politikave mbi Certifikata.Politikat. Kur analizoni certifikatat, të dyja fushat do të plotësohen, por kur krijoni një politikë certifikate, ato do të merren nga fusha Certificate.Policies në vend të Certificate.PolicyIdentifiers. Ky ndryshim mund të rikthehet. Konfigurimi GODEBUG x509politikat e përdorimit=0.
Krijo Certifikatë tani do të gjenerojë një numër serial duke përdorur një metodë në përputhje me RFC 5280 kur kalon një fushë shabllon Certifikata.Numri Serial zero, në vend që të rrëzohet.
Certifikata.Verifiko tani mbështet vërtetimin e politikave siç përcaktohet në RFC 5280 dhe RFC 9618. Fushë e re VerifyOptions.CertificatePolicies mund të vendoset në një grup të pranueshëm politikash OID. Vetëm zinxhirët e certifikatave me grafikët e politikave të vlefshme do të kthehen nga Certifikata.Verifiko.
MarshalPKCS8Key Private tani kthen një gabim në vend që të marrë një çelës të pavlefshëm RSA. (MarshalPKCS1Key Private nuk ka kthim gabimi dhe sjellja e tij kur jepen çelësa të pavlefshëm mbetet e papërcaktuar.)
ParsePKCS1Çelësi Privat и ParsePKCS8Çelësi Privat tani përdorni dhe vërtetoni vlerat e koduara CRT, kështu që mund të refuzoni çelësat e pavlefshëm RSA që ishin pranuar më parë. Përdorimi Cilësimet e GODEBUG x509rsacrt=0 kthehet në rillogaritjen e vlerave të CRT.
debug/kukudh
paketë debug/kukudh Shton mbështetje për trajtimin e versioneve të simboleve në skedarët dinamikë ELF (Format i ekzekutueshëm dhe i lidhshëm). Metoda e re File.Versionet Dynamic Kthen një listë të versioneve dinamike të përcaktuara në një skedar ELF. Metoda e re File.DynamicVersionNeeds Kthen një listë të versioneve dinamike të kërkuara nga ky skedar ELF që janë të përcaktuara në objekte të tjera ELF. Më në fund, fusha të reja Simboli.HasVersion и Simboli.VersionIndeksi tregoni versionin e simbolit.
encoding
Dy ndërfaqe të reja TextAppender и BinaryAppender u prezantuan për të shtuar një tekst ose paraqitje binar të një objekti në një copë bajt. Këto ndërfaqe ofrojnë të njëjtin funksionalitet si TextMarshaler и BinaryMarshaler, por në vend që të ndajnë një pjesë të re çdo herë, ata shtojnë të dhëna direkt në një pjesë ekzistuese. Këto ndërfaqe zbatohen aktualisht nga lloje standarde të bibliotekave që tashmë zbatojnë TextMarshaler dhe/ose BinaryMarshaler.
kodim/json
Gjatë ndërtimit, një fushë strukture me opsionin e ri omitzero në etiketën e fushës së strukturës do të hiqet nëse vlera e saj është zero. Nëse lloji i fushës ka një metodë bool IsZero(), ajo do të përdoret për të përcaktuar nëse vlera është zero. Përndryshe, vlera do të jetë zero nëse është vlerë null për llojin e saj. Etiketa e fushës omitzero është më e pastër dhe më pak e prirur ndaj gabimeve sesa boshllëku kur qëllimi është të hiqen vlerat null. Në veçanti, ndryshe nga omitempty, omitzero lë zero kohë.kohë vlerat, që është një burim i zakonshëm i problemeve.
Nëse specifikohen të dyja omitempty dhe omitzero, fusha do të hiqet nëse vlera është bosh ose zero (ose të dyja).
UnmarshalTypeError.Fusha tani përfshin struktura të integruara për të ofruar mesazhe gabimi më të detajuara.
shko/lloji
Të gjitha strukturat e të dhënave go/types që ekspozojnë sekuencat e çifteve të metodave, si Len() int dhe At(int) T, tani kanë gjithashtu metoda që kthejnë përsëritësit, duke lejuar kodin më të thjeshtë si ky:
params := fn.Type.(*llojet.Nënshkrimi).Params() për i := 0; i < params.Len(); i++ { use(params.At(i)) }
Në këtë:
për param := varg fn.Signature().Params().Variables() { use(param) }
Metodat: Ndërfaqja.EmbeddedTypes Ndërfaqja.ExplicitMethods Ndërfaqja.Metodat MethodSet.Metodat Emërtuar.Metodat Fushëveprimi.Fëmijët Struktura.Fushat Tuple.Ndryshoret TypeLista.Llojet TypeParamList.TypeParams Bashkimi.Kushtet
hash/*
- hash/adler32: vlera e kthimit Të reja, tani implementon edhe ndërfaqen kodimi.aplikimi binary
- hash/crc32: vlerat e kthyera Të reja и I ri IEEE, tani implementoni edhe ndërfaqen kodimi.aplikimi binary
- hash/crc64: vlera e kthimit Të reja, tani implementon edhe ndërfaqen kodimi.aplikimi binary
- hash/fnv: vlerat e kthyera New32 E re 32a New64 E re 64a New128 и E re 128a, tani implementoni edhe ndërfaqen kodimi.aplikimi binary
- hash/mafash: veçori të reja Të krahasueshëm и Shkruani të krahasueshme mund të llogarisë hash-in e çdo vlere që mund të krahasohet. Kjo ju lejon të hash çdo gjë që mund të përdoret si një çelës fjalori Go.
log/slog
I ri Hiq dorëzuesin është një mbajtës që nuk aktivizohet kurrë dhe gjithmonë e hedh poshtë daljen e tij.
nivel и NiveliVar tani zbatoni ndërfaqen kodimi.TextAppender.
matematike/*
- matematikë/i madh: shket, int и mi tani zbatoni ndërfaqen kodimi.TextAppender.
- matematikë/randë: thirrjet e funksioneve të nivelit të lartë të vjetëruara Farë nuk kanë më asnjë efekt. Për të rivendosur sjelljen e vjetër, mund të përdorni Konfigurimi GODEBUG randseednop=0. Më shumë kontekst në oferta 67273.
- matematikë/randë/v2: ChaCha8 и PCG tani zbatoni ndërfaqen kodimi.aplikimi binary.
neto
Dëgjoni Kondig tani përdor MPTCP si parazgjedhje në sistemet ku mbështetet (aktualisht vetëm Linux).
IP tani implementon ndërfaqen kodimi.TextAppender.
net/http
Kufizimi ka ndryshuar transport në përgjigjet e marra të informacionit 1xx në përgjigje të kërkesës. Më parë kjo do të ndalonte kërkesën dhe do të kthente një gabim pas marrjes së më shumë se 5 përgjigjeve 1xx. Kjo tani kthen një gabim vetëm nëse madhësia totale e të gjitha përgjigjeve 1xx tejkalon cilësimin e konfigurimit Transporti.MaxResponseHeaderBytes.
Gjithashtu, kur një kërkesë ka një goditje gjurmuese net/http/httptrace.ClientTrace.Got1xxResponse, tani nuk ka kufi në numrin total të përgjigjeve 1xx. Hook Got1xxResponse mund të kthejë një gabim për të ndaluar kërkesën.
transport и server tani keni një fushë HTTP2 që lejon konfigurimin e cilësimeve të protokollit HTTP/2.
Fushat e reja Serveri.Protokollet и Transporti.Protokollet ofrojnë një mënyrë të thjeshtë për të konfiguruar se cilat protokolle HTTP përdor serveri ose klienti.
Serveri dhe klienti mund të konfigurohen për të mbështetur lidhje të pakriptuara HTTP/2.
Kur Serveri.Protokollet përmban UnencrypterHTTP2, serveri do të pranojë lidhje HTTP/2 në porte të pakriptuara. Serveri mund të pranojë HTTP/1 dhe HTTP/2 të pakriptuar në të njëjtën portë.
Kur Transporti.Protokollet përmban HTTP2 të pakriptuar dhe nuk përmban HTTP1, transporti do të përdorë HTTP/2 të pakriptuar për adresat http://. Nëse një transport është konfiguruar për të përdorur HTTP/1 dhe HTTP/2 të pakriptuar, ai do të përdorë HTTP/1.
Mbështetja për HTTP/2 të pakriptuar përdor "HTTP/2 with Forward-Learning" (RFC 9113, seksioni 3.3). Titulli i vjetëruar "Përmirëso: h2c" nuk mbështetet.
rrjetë / rrjetë
Adr, AdrPort и Parashtesa tani implementoni ndërfaqet kodimi.aplikimi binary и kodimi.TextAppender.
net/url
URL tani implementon edhe ndërfaqen kodimi.aplikimi binary.
os/përdorues
Në Windows Aktual tani mund të përdoret në Windows Nano Server. Implementimi është përditësuar për të shmangur përdorimin e funksioneve nga biblioteka NetApi32, e cila mungon nga Nano Server.
Në Windows Aktual, lookup и LookupId tani mbështet llogaritë e mëposhtme të integruara të shërbimit të përdoruesit:
- SISTEMI I AUTORITETEVE NT
- SHËRBIMI AUTORITET LOKALE NT
- SHTRBIMI I AUTORITETIT NETWORK NT
Në Windows Aktual u përshpejtua ndjeshëm kur përdoruesi aktual është bashkuar me një domen të ngadaltë, që është një rast i zakonshëm për shumë përdorues të korporatave. Performanca e zbatimit të ri tani është në rendin e milisekondave, krahasuar me zbatimin e mëparshëm, i cili mund të marrë disa sekonda, madje edhe minuta, për t'u përfunduar.
Në Windows Aktual tani kthen përdoruesin e pronarit të procesit kur filli aktual po imiton një përdorues tjetër. Më parë kjo kthente një gabim.
regexp
Regexp tani implementon ndërfaqen kodimi.TextAdapter.
Runtime
Funksion GOROOT tani është i zhvlerësuar. Në mjediset më të reja, duhet të preferoni të përdorni shtegun e sistemit për të përcaktuar binarin "go" dhe të përdorni go env GOROOT për të përcaktuar GOROOT.
vargjet
paketë vargjet shton disa funksione për të punuar me iteratorët:
- Lines Kthen një përsëritës mbi linjat e ndara me rreshta të rinj në një varg.
- SplitSeq kthen një përsëritës mbi të gjitha nënvargjet e një vargu të ndarë nga një ndarës.
- SplitAfterSeq kthen një përsëritës mbi nënvargjet e një vargu, të ndarë pas çdo shfaqjeje të ndarësit.
- FushatSeq kthen një përsëritës mbi nënvargjet e një vargu rreth sekuencave të karaktereve të hapësirës së bardhë, siç përcaktohetunicode.IsSpace
- FieldsFuncSeq Kthen një përsëritës mbi nënvargjet e vargut rreth sekuencave të pikave të kodit Unicode që plotësojnë një kallëzues.
sync
Zbatimi sinkronizoj.hartë është ndryshuar për të përmirësuar performancën, veçanërisht për ndryshimet e fjalorit. Për shembull, mosmarrëveshja për ndryshimin e grupeve të ndara ka më pak gjasa në fjalorë të mëdhenj dhe nuk kërkon më kohë për të krijuar një ngarkesë të ulët të fjalorit.
Nëse hasni ndonjë problem, vendosni GOEXPERIMENT=nosynchashtriemap gjatë ndërtimit për t'u rikthyer në zbatimin e vjetër dhe ju lutemi plotësoni formularin e problemit.
testimi
Metodat e reja T. Konteksti и B. Konteksti ktheni një kontekst që hidhet poshtë pas përfundimit të testit dhe përpara se të ekzekutohen funksionet e pastrimit të testit.
Metodat e reja T.Çdir и B.Çdir mund të përdoret për të ndryshuar drejtorinë e punës për kohëzgjatjen e një testi ose standardi.
teksti/shaboni
Modelet tani mbështesin range-over-func dhe range-over-int.
kohë
kohë tani implementon ndërfaqet kodimi.aplikimi binary и kodimi.TextAppender.
Ports
Linux
Siç ishte i shpallur Sipas shënimeve të lëshimit të Go 1.23, Go 1.24 kërkon versionin 3.2 të kernelit Linux ose më të ri.
Darwin
Go 1.24 është versioni i fundit që do të funksionojë në macOS 11 Big Sur. Go 1.25 do të kërkojë macOS 12 Monterey ose më vonë.
WebAssembly
Direktiva e përpiluesit go:wasmexport është shtuar në programet Go për të eksportuar funksionet në hostin WebAssembly.
Në Parashikimin e Ndërfaqes së Sistemit WebAssembly 1 (GOOS=wasip1 GOARCH=wasm), Go 1.24 mbështet ndërtimin e një programi Go si reaktor/bibliotekë duke specifikuar flamurin e ndërtimit -buildmode=c-shared.
Më shumë lloje tani lejohen si lloje argumentesh ose rezultatesh për funksionet go:wasmimport. Në veçanti, lejohen bool, string, uintptr dhe tregues për lloje të caktuara (shih detajet në dokumentacionin), së bashku me llojet 32-bit dhe 64-bit të numrave të plotë dhe me pikë lundruese, dhe të pasigurt.Pointer, të cilat tashmë janë të lejuara. Këto lloje lejohen gjithashtu si lloje argumentesh ose rezultatesh për funksionet go:wasmexport.
Skedarët mbështetës për WebAssembly janë zhvendosur në lib/wasm nga misc/wasm.
Gjurma fillestare e memories është reduktuar ndjeshëm, veçanërisht për aplikacionet e vogla WebAssembly.
Dritaret
Porta e dritareve/krahit 32-bit (GOOS=windows GOARCH=krah) është shënuar si e prishur. Detajet në # 70705
Burimi: linux.org.ru
