Fara 1.24

Fara 1.24

Ný útgáfa af Go tungumálinu, útgáfa 1.24, kemur sex mánuðum á eftir Fara 1.23. Flestar breytingarnar eru í innleiðingu verkfærakeðjunnar, keyrslutíma og bókasöfnum. Eins og alltaf veitir útgáfan loforð um samhæfni Go 1. Tungumálahönnuðirnir búast við því að nánast öll Go forrit haldi áfram að safna saman og keyra eins og áður.

Breytingar á tungumáli

Go 1.24 styður nú að fullu almenn tegund samnefnis: hægt er að stilla tegundarsamnefni sem yfirlýsta tegund. Upplýsingar í tungumálaforskriftir. Í bili er hægt að slökkva á þessum eiginleika með því að stilla GOEXPERIMENT=noaliastypeparams; Hins vegar verður aliastypeparams valkosturinn fjarlægður í Go 1.25.

Verkfæri

Farðu skipun

Go einingar geta nú fylgst með keyrsluháðum með því að nota verkfæratilskipunina í go.mod. Þetta fjarlægir þörfina fyrir fyrri lausnina við að bæta við verkfærum sem tómum innflutningi í skrá sem venjulega kallast „tools.go“. Go tool skipunin getur nú keyrt þessi verkfæri til viðbótar við verkfærin sem fylgja Go. Frekari upplýsingar má finna á skjöl.

Nýja -tool fáninn fyrir go get veldur því að verkfæraskipunum er bætt við núverandi einingu fyrir tilgreinda pakka auk þess að bæta við þörfum tilskipunum.

Nýtt meta-mynstur tól vísar til allra verkfæra í núverandi einingu. Þetta er hægt að nota til að uppfæra þær allar í gegnum go get tólið, eða til að setja þær upp í GOBIN möppuna þína með go install tólinu.

Keyrslur sem búnar eru til með go run og nýja go tool hegðun eru nú í skyndiminni í Go build skyndiminni. Þetta gerir endurteknar ræsingar mögulegar vegna aukins skyndiminni. # 69290.

Go build and go install skipanirnar samþykkja nú -json fánann, sem tilkynnir byggingarframleiðsla og villur sem skipulögð JSON framleiðsla á venjulegu framtaki. Snið upplýsingar, sjá go help buildjson.

Ennfremur, go test -json tilkynnir nú úttaks- og byggingarvillur í JSON, blandað saman við prófniðurstöðuna JSON. Hægt er að aðgreina þær með nýju aðgerðagerðunum, en ef þær valda vandamálum í prófunarsamþættingarkerfinu geturðu fallið aftur í textaúttak byggingarinnar í gegnum GODEBUG uppsetning gotestjsonbuildtext=1.

Nýja GOAUTH umhverfisbreytan veitir sveigjanlega leið til að heimila útdrátt einkaeininga. Þú getur séð upplýsingar í go help goauth.

Go build skipunin er nú sett upp útgáfa af aðaleiningunni í samsettum tvöfalda, byggt á merki og/eða útgáfustýringu. + óhreinum viðskeyti verður bætt við ef það eru óbundnar breytingar. Hægt er að nota -buildvcs=false fánann til að sleppa útgáfustýringarupplýsingum úr tvöfaldanum.

GODEBUG uppsetning toolchaintrace=1 er nú hægt að nota til að fylgjast með verkfærakeðjuvalsferlinu í go skipuninni.

Cgo

Cgo styður nýjar skýringar fyrir C aðgerðir til að bæta frammistöðu keyrslutíma. #cgo noescape cFunctionName segir þýðandanum að minnið sem er sent til C fallið cFunctionName sé ekki sloppið. #cgo nocallback cFunctionName segir þýðandanum að C fallið cFunctionName kallar ekki til baka neinar Go aðgerðir. Frekari upplýsingar má finna á cgo skjöl.

Cgo neitar eins og er að setja saman símtöl í C fall sem hefur margar ósamrýmanlegar yfirlýsingar. Til dæmis, ef f er lýst yfir sem bæði ógilt f(int) og ógilt f(tvöfaldur), mun cgo tilkynna um villu í stað þess að búa til ógilda kallaröð f(0). Nýtt í þessari útgáfu er bætt uppgötvun á þessu villuástandi þegar ósamhæfðar yfirlýsingar birtast í mismunandi skrám. # 67699.

