Nenda 1.24

Nenda 1.24

Toleo jipya la lugha ya Go, toleo la 1.24, linakuja miezi sita baadaye Nenda 1.23. Mabadiliko mengi ni katika utekelezaji wa mnyororo wa zana, wakati wa utekelezaji na maktaba. Kama kawaida, kutolewa hutoa ahadi ya utangamano Nenda 1. Wasanifu wa lugha wanatarajia kuwa karibu programu zote za Go zitaendelea kukusanywa na kuendeshwa kama hapo awali.

Mabadiliko ya lugha

Go 1.24 sasa inasaidia kikamilifu lakabu za aina ya generic: lakabu ya aina inaweza kuainishwa kama aina iliyotangazwa. Maelezo ndani vipimo vya lugha. Kwa sasa, kipengele hiki kinaweza kulemazwa kwa kuweka GOEXPERIMENT=noaliastypeparams; Walakini, chaguo la aliastypeparams litaondolewa katika Go 1.25.

Vyombo vya

Nenda amri

Sehemu za Go sasa zinaweza kufuatilia vitegemezi vinavyotekelezeka kwa kutumia maagizo ya zana katika go.mod. Hii huondoa hitaji la marekebisho ya awali ya kuongeza zana kama uagizaji tupu katika faili ambayo kwa kawaida huitwa "tools.go". Amri ya zana ya kwenda sasa inaweza kuendesha zana hizi pamoja na zana zinazokuja na Go. Habari zaidi inaweza kupatikana kwa nyaraka.

Alama mpya ya -tool for go get husababisha maagizo ya zana kuongezwa kwenye sehemu ya sasa ya vifurushi vilivyobainishwa pamoja na kuongeza kuhitaji maagizo.

Mpya chombo cha muundo wa meta inarejelea zana zote kwenye moduli ya sasa. Hii inaweza kutumika kusasisha zote kupitia zana ya kwenda kupata, au kuzisakinisha kwenye saraka yako ya GOBIN kupitia zana ya kusakinisha.

Vitekelezo vilivyoundwa kupitia go run na tabia mpya ya zana ya kwenda sasa imehifadhiwa kwenye akiba ya Go build. Hii inafanya uzinduzi unaorudiwa iwezekanavyo kwa sababu ya kache iliyoongezeka. #69290.

Maagizo ya go build and go install sasa yakubali -json bendera, ambayo inaripoti matokeo ya ujenzi na makosa kama matokeo ya muundo wa JSON kwenye pato la kawaida. Maelezo ya umbizo yanaweza kuonekana katika go help buildjson.

Zaidi ya hayo, go test -json sasa inaripoti matokeo na kujenga makosa katika JSON, iliyochanganywa na matokeo ya mtihani JSON. Zinaweza kutofautishwa na aina mpya za Vitendo, lakini ikiwa zitasababisha matatizo katika mfumo wa ujumuishaji wa jaribio, unaweza kurudi kwenye matokeo ya maandishi ya muundo kupitia Mpangilio wa GODEBUG getestjsonbuildtext=1.

Tofauti mpya ya mazingira ya GOAUTH hutoa njia rahisi ya kuidhinisha uvutaji wa moduli za kibinafsi. Unaweza kuona maelezo kwenye go help goauth.

Amri ya kwenda kujenga sasa imewekwa toleo la moduli kuu katika jozi iliyokusanywa, kulingana na lebo na/au ahadi ya kudhibiti toleo. Kiambishi cha +chafu kitaongezwa ikiwa kuna mabadiliko ambayo hayajatekelezwa. Alama ya -buildvcs=false inaweza kutumika kuacha maelezo ya udhibiti wa toleo kutoka kwa mfumo wa jozi.

Mpya Mpangilio wa GODEBUG toolchaintrace=1 sasa inaweza kutumika kufuatilia mchakato wa uteuzi wa toolchain katika amri ya kwenda.

Cgo

Cgo inaauni vidokezo vipya vya utendakazi wa C ili kuboresha utendakazi wa wakati wa utekelezaji. #cgo noescape cFunctionName humwambia mkusanyaji kwamba kumbukumbu iliyopitishwa kwa chaguo la kukokotoa la C cFunctionName haijaepukika. #cgo nocallback cFunctionName humwambia mkusanyaji kuwa kitendakazi cha C cFunctionName hakirudishi tena vitendaji vyovyote vya Go. Habari zaidi inaweza kupatikana kwa nyaraka za cgo.

Cgo kwa sasa inakataa kukusanya simu kwa chaguo la kukokotoa la C ambalo lina matamko mengi ambayo hayaoani. Kwa mfano, ikiwa f itatangazwa kuwa batili f(int) na void f(double), cgo itaripoti hitilafu badala ya uwezekano wa kutoa mlolongo batili wa kupiga simu f(0). Mpya katika toleo hili ni ugunduzi bora wa hali hii ya hitilafu wakati matamko yasiyooana yanapoonekana katika faili tofauti. #67699.