Objdump

Objdump tólið styður nú sundurliðun á 64 bita LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) og S390X (GOARCH=s390x).

Fat

Nýi prófunargreiningartækið greinir frá algengum villum í prófunar-, fuzzer-, viðmiðunar- og dæmayfirlýsingum í prófunarsvítum, svo sem vansköpuð nöfn, ógildar undirskriftir eða dæmi sem skjalfesta auðkenni sem ekki eru til. Sumar af þessum villum geta valdið því að próf mistakast.

Núverandi printf flokkari greinir nú frá greiningu fyrir símtöl á forminu fmt.Printf(s), þar sem s er strengur sem er ekki stöðugt snið án annarra röka. Slík símtöl eru næstum alltaf villa, þar sem gildi s getur innihaldið % stafinn; notaðu fmt.Print í staðinn. 60529. Þessi athugun hefur tilhneigingu til að finna hluti í núverandi kóða og er því aðeins beitt þegar tungumálaútgáfan (eins og tilgreint er í go tilskipuninni í go.mod skránni eða `//go:build` athugasemdunum) er að minnsta kosti Go 1.24, til að forðast að valda löngum samþættingarhléum þegar uppfært er í Go 1.24 verkfærakeðjuna.

Núverandi buildtag greiningartæki tilkynnir nú greiningu þegar það er rangt buildtag Byggingartakmörkun í eldri útgáfu Farðu í //go:build tilskipunina. Til dæmis, //go:build go1.23.1 vísar til punktaútgáfu; notaðu í staðinn //go:build go1.23. # 64127.

Núverandi copylock greiningartæki tilkynnir nú greiningu þegar breyta er lýst í þrefaldri „for“ lykkju, eins og fyrir i := iter(); gert(i); i = next(i) { … }, inniheldur sync.Locker, eins og sync.Mutex. Fara 1.22 breytt hegðun slíkra lykkja til að búa til nýja breytu fyrir hverja endurtekningu, afrita gildin frá fyrri endurtekningu; Þessi afritun er ekki örugg fyrir læsingar. # 66387.

GOCACHEPROG

Nú er hægt að innleiða innri cmd/go tvöfalda og skyndiminni fyrir próf með undirferlum sem innleiða JSON samskiptareglur á milli cmd/go tólsins og undirferlisins sem nefnt er af GOCACHEPROG umhverfisbreytunni. Áður var það fyrir GOEXPERIMENT. Upplýsingar um bókunina má sjá í skjöl.

Tími verkloka

Nokkrar endurbætur á afköstum á keyrslutíma drógu úr kostnaði við örgjörva um 2-3% að meðaltali yfir sett af dæmigerðum viðmiðum. Niðurstöður geta verið mismunandi eftir umsókn. Þessar endurbætur fela í sér nýja innbyggða kortaútfærslu sem byggir á Sænskar töflur, skilvirkari úthlutun minnis á litlum hlutum og nýrri innri keyrslutíma útfærslu á mutex.

Hægt er að slökkva á nýju innbyggðu kortaútfærslunni og nýja innri runtime mutex með því að stilla GOEXPERIMENT=noswissmap og GOEXPERIMENT=nospinbitmutex á byggingartíma, í sömu röð.

Þjálfari

Þýðandinn bannaði nú þegar að skilgreina nýjar aðferðir með móttakarategundum sem voru búnar til af cgo, en það var hægt að vinna í kringum þessa takmörkun með tegundarsamnefni. Go 1.24 tilkynnir nú alltaf villu ef móttakandinn táknar cgo-myndaða tegund, annaðhvort beint eða óbeint (með tegund samnefni).

Linker

Tengillinn býr nú til GNU byggingarauðkenni (ELF færsla NT_GNU_BUILD_ID) á ELF kerfum og UUID (Mach-O hleðsluskipun LC_UUID) á macOS sjálfgefið. Byggingarauðkennið eða UUID er dregið af Go byggingarauðkenninu. Hægt er að slökkva á þessu með -B none tengifánanum, eða hnekkja með -B 0xNNNN tengifánanum með notandatilgreindu sextándugildi.

Kynning