Objdump

Zana ya objdump sasa inasaidia utenganishaji kwenye 64-bit LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64), na S390X (GOARCH=s390x).

Fat

Kichanganuzi kipya cha majaribio huripoti makosa ya kawaida katika jaribio, fuzzer, benchmark, na matamko ya mfano katika vyumba vya majaribio, kama vile majina yenye hitilafu, sahihi batili au mifano inayoandika vitambulishi visivyopo. Baadhi ya makosa haya yanaweza kusababisha majaribio kushindwa.

Kichanganuzi cha printf kilichopo sasa kinaripoti uchunguzi wa simu za fomu fmt.Printf(s), ambapo s ni mfuatano wa umbizo usio thabiti usio na vigezo vingine. Simu kama hizo ni karibu kila wakati makosa, kwani thamani ya s inaweza kuwa na herufi %; tumia fmt.Print badala yake. 60529. Alama hii inaelekea kupata vitu katika msimbo uliopo, na kwa hivyo inatumika tu wakati toleo la lugha (kama ilivyobainishwa na agizo la kwenda la faili ya go.mod au maoni `//go:build`) ni angalau Go 1.24, ili kuepuka kusababisha mapumziko marefu ya ujumuishaji wakati wa kupata toleo jipya la Go 1.24 toolchain.

Kichanganuzi cha lebo ya kujenga kilichopo sasa kinaripoti uchunguzi wakati kuna lebo ya kujenga isiyo sahihi toleo la zamani kujenga kizuizi Nenda katika //go:build maagizo. Kwa mfano, //go:build go1.23.1 inarejelea kutolewa kwa uhakika; badala yake tumia //go:build go1.23. #64127.

Kichanganuzi cha kunakili kilichopo sasa kinaripoti uchunguzi wakati kigezo kinatangazwa katika kitanzi cha "kwa" mara tatu, kama vile kwa i := iter(); kufanyika (i); i = next(i) { … }, ina sync.Locker, kama vile sync.Mutex. Nenda 1.22 ilibadilisha tabia ya vitanzi kama hivyo ili kuunda tofauti mpya kwa kila iteration, kuiga maadili kutoka kwa iteration ya awali; Kunakili huku si salama kwa kufuli. #66387.

GOCACHEPROG

Mbinu ya ndani ya cmd/go binary na utaratibu wa kuweka akiba ya majaribio sasa inaweza kutekelezwa na michakato ya mtoto inayotekeleza itifaki ya JSON kati ya zana ya cmd/go na mchakato wa mtoto uliopewa jina na utofauti wa mazingira wa GOCACHEPROG. Hapo awali ilikuwa ya GOEXPERIMENT. Maelezo ya itifaki yanaweza kuonekana katika nyaraka.

Muda wa kukamilika

Maboresho kadhaa ya utendakazi wakati wa utekelezaji yalipunguza uendeshaji wa CPU kwa 2-3% kwa wastani katika seti ya vigezo wakilishi. Matokeo yanaweza kutofautiana kulingana na programu. Maboresho haya yanajumuisha utekelezaji mpya wa ramani uliojengewa ndani kulingana na Majedwali ya Kiswidi, ugawaji bora zaidi wa kumbukumbu ya kitu kidogo, na utekelezaji mpya wa ndani wa wakati wa kukimbia wa bubu.

Utekelezaji mpya wa ramani uliojengewa ndani na kibubu kipya cha wakati wa ndani kinaweza kuzimwa kwa kuweka GOEXPERIMENT=noswissmap na GOEXPERIMENT=nospinbitmutex kwa wakati wa kujenga, mtawalia.

Mkusanyaji

Mkusanyaji tayari amepiga marufuku kufafanua mbinu mpya na aina za vipokeaji ambazo zilitolewa na cgo, lakini iliwezekana kufanyia kazi kizuizi hiki kupitia lakabu ya aina. Go 1.24 sasa huripoti hitilafu kila wakati ikiwa mpokeaji anaonyesha aina inayozalishwa na cgo, moja kwa moja au isiyo ya moja kwa moja (kupitia aina ya pak).

Kiungo

Kiunganishi sasa kinatoa kitambulisho cha ujenzi wa GNU (ingizo la ELF NT_GNU_BUILD_ID) kwenye majukwaa ya ELF na UUID (amri ya kupakia ya Mach-O LC_UUID) kwenye macOS kwa chaguo-msingi. Kitambulisho cha kujenga au UUID kinatokana na kitambulisho cha Go build. Hii inaweza kuzimwa kwa -B none alamisho ya kiunganishi, au kubatilisha alama ya -B 0xNNNN ya kiunganishi yenye thamani ya heksadesimali iliyobainishwa na mtumiaji.

Ukuzaji