Eins og fram kemur í Farðu 1.22 útgáfunótur, Go 1.24 krefst þess að Go 1.22.6 eða nýrri sé uppsettur. Hönnuðir búast við því að Go 1.26 muni krefjast punktaútgáfu af Go 1.24 eða síðar til að koma út.

Venjulegt bókasafn

Skráarkerfisaðgangur takmarkaður

Ný gerð os.rót Veitir getu til að framkvæma skráarkerfisaðgerðir innan ákveðinnar skráar.

Virka os.OpenRoot opnar möppuna og kemur aftur os.rót. Aðferðir á os.rót starfa í þeirri möppu og leyfa ekki slóðum að vísa til staða utan möppunnar, þar með talið þær sem fylgja táknrænum tenglum utan möppunnar. Aðferðirnar á os.Root endurspegla flestar skráarkerfisaðgerðir sem eru tiltækar í OS pakkanum, þar á meðal td, os.Root.Open, os.Root.Create, os.Root.Mkdir и os.Root.Stat.

Nýr viðmiðunareiginleiki

Viðmið geta nú notað hraðari, minni villuhættulegri aðferð testing.B.Loop að endurtaka yfir viðmið eins og fyrir b.Loop() { … } í stað dæmigerðra lykkjubygginga sem felur í sér bN eins og fyrir bil bN Þetta býður upp á tvo verulega kosti:

  • Viðmiðunaraðgerðin er framkvæmd nákvæmlega einu sinni í talningu, þannig að dýru uppsetningar- og hreinsunarskrefin eru aðeins framkvæmd einu sinni.
  • Aðgerðarkallsfæribreytur og niðurstöður lifa áfram og kemur í veg fyrir að þýðandinn geti fullkomlega fínstillt lykkjuhlutann.

Endurbætt lokaútgáfa

Nýr eiginleiki runtime.AddCleanup er útfyllingarkerfi sem er sveigjanlegra, skilvirkara og minna villuhættulegt en runtime.SetFinalizer. AddCleanup tengir hreinsunaraðgerð við hlut sem verður keyrður um leið og hluturinn verður ófáanlegur. Hins vegar, ólíkt SetFinalizer, er hægt að tengja margar hreinsanir við einn hlut, hreinsanir geta verið festar við innri ábendingar, hreinsanir valda venjulega ekki leka þegar hlutir mynda hringrás og hreinsanir tefja ekki úthlutun hlutarins eða hlutanna sem það bendir á. Nýr kóði ætti að kjósa AddCleanup fram yfir SetFinalizer.

Nýr veikur pakki

Nýr pakki veik gefur veikar vísbendingar.

Veikir ábendingar eru frumstæður á lágu stigi sem eru til staðar til að búa til minnisvirkar byggingar eins og veikar orðabækur til að kortleggja gildi, skráningarorðabækur fyrir allt sem ekki er fjallað um í pakka. einstök, og ýmsar gerðir af skyndiminni. Til að styðja þessi notkunartilvik veitir þessi útgáfa einnig runtime.AddCleanup и maphash.Sambærilegt.

Nýr crypto/mlkem pakki

Nýr pakki crypto/mlkem útfærir ML-KEM-768 og ML-KEM-1024.

ML-KEM er eftirskammtalyklaskiptakerfi, áður þekkt sem Kyber og tilgreint í FIPS 203.

Nýir pakkar crypto/hkdf, crypto/pbkdf2 og crypto/sha3

Nýr pakki dulmál/hkdf innleiðir HMAC-undirstaða „Extract-and-Expand“ lykilafleiðslufall HKDF eins og skilgreint er í RFC 5869.

Nýr pakki crypto/pbkdf2 innleiðir lykilorðið sem byggir á lykilafleiðsluaðgerðinni PBKDF2 eins og það er skilgreint í RFC 8018.

Nýr pakki crypto/sha3 útfærir SHA-3 kjötkássaaðgerðina og SHAKE og cSHAKE stækkanlegu úttaksaðgerðirnar eins og skilgreint er í FIPS 202.

Allir þrír pakkarnir eru byggðir á núverandi golang.org/x/crypto/… pakka.

FIPS 140-3 samræmi

Þessi útgáfa inniheldur nýtt sett af aðferðum til að tryggja samræmi við FIPS 140-3.

Go dulmálseiningin er sett af innri stöðluðum bókasafnspökkum sem eru gagnsæir notaðir til að innleiða FIPS 140-3 samþykkta reiknirit. Forrit þurfa ekki breytingar til að nota Go dulmálseininguna fyrir samþykkt reiknirit.

Nýju umhverfisbreytuna GOFIPS140 er hægt að nota til að velja útgáfu af Go dulmálseiningunni til að nota í byggingu. Nýtt GODEBUG uppsetning fips140 er hægt að nota til að virkja FIPS 140-3 ham á keyrslutíma.

Go 1.24 inniheldur Go dulmálseininguna v1.0.0, sem nú er verið að prófa með CMVP-viðurkenndu rannsóknarstofu.

Ný tilraunapakkaprófun/samstillingarpróf

Nýr tilraunapakki prófun/synctest Veitir stuðning við að prófa samhliða kóða.

  • Virka synctest.run rekur hóp af górútínum í einangruðum "kúlu". Í kúla pakkans virka tími starfa á fölskum klukkum.
  • Aðgerðir synctest.wait bíddu þar til allar górútínur eru lokaðar í núverandi kúlu.

Upplýsingar er að finna í pakkanum.

Samstillingarpakkinn er tilraunakenndur og verður að vera virkur með því að stilla GOEXPERIMENT=synctest. API pakkans gæti breyst í framtíðarútgáfum. IN # 67434 Þú getur séð frekari upplýsingar og gefið álit.

Smá breytingar á bókasafninu

skjalasafn

(*Writer.AddFS) útfærslurnar í archive/zip og archive/tar skrifa nú möppuhausinn fyrir tóma möppu.

bœti

Pakkinn bœti bætir við nokkrum aðgerðum sem vinna með endurteknum:

  • Línur Skilar endurtekningu yfir nýlínuaðskilda strengi í bætasneið.
  • SplitSeq skilar endurtekningu yfir allar undirsneiðar bætasneiðar aðskildar með skilju.
  • SplitAfterSeq skilar endurtekningu yfir undirsneiðar bæta sneiðar, skipt eftir hverja tilvik skiljunnar.
  • FieldsSeq skilar endurtekningu yfir undirsneiðar bæta sneiðar í kringum röð af bilstöfum, eins og skilgreint er unicode.IsSpace
  • FieldsFuncSeq skilar endurtekningu yfir undirsneiðar bætisneiðarinnar í kringum raðir af Unicode kóða punktum sem uppfylla forfallið.

crypto/aes

Skilagildi NewChipher útfærir ekki lengur NewCTR, NewGCM, NewCBCEncrypter og NewCBCDecrypter aðferðirnar. Þessar aðferðir voru óskráðar og ekki tiltækar á öllum arkitektúrum. Nú merkingin Lokað verður að fara beint í viðeigandi aðgerðir dulmál / dulmál. Sem stendur athugar dulritun/dulkóðun þessar aðferðir á blokkagildum, jafnvel þó að þær séu ekki lengur studdar af venjulegu bókasafninu.

dulmál / dulmál

Nýr eiginleiki NewGCMWithRandomNonce skilar AEAD, sem útfærir AES-GCM með því að búa til handahófskennda ómerkingu meðan á innsigli stendur og setja það fyrir við dulmálstextann.

Framkvæmd Stream, kom aftur Nýtt smellihlutfall þegar það er notað með crypto/aes nú nokkrum sinnum hraðar á amd64 og arm64.

NewOFB, NewCFBEencrypter и NewCFBDecrypter eru nú úrskurðaðir úreltir. OFB og CFB stillingar eru óstaðfestar, sem gerir venjulega virkar árásir kleift að vinna með og endurheimta texta. Mælt er með því að nota forrit AEAD í staðinn. Ef óstaðfest ham Stream nauðsynlegt, hægt að nota Nýtt smellihlutfall í staðinn.

crypto/ecdsa

Private Key.Sign skapar nú deterministic signature skv RFC 6979, ef handahófsheimildin er engin.

dulmál/md5

Skilagildi md5.nýtt, útfærir nú einnig viðmótið encoding.binaryappender.

crypto/rand