Kama ilivyoelezwa katika Nenda 1.22 maelezo ya kutolewa, Go 1.24 sasa inahitaji Go 1.22.6 au baadaye kusakinishwa. Wasanidi wanatarajia kuwa Go 1.26 itahitaji toleo la pointi la Go 1.24 au baadaye ili kutekelezwa.

Maktaba ya Kawaida

Ufikiaji wa mfumo wa faili wenye vikwazo vya saraka

Aina mpya os.mzizi Hutoa uwezo wa kufanya shughuli za mfumo wa faili ndani ya saraka maalum.

Kazi os.OpenRoot inafungua saraka na inarudi os.mzizi. Mbinu zimewashwa os.mzizi fanya kazi katika saraka hiyo na usiruhusu njia kurejelea maeneo yaliyo nje ya saraka, pamoja na yale yanayofuata viungo vya mfano nje ya saraka. Mbinu zilizo kwenye os.Root zinaonyesha shughuli nyingi za mfumo wa faili zinazopatikana kwenye kifurushi cha os, ikijumuisha, kwa mfano, os.Mizizi.Fungua, os.Mzizi.Unda, os.Root.Mkdir ΠΈ os.Root.Stat.

Kipengele kipya cha alama

Vigezo sasa vinaweza kutumia mbinu ya haraka, isiyo na makosa kupima.B.Loop kusisitiza juu ya alama kama ya b.Loop() { … } badala ya miundo ya kawaida ya kitanzi inayohusisha bN kama kwa anuwai bN Hii inatoa faida mbili muhimu:

  • Utendakazi wa alama hutekelezwa mara moja kwa kila -hesabu, kwa hivyo hatua za usanidi na usafishaji ghali hufanywa mara moja tu.
  • Vigezo vya simu za kukokotoa na matokeo huendelea kuishi, kuzuia mkusanyaji kutoka kuboresha kabisa mwili wa kitanzi.

Wakamilishaji walioboreshwa

Kipengele kipya wakati wa kukimbia.OngezaCleanup ni njia ya kukamilisha ambayo ni rahisi kunyumbulika zaidi, yenye ufanisi zaidi, na isiyo na hitilafu kidogo kuliko Runtime.SetFinalizer. AddCleanup huambatisha kitendakazi cha kusafisha kwa kitu ambacho kitaendeshwa mara tu kitu kitakapokosekana. Walakini, tofauti na SetFinalizer, usafishaji mwingi unaweza kuunganishwa kwa kitu kimoja, usafishaji unaweza kushikamana na viashiria vya ndani, usafishaji kwa kawaida hausababishi uvujaji wakati vitu vinapounda mzunguko, na usafishaji haucheleweshi ugawaji wa kitu au vitu vinavyoelekeza. Nambari mpya inapaswa kupendelea AddCleanup kuliko SetFinalizer.

Kifurushi kipya dhaifu

Kifurushi kipya dhaifu hutoa viashiria dhaifu.

Viashirio dhaifu ni hali ya awali ya kiwango cha chini inayotolewa kwa ajili ya kuunda miundo yenye ufanisi wa kumbukumbu kama vile kamusi hafifu za thamani za uchoraji ramani, kamusi za uhalalishaji wa kanuni za kitu chochote ambacho hakijashughulikiwa na kifurushi. kipekee, na aina mbalimbali za kache. Ili kusaidia kesi hizi za utumiaji, toleo hili pia hutoa wakati wa kukimbia.OngezaCleanup ΠΈ maphash.Kulinganishwa.

Kifurushi kipya cha crypto/mlkem

Kifurushi kipya crypto/mlkem hutumia ML-KEM-768 na ML-KEM-1024.

ML-KEM ni utaratibu wa kubadilishana ufunguo wa baada ya quantum, hapo awali ulijulikana kama Kyber na ulibainishwa ndani FIPS 203.

Vifurushi vipya vya crypto/hkdf, crypto/pbkdf2 na crypto/sha3

Kifurushi kipya crypto/hkdf hutekelezea kitendakazi cha upatanishi wa msingi wa HMAC "Nyoa-na-Panua" HKDF kama inavyofafanuliwa katika RFC 5869.

Kifurushi kipya crypto/pbkdf2 hutekeleza kitendakazi cha unyambulishaji wa ufunguo kulingana na nenosiri PBKDF2 kama inavyofafanuliwa ndani RFC 8018.

Kifurushi kipya crypto/sha3 hutekeleza kazi ya SHA-3 ya heshi na SHAKE na cSHAKE kazi za pato zinazoweza kuongezwa kama inavyofafanuliwa katika FIPS 202.

Vifurushi vyote vitatu vinatokana na vifurushi vilivyopo vya golang.org/x/crypto/….

FIPS 140-3 Uzingatiaji

Toleo hili linajumuisha seti mpya ya taratibu za kuhakikisha ufuasi wa FIPS 140-3.