Virka Lesa tryggir nú engar bilanir. Ef Read rekst á villu við lestur Lesandi, áætluninni lýkur varanlega. Athugaðu að sjálfgefinn Reader er skjalfestur til að virka alltaf með góðum árangri, þannig að þessi breyting ætti aðeins að hafa áhrif á forrit sem hnekkja Reader breytunni. Ein undantekning er Linux kjarna fyrir 3.17, þar sem sjálfgefinn lesandi opnar enn /dev/urandom og gæti bilað.

Í Linux 6.11 og nýrri notar Reader nú getrandom kerfiskallið í gegnum vDSO. Þetta er nokkrum sinnum hraðari, venjulega fyrir litla lestur.

Á OpenBSD Reader notar nú arc4random_buf(3).

Nýr eiginleiki Texti getur nú búið til dulmálslega örugga textastrengi af handahófi.

crypto/rsa

GenerateKey skilar nú villu ef beðið er um minni lyklalengd en 1024 bita. Allar aðferðir undirrita, staðfesta, dulkóða og afkóða skila nú villu ef þær eru notaðar með lykilstærð minni en 1024 bita. Slíkir lyklar eru óöruggir og ætti ekki að nota. Setja upp GODEBUG rsa1024min=0 endurheimtir gamla hegðun, en Go forritararnir mæla með því að gera þetta aðeins þegar nauðsyn krefur og aðeins í prófum, til dæmis með því að bæta línunni //go:debug rsa1024min=0 við prófunarskrána. Nýtt Dæmi GenerateKey býður upp á einfaldan 2024 bita prófunarlykil sem auðvelt er að nota.

Nú er öruggara og skilvirkara að hringja PrivateKey.Precompute í PrivateKey.Validate. Precompute er nú hraðari í viðurvist að hluta til fyllt Precomputed Values, til dæmis þegar lykill er dregið úr JSON.

Pakkinn hafnar nú fleiri ógildum lyklum jafnvel þegar Validate er ekki kallað, og GenerateKey getur nú skilað nýjum villum fyrir brotnar heimildir fyrir handahófi. Fields Primes и Forreiknað mannvirki Einkalykill eru nú notaðir og staðfestir jafnvel þegar einhver gildi vantar. Það eru líka breytingar á crypto/x509 til að flokka og draga út RSA lykla, lýst hér að neðan.

SignPKCS1v15 и StaðfestuPKCS1v15 styður nú SHA-512/224, SHA-512/256 og SHA-3.

GenerateKey notar nú aðeins aðra aðferð til að búa til einkaveldisvaldið (Carmichael fall í stað Euler fall). Mjög sjaldgæf forrit sem endurskapa lykla utanaðkomandi úr prímtölum geta skilað mismunandi en samhæfum árangri.

Aðgerðir á opinberum og einkalyklum eru nú allt að tvisvar sinnum hraðari á wasm.

crypto/sha*

dulmál/lúmskur

Nýr eiginleiki WithDataIndependentTiming gerir notandanum kleift að framkvæma aðgerð með arkitektúrsértækum eiginleikum virkt sem tryggja að ákveðnum leiðbeiningum sé ekki breytt miðað við tíma gagnagildis. Þetta er hægt að nota til að tryggja að kóði sem skrifaður er til að keyra á stöðugum tíma hafi ekki verið fínstilltur með aðgerðum á örgjörvastigi þannig að hann keyri á breytilegum tíma. Eins og er notar WithDataIndependentTiming PSTATE.DIT bitann á arm64 og gerir ekkert á öllum öðrum arkitektúrum. Setja upp GODEBUG dataindependenttiming=1 virkjar DIT ham fyrir allt Go forritið.

Output XORBæti verður að skarast alveg eða alls ekki við inntakið. Áður var hegðunin óskilgreind að öðru leyti, en núna munu XORBytes örvænta.

dulmál/tls

TLS þjónninn styður nú Encrypted Client Hello (ECH). Hægt er að virkja þennan eiginleika með því að fylla út reitinn. Config.EncryptedClientHelloKeys.

Nýtt kerfi eftir skammtalyklaskipti X25519MLKEM768 nú stutt og virkt sjálfgefið hvenær Config.CurvePreferences er engin. Setja upp GODEBUG tlsmlkem=0 skilar sjálfgefnu.

Stuðningur við tilrauna X25519Kyber768Draft00 lyklaskipti hefur verið fjarlægður.