Moduli ya Go crypto ni seti ya vifurushi vya kawaida vya maktaba ambavyo vinatumika kwa uwazi kutekeleza algoriti zilizoidhinishwa za FIPS 140-3. Programu hazihitaji mabadiliko ili kutumia moduli ya Go crypto kwa algoriti zilizoidhinishwa.

Tofauti mpya ya mazingira GOFIPS140 inaweza kutumika kuchagua toleo la moduli ya Go crypto litakalotumika katika ujenzi. Mpya Mpangilio wa GODEBUG fips140 inaweza kutumika kuwezesha hali ya FIPS 140-3 wakati wa utekelezaji.

Go 1.24 inajumuisha moduli ya Go crypto v1.0.0, ambayo kwa sasa inajaribiwa na maabara iliyoidhinishwa na CMVP.

Jaribio jipya la kifurushi cha majaribio/synctest

Kifurushi kipya cha majaribio kupima/synctest Hutoa usaidizi wa kujaribu msimbo kwa wakati mmoja.

  • Kazi synctest.run huendesha kikundi cha goroutines katika "Bubble" iliyotengwa. Katika Bubble ya kazi ya mfuko wakati fanya kazi kwenye saa za uwongo.
  • Kazi Syncest.subiri subiri hadi goroutines zote zimezuiwa kwenye kiputo cha sasa.

Maelezo yanaweza kupatikana katika nyaraka za kifurushi.

Kifurushi cha ulandanishi ni cha majaribio na lazima kiwezeshwe kwa kuweka GOEXPERIMENT=synctest. API ya kifurushi inaweza kubadilika katika matoleo yajayo. KATIKA #67434 Unaweza kuona maelezo zaidi na kutoa maoni.

Mabadiliko madogo kwenye maktaba

archive

Utekelezaji (*Writer.AddFS) kwenye kumbukumbu/zip na jalada/tar sasa andika kichwa cha saraka kwa saraka tupu.

ka

Ufungaji ka inaongeza kazi kadhaa zinazofanya kazi na viboreshaji:

  • Mistari Hurejesha kirudia tena juu ya mifuatano iliyotenganishwa kwa laini mpya katika kipande kidogo.
  • SplitSeq hurejesha kiboreshaji juu ya vijisehemu vidogo vya kipande cha baiti kilichotenganishwa na kitenganishi.
  • SplitAfterSeq hurejesha kirudia tena juu ya vijisehemu vya baiti, iliyogawanyika baada ya kila kutokea kwa kitenganishi.
  • MashambaSeq hurejesha kirudia tena juu ya vijisehemu vya baiti karibu na mfuatano wa herufi za nafasi, kama inavyofafanuliwa. unicode.IsSpace
  • FieldsFuncSeq hurejesha kirudishio juu ya vijisehemu vya baiti karibu na mfuatano wa nukta za msimbo wa Unicode kutosheleza kiima.

crypto/aes

Thamani ya kurudi NewChipher haitekelezi tena mbinu za NewCTR, NewGCM, NewCBCEencrypter, na NewCBCDecrypter. Njia hizi hazikuwa na kumbukumbu na hazipatikani kwenye usanifu wote. Sasa maana Kuzuia lazima ipitishwe moja kwa moja kwa kazi zinazofaa crypto/cipher. Kwa sasa, crypto/cipher bado hukagua njia hizi kwenye thamani za Block, ingawa hazitumiki tena na maktaba ya kawaida.

crypto/cipher

Kipengele kipya NewGCMWithRandomNonce anarudi AEAD, ambayo hutekeleza AES-GCM kwa kutoa nonce nasibu wakati wa Muhuri na kuitayarisha kwa maandishi ya siri.

Utekelezaji Mkondo, akarudi MpyaCTR inapotumiwa na crypto/aes sasa mara kadhaa kwa kasi zaidi kwenye amd64 na arm64.

NewOFB, Kisimbaji kipya chaCFBE ΠΈ NewCFBDDecrypter sasa zimetangazwa kuwa hazitumiki. Aina za OFB na CFB hazijaidhinishwa, ambazo kwa ujumla huruhusu mashambulizi amilifu kudanganya na kurejesha maandishi wazi. Maombi yanapendekezwa kutumia AEAD kwa malipo. Ikiwa hali haijathibitishwa Mkondo muhimu, inaweza kutumika MpyaCTR kwa malipo.

crypto/ecdsa

Ufunguo.Saini sasa inaunda saini ya kuamua kulingana na RFC 6979, ikiwa chanzo cha bahati nasibu hakina.

crypto/md5

Thamani ya kurudi md5.mpya, sasa pia inatekelezea kiolesura encoding.binaryappender.

crypto/rand

Kazi Kusoma sasa inahakikisha hakuna kushindwa. Ikiwa Soma itakutana na hitilafu wakati wa kusoma Msomaji, programu itasitishwa kabisa. Kumbuka kuwa Kisomaji chaguo-msingi kimeandikwa ili kufanya kazi kwa mafanikio kila wakati, kwa hivyo mabadiliko haya yanapaswa kuathiri tu programu zinazobatilisha utofauti wa Kisomaji. Isipokuwa moja ni kokwa za Linux kabla ya 3.17, ambapo Kisomaji chaguo-msingi bado hufungua /dev/urandom na kinaweza kushindwa.

Kwenye Linux 6.11 na baadaye, Reader sasa hutumia simu ya mfumo wa getrandom kupitia vDSO. Hii ni mara kadhaa haraka, kwa kawaida kwa usomaji mdogo.

Kwenye OpenBSD Reader sasa hutumia arc4random_buf(3).

Kipengele kipya Nakala sasa inaweza kutengeneza mifuatano ya maandishi nasibu iliyo salama ya kriptografia.

crypto/rsa

TengenezaUfunguo sasa inarudisha hitilafu ikiwa urefu wa ufunguo wa chini ya biti 1024 umeombwa. Mbinu zote za Sahihi, Thibitisha, Simba, na Simbua sasa hurejesha hitilafu ikiwa itatumiwa na ukubwa wa ufunguo chini ya biti 1024. Funguo kama hizo sio salama na hazipaswi kutumiwa. Kuanzisha GODEBUG rsa1024min=0 hurejesha tabia ya zamani, lakini watengenezaji wa Go wanapendekeza kufanya hivyo tu inapobidi na katika majaribio tu, kwa mfano kwa kuongeza laini //go:debug rsa1024min=0 kwenye faili ya jaribio. Mpya mfano GenerateKey hutoa ufunguo wa kawaida wa majaribio wa 2024-bit ulio rahisi kutumia.

Sasa ni salama na ufanisi zaidi kupiga simu Ufunguo wa Kibinafsi.Toa hesabu kwa Ufunguo wa Kibinafsi.Thibitisha. Precompute sasa ni kasi katika uwepo wa kujazwa kiasi Thamani Zilizokokotwa, kwa mfano wakati wa kutoa ufunguo kutoka kwa JSON.

Kifurushi sasa kinakataa funguo zaidi batili hata wakati Thibitisha haijaitwa, na TengenezaUfunguo sasa inaweza kurudisha makosa mapya kwa vyanzo vilivyovunjika vya bahati nasibu. Viwanja Primes ΠΈ Imekokotwa mapema muundo Ufunguo wa Kibinafsi sasa zinatumika na kuthibitishwa hata wakati baadhi ya maadili yanakosekana. Pia kuna mabadiliko kwa crypto/x509 kwa kuchanganua na kutoa funguo za RSA, zilizofafanuliwa hapa chini.

IsharaPKCS1v15 ΠΈ ThibitishaPKCS1v15 sasa unaweza kutumia SHA-512/224, SHA-512/256 na SHA-3.

TengenezaUfunguo sasa hutumia njia tofauti kidogo kutoa kipeo cha kibinafsi (kazi ya Carmichael badala ya kazi ya Euler). Programu adimu zinazozalisha tena vitufe kutoka kwa nambari kuu pekee zinaweza kutoa matokeo tofauti lakini yanayolingana.

Uendeshaji kwenye funguo za umma na za faragha sasa una kasi ya hadi mara mbili kwenye wasm.

crypto/sha*

crypto/hila

Kipengele kipya NaDataIndependentTiming huruhusu mtumiaji kutekeleza kazi iliyo na vipengele mahususi vya usanifu vilivyowezeshwa vinavyohakikisha kwamba maagizo fulani hayabadilishwi ikilinganishwa na wakati wa thamani ya data. Hii inaweza kutumika kuhakikisha kuwa msimbo ulioandikwa kutekelezwa kwa wakati unaobadilika haujaboreshwa na vitendakazi vya kiwango cha kichakataji ili kifanye kazi kwa wakati unaobadilika. Kwa sasa WithDataIndependentTiming hutumia PSTATE.DIT kidogo kwenye arm64 na haifanyi chochote kwenye usanifu mwingine wote. Kuanzisha GODEBUG dataindependenttiming=1 huwezesha hali ya DIT kwa programu nzima ya Go.

Pato XORBytes lazima iingiliane kabisa au isiingiliane kabisa na ingizo. Hapo awali tabia hiyo haikufafanuliwa vinginevyo, ambapo sasa XORBytes itaogopa.

crypto/tls

Seva ya TLS sasa inaauni Hello ya Mteja Aliyesimbwa kwa Njia Fiche (ECH). Kipengele hiki kinaweza kuwezeshwa kwa kujaza sehemu. Config.EncryptedClientHelloKeys.

Utaratibu Mpya wa Ubadilishanaji Muhimu wa Baada ya Quantum X25519MLKEM768 sasa inaungwa mkono na kuwezeshwa na chaguo-msingi lini Config.CurvePreferences ni nil. Kuanzisha GODEBUG tlsmlkem=0 inarudisha chaguomsingi.