Lyklaskiptapöntunin er nú meðhöndluð alfarið af crypto/tls pakkanum. Panta Config.CurvePreferences er nú hunsuð og innihaldið er aðeins notað til að ákvarða hvaða lykilskipti á að hafa með þegar reiturinn er fylltur út.

Nýr völlur ClientHelloInfo.Extensions Listi yfir kennitölu eftirnafna sem berast í skilaboðum um viðskiptavin Halló. Þetta getur verið gagnlegt fyrir fingrafaratöku TLS viðskiptavini.

crypto/x509

Setja upp GODEBUG x509sha1 hefur verið fjarlægt. Vottun.Staðfestu styður ekki lengur SHA-1 undirskriftir.

OID innleiðir nú viðmót encoding.binaryappender и encoding.TextAppender.

Sjálfgefna vottorðastefnureitnum hefur verið breytt úr Certificate.PolicyIdentifiers á Vottorð.Stefna. Við þáttun vottorða verða báðir reitirnir útfylltir, en þegar vottorðastefna er búin til verða þau tekin úr Certificate.Policies reitnum í stað Certificate.PolicyIdentifiers. Þessari breytingu má afturkalla. GODEBUG uppsetning x509usepolicies=0.

Búa til vottorð mun nú búa til raðnúmer með því að nota RFC 5280 samhæfða aðferð þegar sniðmátareit er framhjá Vottorð.Raðnúmer núll, í stað þess að hrynja.

Vottorð.Staðfestu styður nú löggildingu stefnu eins og skilgreint er í RFC 5280 og RFC 9618. Nýr reitur VerifyOptions.CertificatePolicies hægt að stilla á viðunandi sett af stefnum OIDs. Aðeins vottorðakeðjur með gild stefnurit verða skilað frá Vottorð.Staðfestu.

MarshalPKCS8PrivateKey skilar nú villu í stað þess að sækja ógildan RSA lykil. (MarshalPKCS1PrivateKey hefur enga villuskila og hegðun þess þegar ógildir lyklar eru gefnir upp er óskilgreint.)

ParsePKCS1PrivateKey и ParsePKCS8PrivateKey notaðu og staðfestu nú kóðuð CRT gildi, svo þú getur hafnað ógildum RSA lyklum sem áður voru samþykktir. Notkun GODEBUG stillingar x509rsacrt=0 fer aftur í endurútreikning á CRT-gildum.

kemba/álfur

Pakkinn kemba/álfur Bætir við stuðningi við að meðhöndla táknútgáfur í kraftmiklum ELF (Executable and Linkable Format) skrám. Ný aðferð File.DynamicVersions Skilar lista yfir kvikar útgáfur sem eru skilgreindar í ELF skrá. Ný aðferð File.DynamicVersionNeeds Skilar lista yfir kraftmikla útgáfur sem krafist er af þessari ELF skrá sem eru skilgreindar í öðrum ELF hlutum. Loksins ný svið Symbol.HasVersion и Symbol.VersionIndex tilgreina útgáfu táknsins.

kóðun

Tvö ný viðmót TextAppender и BinaryAppender voru kynntar til að bæta texta eða tvöfaldri framsetningu hlutar við bætisneið. Þessi viðmót veita sömu virkni og Texti Marshaler и BinaryMarshaler, en í stað þess að úthluta nýrri sneið í hvert sinn, bæta þeir gögnum beint við núverandi sneið. Þessi viðmót eru nú útfærð af stöðluðum gerðum bókasafna sem þegar innleiða TextMarshaler og/eða BinaryMarshaler.

kóðun/json

Við byggingu verður byggingarreitur með nýja omitzero valmöguleikanum í byggingarreitarmerkinu sleppt ef gildi hans er núll. Ef reitgerðin hefur IsZero() bool aðferð, verður hún notuð til að ákvarða hvort gildið sé núll. Annars verður gildið núll ef það er núllgildi fyrir gerð þess. Omitzero reitmerkið er hreinna og minna tilhneigingu til villu en að sleppa þegar ætlunin er að sleppa núllgildum. Sérstaklega, ólíkt því að sleppa, sleppir omitzero núllum tími.tími gildi, sem er algeng uppspretta vandamála.

Ef bæði umitempty og omitzero eru tilgreind, verður reitnum sleppt ef gildið er tómt eða núll (eða bæði).