Usaidizi wa ubadilishanaji wa ufunguo wa majaribio wa X25519Kyber768Draft00 umeondolewa.

Agizo kuu la kubadilishana sasa linashughulikiwa kabisa na kifurushi cha crypto/tls. Agizo Config.CurvePreferences sasa imepuuzwa na yaliyomo yanatumiwa tu kubainisha ni ubadilishanaji muhimu wa kujumuisha wakati uga umejazwa.

Uga mpya MtejaHelloInfo.Viendelezi Huorodhesha orodha ya vitambulishi vya viendelezi vilivyopokelewa katika ujumbe wa Hello Mteja. Hii inaweza kuwa muhimu kwa wateja wa TLS wa kuchapa vidole.

crypto/x509

Kuanzisha GODEBUG x509sha1 imeondolewa. Uthibitishaji.Thibitisha haiauni tena sahihi za SHA-1.

OID sasa hutumia miingiliano encoding.binaryappender ΠΈ usimbaji.TextAppender.

Sehemu ya sera ya cheti chaguomsingi imebadilishwa kutoka Vitambulishi.Sera juu ya Cheti.Sera. Wakati wa kuchanganua vyeti, sehemu zote mbili zitajazwa, lakini wakati wa kuunda sera ya cheti, zitachukuliwa kutoka sehemu ya Cheti.Sera badala ya Vitambulishi vya Cheti.Sera. Mabadiliko haya yanaweza kurejeshwa. Mpangilio wa GODEBUG x509sera za matumizi=0.

Tengeneza Cheti sasa itatoa nambari ya serial kwa kutumia njia inayoambatana na RFC 5280 wakati wa kupitisha uga wa kiolezo. Cheti.Nambari ya Ufuatiliaji nil, badala ya kugonga.

Cheti.Thibitisha sasa inasaidia uthibitishaji wa sera kama inavyofafanuliwa katika RFC 5280 na RFC 9618. Sehemu mpya ThibitishaChaguo.Sera za Cheti inaweza kuwekwa kwa seti inayokubalika ya sera OIDs. Misururu ya cheti iliyo na grafu halali pekee ndiyo itarejeshwa kutoka Cheti.Thibitisha.

MarshalPKCS8PrivateKey sasa inarejesha hitilafu badala ya kurejesha ufunguo batili wa RSA. (MarshalPKCS1PrivateKey haina makosa ya kurudi na tabia yake wakati funguo batili zinatolewa hubakia bila kufafanuliwa.)

ParsePKCS1PrivateKey ΠΈ ParsePKCS8PrivateKey sasa tumia na uthibitishe thamani za CRT zilizosimbwa, kwa hivyo inaweza kukataa funguo batili za RSA ambazo zilikubaliwa hapo awali. Matumizi GODEBUG mipangilio x509rsacrt=0 inarudi kwenye ukokotoaji upya wa thamani za CRT.

debug/elf

Ufungaji debug/elf Huongeza usaidizi wa kushughulikia matoleo ya alama katika faili zinazobadilika za ELF (Inayotekelezeka na Umbizo Inayounganishwa). Mbinu mpya File.DynamicVersions Hurejesha orodha ya matoleo yanayobadilika yaliyofafanuliwa katika faili ya ELF. Mbinu mpya File.DynamicVersionNeeds Hurejesha orodha ya matoleo yanayobadilika yanayohitajika na faili hii ya ELF ambayo yamefafanuliwa katika vipengee vingine vya ELF. Hatimaye, mashamba mapya Alama.HasVersion ΠΈ Alama.VersionIndex onyesha toleo la ishara.

encoding

Violesura viwili vipya TextAppender ΠΈ BinaryAppender zilianzishwa ili kuongeza maandishi au uwakilishi wa jozi wa kitu kwenye kipande kidogo. Miingiliano hii hutoa utendakazi sawa na NakalaMarshaler ΠΈ BinaryMarshaler, lakini badala ya kutenga kipande kipya kila wakati, wao huongeza data moja kwa moja kwenye kipande kilichopo. Miingiliano hii kwa sasa inatekelezwa na aina za kawaida za maktaba ambazo tayari zinatekeleza TextMarshaler na/au BinaryMarshaler.

usimbaji/json

Wakati wa kujenga, sehemu ya muundo iliyo na chaguo jipya la omitzero katika lebo ya uga wa muundo itaachwa ikiwa thamani yake ni sifuri. Ikiwa aina ya sehemu ina mbinu ya bool ya IsZero(), itatumika kubainisha kama thamani ni sifuri. Vinginevyo thamani itakuwa sifuri ikiwa null thamani kwa aina yake. Lebo ya uga ya omitzero ni safi na haina makosa mengi kuliko kuacha wakati dhamira ni kuacha thamani batili. Hasa, tofauti na omitempty, omitzero huacha sifuri wakati.wakati maadili, ambayo ni chanzo cha kawaida cha matatizo.