UnmarshalTypeError.Field inniheldur nú innbyggða mannvirki til að veita ítarlegri villuboð.

fara/tegundir

Öll go/types gagnastrúktúr sem afhjúpar raðir af aðferðapörum, eins og Len() int og At(int) T, hafa nú einnig aðferðir sem skila endurteknum, sem leyfa einfaldari kóða eins og þennan:

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

Á þessum:

fyrir param := svið fn.Signature().Params().Variables() { use(param) }

Aðferðir: Interface.EmbeddedTypes Interface.ExplicitMethods Tengi. Aðferðir MethodSet.Methods Nefnd.Aðferðir Gildissvið.Börn Uppbygging.Reiti Tuple.Variables TypeList.Types TypeParamList.TypeParams Sambandsskilmálar

hass/*

log/slog

Nýtt DiscardHandler er meðhöndlun sem er aldrei virkjuð og fleygir alltaf úttakinu.

Stig и LevelVar innleiða nú viðmótið encoding.TextAppender.

stærðfræði/*

nettó

Hlustaðu Condig notar nú MPTCP sjálfgefið á kerfum þar sem það er stutt (núna aðeins Linux).

IP útfærir nú viðmótið encoding.TextAppender.

net/http

Takmörkunin hefur breyst Samgöngur við mótteknum 1xx upplýsingasvörum sem svar við beiðninni. Áður myndi þetta stöðva beiðnina og skila villu eftir að hafa fengið meira en 5 1xx svör. Þetta skilar nú aðeins villu ef heildarstærð allra 1xx svöranna fer yfir stillingarstillinguna Transport.MaxResponseHeaderBytes.

Einnig þegar beiðni er með rakningarkrók net/http/httptrace.ClientTrace.Got1xxResponse, nú eru engin takmörk á heildarfjölda svara 1xx. Got1xxResponse krókurinn getur skilað villu til að stöðva beiðnina.

Samgöngur и Server hafa nú HTTP2 reit sem gerir kleift að stilla HTTP/2 samskiptareglur.

Nýir vellir Server.Protocols и Samgöngur. Bókanir bjóða upp á einfalda leið til að stilla hvaða HTTP samskiptareglur þjónninn eða viðskiptavinurinn notar.

Hægt er að stilla þjóninn og biðlarann ​​til að styðja ódulkóðaðar HTTP/2 tengingar.

Þegar Server.Protocols inniheldur UnencrypterHTTP2, þjónninn mun samþykkja HTTP/2 tengingar á ódulkóðuðum höfnum. Miðlarinn getur samþykkt bæði HTTP/1 og ódulkóðaða HTTP/2 á sömu höfn.

Þegar Samgöngur. Bókanir inniheldur ódulkóðað HTTP2 og inniheldur ekki HTTP1, flutningurinn mun nota ódulkóðaða HTTP/2 fyrir heimilisföng http://. Ef flutningur er stilltur til að nota bæði HTTP/1 og ódulkóðaða HTTP/2 mun hann nota HTTP/1.

Stuðningur við ódulkóðaða HTTP/2 notar „HTTP/2 með Forward-Learning“ (RFC 9113, hluti 3.3). Úrelti hausinn „Uppfærsla: h2c“ er ekki studdur.

net/netip

Addr, AdrPort и Forskeyti innleiða nú viðmót encoding.binaryappender и encoding.TextAppender.

net/url

URL útfærir nú einnig viðmótið encoding.binaryappender.

OS/notandi

Á Windows Núverandi er nú hægt að nota í Windows Nano Server. Útfærslan hefur verið uppfærð til að forðast að nota aðgerðir úr NetApi32 bókasafninu, sem vantar á Nano Server.

Á Windows Núverandi, Horfðu upp и LookupId styður nú eftirfarandi innbyggða notendaþjónustureikninga:

  • NT YFIRVÖLD
  • STÆÐAÞJÓNUSTA NT YFIRVÖLD
  • NT ÞJÓNUSTA STOFNANETAR

Á Windows Núverandi var verulega hraðað þegar núverandi notandi er tengdur hægu léni, sem er algengt hjá mörgum fyrirtækjanotendum. Afköst nýju útfærslunnar eru nú á bilinu millisekúndur, miðað við fyrri útfærslu, sem gæti tekið nokkrar sekúndur, jafnvel mínútur, að klára.

Á Windows Núverandi skilar nú notanda ferliseiganda þegar núverandi þráður er að herma eftir öðrum notanda. Áður skilaði þetta villu.

regexp

Regexp útfærir nú viðmótið encoding.TextAdapter.

afturkreistingur

Virka GOROOT er nú afskrifað. Í nýrri umhverfi ættirðu frekar að nota kerfisslóðina til að skilgreina „fara“ tvíundirinn og nota go env GOROOT til að skilgreina GOROOT.

strengir

Pakkinn strengir bætir við nokkrum aðgerðum til að vinna með endurtekningu:

  • Línur Skilar endurtekningu yfir nýlínuaðskildar línur í streng.
  • SplitSeq skilar endurtekningu yfir alla undirstrengi strengs aðskilinn með skilju.
  • SplitAfterSeq skilar endurtekningu yfir undirstrengi strengs, skipt eftir hvert tilvik skilgreinarinnar.
  • FieldsSeq skilar endurtekningu yfir undirstrengi strengs í kringum raðir hvítbilsstafa, eins og skilgreint erunicode.IsSpace
  • FieldsFuncSeq Skilar endurtekningu yfir undirstrengi strengs í kringum raðir af Unicode kóða punktum sem uppfylla forsögn.

sync

Framkvæmd sync.map hefur verið breytt til að bæta árangur, sérstaklega fyrir breytingar á orðabókum. Til dæmis er ólíklegrar deilu um breyting á mengi ólíklegra í stórum orðabókum og það þarf ekki lengur uppbyggingartíma til að fá lítið álag á orðabók.

Ef þú lendir í einhverjum vandræðum skaltu stilla GOEXPERIMENT=nosynchashtriemap meðan á smíði stendur til að fara aftur í gömlu útfærsluna og vinsamlegast fylltu út vandamálaeyðublaðið.

próf

Nýjar aðferðir T.Samhengi и B.Samhengi skila samhengi sem er hent eftir að prófun lýkur og áður en prófhreinsunaraðgerðir eru framkvæmdar.

Nýjar aðferðir T.Chdir и B.Chdir hægt að nota til að breyta vinnuskránni meðan á prófi eða viðmiði stendur.

texta/sniðmát

Sniðmát styðja nú range-over-func og range-over-int.

tími

tími innleiðir nú viðmót encoding.binaryappender и encoding.TextAppender.

Hafnir

Linux

Eins og það var tilkynnt Samkvæmt útgáfuskýringunum Go 1.23 þarf Go 1.24 Linux kjarna útgáfu 3.2 eða nýrri.

Darwin

Go 1.24 er síðasta útgáfan sem mun keyra á macOS 11 Big Sur. Go 1.25 mun krefjast macOS 12 Monterey eða nýrri.

WebAssembly

Go:wasmexport þýðandatilskipuninni hefur verið bætt við Go forrit til að flytja út aðgerðir til WebAssembly hýsilsins.

Í WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm), styður Go 1.24 að byggja upp Go forrit sem reactor/bókasafn með því að tilgreina byggingarfánann -buildmode=c-shared.

Fleiri gerðir eru nú leyfðar sem rök eða niðurstöðugerðir fyrir go:wasmimport aðgerðir. Sérstaklega eru bool, strengur, uintptr og ábendingar um ákveðnar tegundir leyfðar (sjá upplýsingar í skjöl), ásamt 32-bita og 64-bita heiltölu- og fljótandi tegundum og óöruggum.Pointer, sem eru nú þegar leyfðar. Þessar tegundir eru einnig leyfðar sem rök eða niðurstöður fyrir go:wasmexport aðgerðir.

Stuðningsskrár fyrir WebAssembly hafa verið færðar í lib/wasm úr misc/wasm.

Upphaflegt minnisfótspor er verulega minnkað, sérstaklega fyrir lítil WebAssembly forrit.

Windows

32-bita glugga/arm tengi (GOOS=windows GOARCH=arm) hefur verið merkt sem biluð. Upplýsingar í # 70705

Heimild: linux.org.ru

Kauptu áreiðanlega hýsingu fyrir síður með DDoS vernd, VPS VDS netþjónum 🔥 Kauptu áreiðanlega vefhýsingu með DDoS vörn, VPS VDS netþjónum | ProHoster