Ikiwa omitempty na omitzero zimebainishwa, sehemu itaondolewa ikiwa thamani ni tupu au sifuri (au zote mbili).

UnmarshalTypeError.Field sasa inajumuisha miundo iliyojumuishwa ili kutoa ujumbe wa makosa ya kina.

kwenda/aina

Miundo yote ya data ya go/aina inayofichua mlolongo wa jozi za mbinu, kama vile Len() int na At(int) T, sasa pia ina njia zinazorudisha virudiarudia, ikiruhusu nambari rahisi kama hii:

params := fn.Type.(*aina.Sahihi).Params() for i := 0; i < params.Len(); i++ {tumia(params.At(i))}

Kwenye hili:

kwa param := mbalimbali fn.Saini().Params().Vigezo() { use(param) }

Mbinu: Kiolesura.Aina Zilizopachikwa Kiolesura.Njia Zilizowazi Kiolesura.Mbinu Mbinu.Set.Method Aitwaye.Mbinu Upeo.Watoto Muundo.Sehemu Vigezo.Tuple Aina. za Orodha TypeParamList.TypeParams Masharti.ya Muungano

heshi/*

log/slog

Mpya DiscardHandler ni kidhibiti ambacho hakijawashwa kamwe na hutupa matokeo yake kila wakati.

kiwango cha ΠΈ LevelVar sasa tekeleza kiolesura usimbaji.TextAppender.

hisabati/*

wavu

ListenCondig sasa inatumia MPTCP kwa chaguo-msingi kwenye mifumo ambayo inatumika (kwa sasa ni Linux pekee).

IP sasa inatekeleza kiolesura usimbaji.TextAppender.

wavu/http

Kizuizi kimebadilika usafirishaji kwa majibu yaliyopokelewa ya habari 1xx kwa kujibu ombi. Hapo awali hii ingesimamisha ombi na kurudisha hitilafu baada ya kupokea zaidi ya majibu 5 1xx. Hii sasa inarejesha tu hitilafu ikiwa jumla ya saizi ya majibu yote 1xx inazidi mpangilio wa usanidi Transport.MaxResponseHeaderBytes.

Pia, wakati ombi lina ndoano ya kufuatilia net/http/httptrace.ClientTrace.Got1xxResponse, sasa hakuna kikomo kwa jumla ya idadi ya majibu 1xx. ndoano ya Got1xxResponse inaweza kurudisha hitilafu ili kusimamisha ombi.

usafirishaji ΠΈ server sasa uwe na uga wa HTTP2 unaoruhusu usanidi wa mipangilio ya itifaki ya HTTP/2.

Viwanja vipya Itifaki.Seva ΠΈ Itifaki.Usafiri toa njia rahisi ya kusanidi ni itifaki gani za HTTP ambazo seva au mteja hutumia.

Seva na mteja zinaweza kusanidiwa ili kusaidia miunganisho ambayo haijasimbwa kwa njia fiche ya HTTP/2.

Wakati Itifaki.Seva ina UncrypterHTTP2, seva itakubali miunganisho ya HTTP/2 kwenye milango ambayo haijasimbwa. Seva inaweza kukubali HTTP/1 na HTTP/2 ambayo haijasimbwa kwenye mlango mmoja.

Wakati Itifaki.Usafiri ina HTTP2 Isiyosimbwa na haina HTTP1, usafiri utatumia HTTP/2 ambayo haijasimbwa kwa anwani. http://. Usafiri ukisanidiwa kutumia HTTP/1 na HTTP/2 ambayo haijasimbwa, itatumia HTTP/1.

Usaidizi kwa HTTP/2 ambayo haijasimbwa hutumia "HTTP/2 yenye Mafunzo ya Mbele" (RFC 9113, sehemu ya 3.3). Kijajuu kilichoacha kutumika "Boresha: h2c" hakitumiki.

wavu/wavu

Ongeza, AddrPort ΠΈ Kiambatisho sasa tekeleza miingiliano encoding.binaryappender ΠΈ usimbaji.TextAppender.

wavu/url

URL sasa pia inatekelezea kiolesura encoding.binaryappender.

os/mtumiaji

Kwenye Windows Sasa sasa inaweza kutumika katika Windows Nano Server. Utekelezaji umesasishwa ili kuepuka kutumia vitendaji kutoka kwa maktaba ya NetApi32, ambayo haipo kwenye Nano Server.

Kwenye Windows Sasa, Kuangalia ΠΈ Kitambulisho cha Kutafuta sasa inasaidia akaunti zifuatazo za huduma za watumiaji zilizojumuishwa:

  • MAMLAKA YA NT
  • HUDUMA YA MAMLAKA YA NT
  • HUDUMA YA MAMLAKA YA NT

Kwenye Windows Sasa iliharakishwa sana mtumiaji wa sasa anapounganishwa kwenye kikoa polepole, jambo ambalo ni la kawaida kwa watumiaji wengi wa kampuni. Utendaji wa utekelezaji mpya sasa uko katika mpangilio wa milisekunde, ikilinganishwa na utekelezwaji wa awali, ambao unaweza kuchukua sekunde kadhaa, hata dakika, kukamilika.

Kwenye Windows Sasa sasa inarejesha mtumiaji mwenye mchakato wakati mazungumzo ya sasa yanaiga mtumiaji mwingine. Hapo awali hii ilileta hitilafu.

regexp

Regexp sasa inatekeleza kiolesura usimbaji.TextAdapter.

Runtime

Kazi GOROOT sasa imeacha kutumika. Katika mazingira mapya zaidi, unapaswa kupendelea kutumia njia ya mfumo ili kubaini chaguo la "kwenda", na utumie go env GOROOT kuamua GOROOT.

kamba

Ufungaji kamba inaongeza kazi kadhaa za kufanya kazi na viboreshaji:

  • Mistari Hurejesha kirudia tena juu ya mistari iliyotenganishwa ya laini mpya katika mfuatano.
  • SplitSeq hurejesha kirudishio juu ya kamba ndogo zote za mfuatano uliotenganishwa na kitenganishi.
  • SplitAfterSeq hurejesha kirudishio juu ya kamba ndogo, iliyogawanyika baada ya kila kutokea kwa kitenganishi.
  • MashambaSeq hurejesha kirudisho juu ya mifuatano ya kamba karibu na mfuatano wa herufi za nafasi nyeupe, kama inavyofafanuliwa.unicode.IsSpace
  • FieldsFuncSeq Hurejesha kirudishio juu ya mifuatano ya mifuatano ya nukta za msimbo wa Unicode ambayo inakidhi kiima.

Sync

Utekelezaji Sync.ramani imebadilishwa ili kuboresha utendakazi, hasa kwa mabadiliko ya kamusi. Kwa mfano, ugomvi wa mabadiliko ya seti zisizounganishwa kuna uwezekano mdogo kwenye kamusi kubwa, na hauhitaji tena muda wa uundaji ili kufikia mzigo mdogo wa kamusi.

Ukikumbana na matatizo yoyote, weka GOEXPERIMENT=nosynchashtriemap wakati wa kujenga ili kurudi kwenye utekelezaji wa zamani na tafadhali. jaza fomu ya tatizo.

kupima

Mbinu mpya T.Muktadha ΠΈ B.Muktadha rudisha muktadha ambao hutupwa baada ya jaribio kukamilika na kabla ya kazi za kusafisha jaribio kutekelezwa.

Mbinu mpya T.Chdir ΠΈ B.Chdir inaweza kutumika kubadilisha saraka ya kufanya kazi kwa muda wa jaribio au alama.

maandishi/kiolezo

Violezo sasa vinaauni anuwai-juu ya kazi na safu-juu-ya-int.

wakati

Wakati sasa hutumia miingiliano encoding.binaryappender ΠΈ usimbaji.TextAppender.

bandari

Linux

Kama ilivyokuwa alitangaza Kulingana na maelezo ya toleo ya Go 1.23, Go 1.24 inahitaji toleo la Linux kernel 3.2 au la baadaye.

Darwin

Go 1.24 ndio toleo la mwisho ambalo litaendeshwa kwenye macOS 11 Big Sur. Go 1.25 itahitaji macOS 12 Monterey au baadaye.

WebAssembly

Maagizo ya mkusanyaji wa go:wasmexport yameongezwa kwenye programu za Go ili kuhamisha vitendaji kwa seva pangishi ya WebAssembly.

Katika Onyesho la Kwanza la Kiolesura cha Mfumo wa WebAssembly (GOOS=wasip1 GOARCH=wasm), Go 1 inasaidia kuunda programu ya Go kama kitendaji/maktaba kwa kubainisha bendera ya ujenzi -buildmode=c-shared.

Aina zaidi sasa zinaruhusiwa kama hoja au aina za matokeo kwa vitendaji vya go:wasmimport. Hasa, bool, kamba, uintptr na viashiria vya aina fulani vinaruhusiwa (tazama maelezo katika nyaraka), pamoja na aina kamili za biti 32 na 64 na sehemu zinazoelea, na zisizo salama.Pointer, ambazo tayari zimeruhusiwa. Aina hizi pia zinaruhusiwa kama hoja au aina za matokeo kwa vitendaji vya go:wasmexport.

Faili za usaidizi za WebAssembly zimehamishwa hadi lib/wasm kutoka misc/wasm.

Alama ya kumbukumbu ya awali imepunguzwa sana, haswa kwa programu ndogo za WebAssembly.

Windows

Dirisha/mlango wa mkono wa biti 32 (GOOS=windows GOARCH=arm) umetiwa alama kuwa umevunjika. Maelezo ndani #70705

Chanzo: linux.org.ru

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS πŸ”₯ Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster