Una nova versione di a lingua Go, a versione 1.24, vene sei mesi dopu Andà 1.23. A maiò parte di i cambiamenti sò in l'implementazione di a catena di strumenti, runtime è biblioteche. Cum'è sempre, a liberazione furnisce prumessa di cumpatibilità Vai 1. I diseggiani di lingua s'aspittavanu chì quasi tutti i prugrammi Go cuntinuà à compilà è curriri cum'è prima.
Cambia lingua
Go 1.24 avà sustene cumplettamente alias di tipu genericu: un alias di tipu pò esse parametrizzatu cum'è un tipu dichjaratu. Dettagli in specificazioni di lingua. Per avà, sta funzione pò esse disattivata da GOEXPERIMENT=noaliastypeparams; Tuttavia, l'opzione aliastypeparams serà eliminata in Go 1.25.
Ferramenti
Vai cumanda
I moduli Go ponu avà seguità e dipendenze eseguibili utilizendu a direttiva di l'uttellu in go.mod. Questu elimina a necessità di a soluzione precedente di aghjunghje strumenti cum'è impurtazioni viote in un schedariu tipicamente chjamatu "tools.go". U cumandamentu di l'utillita vai pò avà eseguisce questi arnesi in più di l'arnesi chì venenu cù Go. Più infurmazione pò esse truvata à ducumentazione.
A nova bandiera -tool per go get causa chì e direttive di l'uttellu sò aghjunte à u modulu attuale per i pacchetti specificati in più di aghjunghje direttive richieste.
Novu strumentu meta-pattern si riferisce à tutti l'arnesi in u modulu attuale. Questu pò esse usatu per aghjurnà tutti per via di l'utillita go get, o per stallà in u vostru repertoriu GOBIN per via di l'utile di installazione vai.
Eseguibili creati via go run è u novu cumpurtamentu di l'utillita di go sò avà in cache in a cache di Go build. Questu rende pussibule lanciari ripetuti per via di a cache aumentata. #69290.
I cumandamenti di build and go install now accettanu a bandiera -json, chì informa l'output di custruzzione è l'errori cum'è un output JSON strutturatu in output standard. I dettagli di u formatu ponu esse vistu in go help buildjson.
Inoltre, vai a prova -json avà riporta l'errori di output è di custruisce in JSON, mischiatu cù u risultatu di a prova JSON. Puderanu esse distinti da i novi tippi d'Azzione, ma s'elli causanu prublemi in u sistema di integrazione di teste, pudete cascà à u testu di output di a custruzzione via. Configurazione di GODEBUG gotestjsonbuildtext=1.
A nova variabile d'ambiente GOAUTH furnisce un modu flexible per auturizà i pulls di moduli privati. Pudete vede i dettagli in go help goauth.
U cumandimu go build hè avà stallatu versione di u modulu principale in u binariu compilatu, basatu annantu à un tag è / o un cummittente di cuntrollu di versione. U suffissu + dirty serà aghjuntu s'ellu ci sò cambiamenti micca impegnati. U -buildvcs=false flag pò esse usatu per omette l'infurmazioni di cuntrollu di versione da u binariu.
Novu Configurazione di GODEBUG toolchaintrace = 1 pò avà esse usatu per seguità u prucessu di selezzione toolchain in u cumandamentu vai.
Cgo
Cgo supporta novi annotazioni per e funzioni C per migliurà u rendiment di runtime. #cgo noescape cFunctionName dice à u compilatore chì a memoria passata à a funzione C cFunctionName ùn hè micca scappata. #cgo nocallback cFunctionName dice à u compilatore chì a funzione C cFunctionName ùn chjama micca alcuna funzione Go. Più infurmazione pò esse truvata à documentazione cgo.
Cgo attualmente ricusa di cumpilà e chjama à una funzione C chì hà parechje dichjarazioni incompatibili. Per esempiu, se f hè dichjaratu cum'è void f(int) è void f (double), cgo signalerà un errore invece di generà possibbilmente una sequenza di chjama invalida f (0). Novu in questa versione hè a rilevazione mejorata di sta cundizione d'errore quandu e dichjarazioni incompatibili appariscenu in diversi schedari. #67699.
Objdump
L'uttellu objdump supporta avà u disassemblamentu in LoongArch 64-bit (GOARCH = loong64), RISC-V (GOARCH = riscv64) è S390X (GOARCH = s390x).
duvet
U novu analizzatore di teste riporta errori cumuni in test, fuzzer, benchmark, è dichjarazioni d'esempiu in suite di teste, cum'è nomi malformati, firme invalide, o esempi chì documentanu identificatori inesistenti. Arcuni di sti errori ponu pruvucà a prova di fallu.
U parser printf esistente avà rapporta diagnostichi per e chjama di a forma fmt.Printf(s), induve s hè una stringa di formatu micca custante senza altri argumenti. Tali chjamati sò quasi sempre un errore, postu chì u valore di s pò cuntene u caratteru %; utilizate fmt.Print invece. 60529. Questa verificazione tende à truvà e cose in u codice esistente, è per quessa hè appiicata solu quandu a versione di lingua (cum'è specificata da a direttiva go di u schedariu go.mod o i cumenti `//go:build`) hè almenu Go 1.24, per evità di pruvucà longu rotture d'integrazione quandu aghjurnà à a catena di strumenti Go 1.24.
L'analizzatore di buildtag esistente avà raporta diagnostichi quandu ci hè un buildtag incorrect limitazione di creazione di a versione più vechja Andate in a direttiva //go:build. Per esempiu, //go:build go1.23.1 si riferisce à una liberazione puntuale; invece aduprà //go:build go1.23. #64127.
L'analizzatore di copylock esistente avà rapporta un diagnosticu quandu una variabile hè dichjarata in un ciclu triple "for", cum'è per i := iter (); fattu (i); i = next(i) { … }, cuntene sync.Locker, cum'è sync.Mutex. Andà 1.22 cambiatu u cumpurtamentu di tali loops per creà una nova variabile per ogni iterazione, cupiendu i valori da l'iterazione precedente; Questa copia ùn hè micca sicura per i chjusi. #66387.
GOCACHEPROG
U meccanismo internu di cmd/go binariu è di teste di cache pò esse implementatu da i prucessi di u zitellu chì implementanu un protokollu JSON trà l'uttellu cmd/go è u prucessu di u zitellu chjamatu da a variabile d'ambiente GOCACHEPROG. Prima era per GOEXPERIMENT. I dettagli di u protocolu ponu esse vistu in ducumentazione.
Tempu di cumpiimentu
Diversi miglioramenti di u rendimentu di u runtime anu riduciutu u CPU overhead da 2-3% in media in una serie di benchmarks rappresentativi. I risultati pò varià secondu l'applicazione. Queste migliure includenu una nova implementazione di mappa integrata basatu annantu Tavule svedese, allocazione più efficiente di a memoria di l'ughjettu chjucu, è una nova implementazione interna di runtime di u mutex.
A nova implementazione di a mappa integrata è u novu mutex di runtime internu pò esse disattivatu da GOEXPERIMENT=noswissmap è GOEXPERIMENT=nospinbitmutex à u tempu di creazione, rispettivamente.
Cumpilatore
U compilatore hà digià pruibitu di definisce novi metudi cù tipi di receptori chì eranu generati da cgo, ma era pussibule di travaglià sta restrizzione per via di un alias di tipu. Go 1.24 avà sempre riporta un errore se u receptore denota un tipu generatu da cgo, direttamente o indirettu (via un alias di tipu).
Linker
U linker ora genera un identificatore di compilazione GNU (entrata ELF NT_GNU_BUILD_ID) nantu à e piattaforme ELF è un UUID (Mach-O load command LC_UUID) in macOS per difettu. L'ID di compilazione o UUID hè derivatu da l'ID di compilazione Go. Questu pò esse disattivatu cù u -B none linker flag, o rimpiazzatu cù u -B 0xNNNN linker flag cù un valore esadecimale specificatu da l'utilizatore.
Prumuzione
Cum'è dichjaratu in Go 1.22 note di liberazione, Go 1.24 avà richiede Go 1.22.6 o più tardi per esse installatu. I sviluppatori aspettanu chì Go 1.26 richiederà una liberazione puntuale di Go 1.24 o più tardi per esse lanciata.
Biblioteca standard
Accessu à u sistema di schedarii limitatu à u repertoriu
Tipu novu os.root Fornisce a capacità di realizà operazioni di sistema di fugliale in un repertoriu specificu.
funziunava os.OpenRoot apre u cartulare è torna os.root. I metudi nantu os.root operanu in quellu repertoriu è ùn permettenu micca i percorsi per riferite à i lochi fora di u repertoriu, cumprese quelli chì seguitanu ligami simbolichi fora di u repertoriu. I metudi nantu à os.Root riflette a maiò parte di l'operazioni di u sistema di filesystem dispunibuli in u pacchettu OS, cumpresu, per esempiu, os.Root.Open, os.Root.Create, os.Root.Mkdir и os.Root.Stat.
Nova funzione di benchmark
Benchmarks ponu avà aduprà un metudu più veloce, menu propensu à l'errore prova.B.Loop per iterà nantu à un benchmark cum'è per b.Loop () { ... } invece di e strutture di loop tipiche chì implicanu bN cum'è per a gamma bN Questu offre dui vantaghji significativi:
- A funzione di benchmark hè eseguita esattamente una volta per -count, cusì i passi di cunfigurazione è di pulizia caru sò eseguiti solu una volta.
- A funzione chjama i paràmetri è i risultati in diretta, impediscendu à u compilatore di ottimisà cumplettamente u corpu di u ciclu.
Finalizatori migliorati
Nova funzione runtime.AddCleanup hè un mecanismu di cumpletamentu chì hè più flexible, più efficiente è menu propensu à l'errore runtime.SetFinalizer. AddCleanup attache una funzione di pulizia à un ughjettu chì serà eseguitu appena l'ughjettu diventa indisponibile. In ogni casu, à u cuntrariu di SetFinalizer, i pulizziari multipli ponu esse attaccati à un unicu ughjettu, i pulizziari ponu esse attaccati à punters internu, i pulizziari ùn generalmente causanu micca fughe quandu l'uggetti formanu un ciculu, è i pulizziari ùn ritardanu micca a dislocazione di l'ughjettu o l'uggetti chì puntanu. U novu codice avissi preferitu AddCleanup à SetFinalizer.
Novu pacchettu debule
Pacchettu novu debuli furnisce punte debuli.
L'indicatori debuli sò un primitivu di livellu bassu furnitu per creà strutture efficienti di memoria, cum'è dizziunari debuli per i valori di mappatura, dizziunari di canonicalizazione per tuttu ciò chì ùn hè micca coperto da un pacchettu. ùnicu, è varii tipi di cache. Per sustene questi casi d'usu, sta liberazione furnisce ancu runtime.AddCleanup и maphash.Comparable.
Novu pacchettu crypto / mlkem
Pacchettu novu crypto/mlkem implementa ML-KEM-768 è ML-KEM-1024.
ML-KEM hè un mecanismu di scambiu di chjave post-quantum, cunnisciutu prima cum'è Kyber è specificatu in FIPS 203.
Novi pacchetti crypto/hkdf, crypto/pbkdf2 è crypto/sha3
Pacchettu novu crypto/hkdf implementa a funzione di derivazione chjave "Extract-and-Expand" basata in HMAC HKDF cum'è definita in RFC 5869.
Pacchettu novu crypto/pbkdf2 implementa a funzione di derivazione chjave basata in password PBKDF2 cum'è definita in RFC 8018.
Pacchettu novu crypto/sha3 implementa a funzione hash SHA-3 è e funzioni di output estensibile SHAKE è cSHAKE cum'è definitu in FIPS 202.
Tutti i trè pacchetti sò basati nantu à i pacchetti golang.org/x/crypto/… esistenti.
Conformità FIPS 140-3
Questa liberazione include un novu settore di meccanismi per assicurà a conformità FIPS 140-3.
U modulu di criptu Go hè un inseme di pacchetti di libreria standard internu chì sò trasparenti utilizati per implementà algoritmi appruvati FIPS 140-3. L'applicazioni ùn necessitanu micca cambiamenti per utilizà u modulu di criptu Go per algoritmi appruvati.
A nova variabile d'ambiente GOFIPS140 pò esse usata per selezziunà a versione di u modulu di criptu Go per utilizà in una custruzzione. Novu Configurazione di GODEBUG fips140 pò esse usatu per attivà u modu FIPS 140-3 in runtime.
Go 1.24 include u Go crypto module v1.0.0, chì hè attualmente in prova cù un laboratoriu accreditatu CMVP.
Pruvenza di novu pacchettu sperimentale / test di sincronia
Novu pacchettu sperimentale prova/synctest Fornisce supportu per pruvà codice simultaneo.
- funziunava synctest.run gestisce un gruppu di goroutines in una "bubble" isolata. In a bolla di u pacchettu funzione tempu operate nantu à falsi orologi.
- Funzioni synctest.aspettate aspettate finu à chì tutti i goroutines sò bluccati in a bolla attuale.
I dettagli ponu esse truvati in a documentazione di u pacchettu.
U pacchettu di synctest hè sperimentale è deve esse attivatu cù l'impostazione GOEXPERIMENT=synctest. L'API di u pacchettu pò cambià in versioni future. IN #67434 Pudete vede più dettagli è furnisce feedback.
Picculi cambiamenti in a biblioteca
pacchettu
L'implementazioni (* Writer.AddFS) in archive/zip è archive/tar scrivenu avà l'intestazione di u cartulare per un repertoriu viotu.
bytes
Poney bytes aghjunghje parechje funzioni chì travaglianu cù iteratori:
- Lines Ritorna un iteratore nantu à stringhe separate da newline in una fetta di byte.
- SplitSeq restituisce un iteratore sopra tutte e subslices di una fetta di byte separata da un separatore.
- SplitAfterSeq Ritorna un iteratore nantu à i subslices di una fetta di byte, split after each occurrence of the separator.
- Campi Seq Ritorna un iteratore nantu à subslices di una fetta di byte intornu à sequenze di caratteri spaziali, cum'è definitu unicode.IsSpace
- CampiFuncSeq Ritorna un iteratore sopra subslices di a fetta di byte intornu à sequenze di punti di codice Unicode chì soddisfanu u predicatu.
crypto/aes
Riturnà u valore NewChipher ùn implementa più i metudi NewCTR, NewGCM, NewCBCEncrypter è NewCBCDecrypter. Questi metudi ùn sò micca documentati è micca dispunibili nantu à tutte l'architetture. Avà u significatu Bloccu deve esse passatu direttamente à e funzioni appropritate criptu / cifru. Attualmente, criptu / cifru cuntrolla ancu questi metudi nantu à i valori di Block, ancu s'ellu ùn sò più supportati da a biblioteca standard.
criptu / cifru
Nova funzione NewGCMWithRandomNonce torna AEAD, chì implementa AES-GCM generendu un nonce aleatoriu durante u Seal è prependu à u ciphertext.
Реализация Stream, vultò Novu CTR quandu s'utilice cun crypto/aes avà parechje volte più veloce in amd64 è arm64.
Novu OFB, Novu CFBEncrypter и Novu CFBDecrypter sò avà dichjarati obsoleti. I modi OFB è CFB ùn sò micca autenticati, chì generalmente permettenu l'attacchi attivi per manipulà è ricuperà u testu chjaru. L'applicazioni sò cunsigliate per aduprà AEAD in ritornu. Se u modu micca autenticatu Stream necessariu, pò esse usatu Novu CTR in ritornu.
crypto/ecdsa
PrivateKey.Sign avà crea una firma deterministica secondu RFC 6979, se a fonte di casualità hè nil.
crypto/md5
Riturnà u valore md5.nova, avà implementa ancu l'interfaccia encoding.binaryappender.
crypto / rand
funziunava Leggi avà guarantisci micca fallimenti. Se Read scontra un errore durante a lettura litturi, u prugramma finirà permanentemente. Innota chì u Reader predeterminatu hè documentatu per travaglià sempre bè, cusì stu cambiamentu duverà affettà solu i prugrammi chì annullanu a variabile Reader. Una eccezzioni hè i kernels Linux prima di 3.17, induve u Reader predeterminatu apre sempre /dev/urandom è pò fallu.
In Linux 6.11 è più tardi, Reader usa avà a chjama di u sistema getrandom via vDSO. Questu hè parechje volte più veloce, di solitu per i picculi leghje.
In OpenBSD Reader usa avà arc4random_buf(3).
Nova funzione Testu pò avà generà stringhe di testu aleatoriu criptograficamente sicure.
crypto/rsa
GenerateKey avà torna un errore se una lunghezza chjave di menu di 1024 bit hè dumandata. Tutti i metudi di Sign, Verify, Encrypt, and Decrypt tornanu avà un errore s'ellu si usa cù una dimensione di chjave menu di 1024 bit. Tali chjavi ùn sò micca sicuri è ùn deve esse usatu. Mise en place de GODEBUG rsa1024min = 0 restaurà u vechju cumpurtamentu, ma i sviluppatori Go ricumandenu di fà questu solu quandu hè necessariu è solu in teste, per esempiu aghjunghjendu a linea //go:debug rsa1024min = 0 à u schedariu di teste. Novu esempiu GenerateKey furnisce una chjave di prova standard 2024-bit faciule d'utilizà.
Avà hè più sicuru è più efficiente per chjamà PrivateKey.Precompute à PrivateKey.Validate. Precompute hè avà più veloce in presenza di parzialmente pienu Valori precalculati, per esempiu quandu si estrae una chjave da JSON.
U pacchettu avà rifiuta più chjave invalidu ancu quandu Validate ùn hè micca chjamatu, è GenerateKey ponu avà riturnà novi errori per fonti di casualità rotte. Campi Primi и Precalculatu strutture Chjave Privata sò avà utilizati è validati ancu quandu certi valori sò mancanti. Ci hè ancu cambiamenti à criptu / x509 per l'analisi è l'estrazione di e chjave RSA, descritte quì sottu.
SignPKCS1v15 и Verificate PKCS1v15 avà sustene SHA-512/224, SHA-512/256 è SHA-3.
GenerateKey avà usa un metudu pocu sfarente per generà l'esponente privatu (funzione Carmichael invece di funzione Euler). L'applicazioni rari chì rigeneranu esternamente e chjave da solu numeri primi ponu pruduce risultati diffirenti ma cumpatibili.
L'operazioni nantu à e chjave pubbliche è private sò avà finu à duie volte più veloci nantu à wasm.
crypto/sha*
- crypto/sha1: u valore di ritornu sha1.Novu avà implementa ancu l'interfaccia encoding.binaryappender.
- crypto/sha256: i valori restituiti sha256.Novu и sha256.Novu224 avà ancu implementà l'interfaccia encoding.binaryappender.
- crypto/sha512: i valori restituiti sha512.Novu, sha512.Novu384, sha512.New512_224 и sha512.New512_256, avà ancu implementà l'interfaccia encoding.binaryappender.
criptu / sottile
Nova funzione Cù DataIndependentTiming permette à l'utilizatore per eseguisce una funzione cù e caratteristiche specifiche di l'architettura attivate chì assicuranu chì certe struzzioni ùn sò micca cambiate relative à u tempu di u valore di dati. Questu pò esse usatu per assicurà chì u codice scrittu per eseguisce in u tempu constantu ùn hè micca ottimisatu da e funzioni di u nivellu di processore in modu chì corre in tempu variabile. Attualmente WithDataIndependentTiming usa u bit PSTATE.DIT in arm64 è ùn face nunda in tutte l'altri architetture. Mise en place de GODEBUG dataindependenttiming=1 permette u modu DIT per tuttu u prugramma Go.
cunchiusioni XORBytes deve sovrappone completamente o micca in tuttu cù l'input. In precedenza, u cumpurtamentu ùn era micca definitu altrimenti, mentre chì avà XORBytes sarà in panicu.
crypto/tls
U servitore TLS supporta avà Cliente Encrypted Hello (ECH). Questa funzione pò esse attivata cumpiendu u campu. Config.EncryptedClientHelloKeys.
Un novu Meccanisimu di Scambiu di Chjave Post-Quantum X25519MLKEM768 avà supportatu è attivatu per automaticamente quandu Config.CurvePreferences hè nil. Mise en place de GODEBUG tlsmlkem=0 torna predefinitu.
U supportu per u scambiu di chjave sperimentale X25519Kyber768Draft00 hè statu eliminatu.
L'ordine di scambiu di chjave hè avà trattatu sanu da u pacchettu crypto / tls. Ordine Config.CurvePreferences hè avà ignoratu è i cuntenuti sò solu utilizati per determinà quale scambii chjave include quandu u campu hè cumpletu.
Campu novu ClientHelloInfo.Extensions Lista a lista di identificatori di estensione ricevuti in u messagiu Client Hello. Questu pò esse utile per i clienti TLS di impronte digitali.
crypto/x509
Mise en place de GODEBUG x509sha1 hè stata eliminata. Certification.Verify ùn sustene più e firme basate SHA-1.
OID avà implementa interfacce encoding.binaryappender и encoding.TextAppender.
U campu di pulitica di certificatu predeterminatu hè statu cambiatu da Certificate.PolicyIdentifiers nantu Certificatu.Politiche. Quandu analizà i certificati, i dui campi seranu populati, ma quandu creanu una pulitica di certificatu, seranu pigliati da u campu di Certificate.Policies invece di Certificate.PolicyIdentifiers. Stu cambiamentu pò esse rimbursatu. Configurazione di GODEBUG x509usepolicies=0.
Crea un certificatu avà generà un numeru di seriale cù un metudu RFC 5280 cumpletu quandu passa un campu di mudellu Certificate.SerialNumber nil, invece di crashing.
Certificatu.Verificà avà sustene a validazione di pulitica cum'è definita in RFC 5280 è RFC 9618. Novu campu VerifyOptions.CertificatePolicies pò esse stabilitu à un settore accettabile di pulitiche OID. Solu e catene di certificati cù grafici di pulitiche validi saranu restituiti da Certificatu.Verificà.
MarshalPKCS8PrivateKey avà torna un errore invece di ricuperà una chjave RSA invalida. (MarshalPKCS1PrivateKey ùn hà micca ritornu d'errore è u so cumpurtamentu quandu e chjave invalide sò furnite resta indefinitu.)
ParsePKCS1PrivateKey и ParsePKCS8PrivateKey Avà aduprà è cunvalidate i valori CRT codificati, cusì ponu rifiutà e chjave RSA invalide chì sò state accettate prima. Usu paràmetri di GODEBUG x509rsacrt=0 torna à u recalculamentu di i valori CRT.
debug/elf
Poney debug/elf Aghjunghje supportu per a gestione di versioni di simbulu in i schedari ELF dinamichi (Formato Eseguibile è Linkable). Metodu novu File.DynamicVersions Ritorna una lista di versioni dinamichi definite in un schedariu ELF. Metodu novu File.DynamicVersionNeeds Ritorna una lista di versioni dinamiche richieste da stu schedariu ELF chì sò definite in altri oggetti ELF. Infine, novi campi Simbulu.HasVersion и Symbol.VersionIndex indicà a versione di u simbulu.
codificà
Dui novi interfacce TextAppender и BinaryAppender sò stati introdotti per aghjunghje un testu o una rappresentazione binaria di un ughjettu à una fetta di byte. Queste interfacce furnisce a listessa funziunalità cum'è TextMarshaler и BinaryMarshaler, ma invece di assignà una nova fetta ogni volta, aghjunghjenu dati direttamente à una fetta esistente. Queste interfacce sò attualmente implementate da tipi di biblioteca standard chì implementanu digià TextMarshaler è / o BinaryMarshaler.
codifica / json
Quandu si custruisce, un campu di struttura cù a nova opzione omitzeru in u tag di campu di struttura serà omesso se u so valore hè zero. Se u tipu di campu hà un metudu bool IsZero () , serà utilizatu per stabilisce se u valore hè zero. Altrimenti, u valore serà zero s'ellu hè valore nulu per u so tipu. L'etichetta di u campu di l'omitzero hè più pulita è menu propensu à l'errore cà omitempty quandu l'intenzione hè di omette i valori nulli. In particulare, à u cuntrariu di omitempty, omitzero omette zeri tempu.tempu valori, chì hè una fonte cumuni di prublemi.
Se omitempty è omitzero sò specificati, u campu serà omessi se u valore hè viotu o zero (o i dui).
UnmarshalTypeError.Field avà include strutture integrate per furnisce i missaghji di errore più detallati.
vai / tippi
Tutte e strutture di dati go/types chì espone sequenze di coppie di metudi, cum'è Len () int è At (int) T, anu avà ancu metudi chì tornanu iteratori, chì permettenu un codice più simplice cum'è questu:
params := fn.Type.(*types.Signature).Params() for i := 0; i <params.Len(); i++ { usu (params.At (i)) }
Nantu à questu:
for param := range fn.Signature().Params().Variables() {use (param) }
Metodi: Interfaccia.Tipi Embedded Interfaccia.Metodi Expliciti Interfaccia.Metudi MethodSet.Methods Named.Metodi Scopu.I zitelli Struttura.Campi Tupla.Variabili TypeList.Types TypeParamList.TypeParams Union.Termini
hash/*
- hash/adler32: u valore di ritornu New, avà implementa ancu l'interfaccia encoding.binaryappender
- hash/crc32: i valori restituiti New и Novu IEEE, avà ancu implementà l'interfaccia encoding.binaryappender
- hash/crc64: u valore di ritornu New, avà implementa ancu l'interfaccia encoding.binaryappender
- hash/fnv: i valori restituiti New32 Novu 32a New64 Novu 64a New128 и Novu 128a, avà ancu implementà l'interfaccia encoding.binaryappender
- hash/maphash: funzioni novi Cumparabile и Scrive Paragunabile pò calculà l'hash di ogni valore chì pò esse paragunatu. Questu permette di hash tuttu ciò chì pò esse usatu cum'è una chjave di dizziunariu Go.
log/slog
Novu DiscardHandler hè un gestore chì ùn hè mai attivatu è sempre scarta u so output.
Level и LevelVar avà implementà l'interfaccia encoding.TextAppender.
matematica/*
- matematica / grande: Float, Int и U topu avà implementà l'interfaccia encoding.TextAppender.
- matematica / rand: chiamate di funzioni di primu livellu obsolete Seed ùn anu più effettu. Per restaurà u vechju cumpurtamentu, pudete aduprà Configurazione di GODEBUG randseednop = 0. Più cuntestu in offerta 67273.
- matematica / rand / v2: ChaCha8 и PCG avà implementà l'interfaccia encoding.binaryappender.
riti
ListenCondig avà usa MPTCP per difettu in i sistemi induve hè supportatu (attualmente solu Linux).
IP avà implementa l'interfaccia encoding.TextAppender.
net/http
A restrizzione hè cambiata Trasporti à i risposti d'infurmazioni 1xx ricevuti in risposta à a dumanda. In precedenza, questu fermava a dumanda è torna un errore dopu avè ricivutu più di 5 1xx risposte. Questu avà torna solu un errore se a dimensione tutale di tutte e risposte 1xx supera a cunfigurazione Transport.MaxResponseHeaderBytes.
Inoltre, quandu una dumanda hà un ganciu di seguimentu net/http/httptrace.ClientTrace.Got1xxResponse, avà ùn ci hè micca un limite à u numeru tutale di risposte 1xx. U ganciu Got1xxResponse pò rinvià un errore per piantà a dumanda.
Trasporti и Servidor avà avè un campu HTTP2 chì permette a cunfigurazione di i paràmetri di u protocolu HTTP / 2.
Campi novi Server.Protocols и Trasporti.Protocols furnisce un modu simplice per cunfigurà quale protokolli HTTP u servitore o u cliente usa.
U servitore è u cliente pò esse cunfigurati per sustene e cunnessione HTTP / 2 senza criptu.
Quandu Server.Protocols cuntene UnencrypterHTTP2, u servitore accetterà cunnessione HTTP / 2 nantu à i porti micca criptati. U servitore pò accettà sia HTTP/1 sia HTTP/2 senza criptu nantu à u stessu portu.
Quandu Trasporti.Protocols cuntene UnencryptedHTTP2 è ùn cuntene HTTP1, u trasportu utilizerà HTTP / 2 non cifratu per l'indirizzi http://. Se un trasportu hè cunfiguratu per utilizà HTTP/1 è HTTP/2 senza criptu, utilizerà HTTP/1.
U supportu per HTTP/2 non criptatu usa "HTTP/2 cù Forward-Learning" (RFC 9113, sezione 3.3). L'intestazione obsoleta "Upgrade: h2c" ùn hè micca supportata.
net/netip
Addr, AdrPort и Prefissu avà implementà interfacce encoding.binaryappender и encoding.TextAppender.
net/url
URL avà implementa ancu l'interfaccia encoding.binaryappender.
os/user
In Windows Travaux pò avà esse usatu in Windows Nano Server. L'implementazione hè stata aghjurnata per evità di utilizà funzioni da a biblioteca NetApi32, chì manca da Nano Server.
In Windows Travaux, Lookup и LookupId avà sustene i seguenti cunti di serviziu d'utilizatore integrati:
- SISTEMU AUTORITÀ
- NT AUTORITÀ SERVIZU LOCAL
- SERVIZZU AUTORITYNETWORK NT
In Windows Travaux hè stata significativamente accelerata quandu l'utilizatore attuale hè unitu à un duminiu lento, chì hè un casu cumuni per parechji utilizatori corporativi. U rendiment di a nova implementazione hè avà in l'ordine di millisecondi, cumparatu cù l'implementazione precedente, chì puderia piglià parechji seconde, ancu minuti, per compie.
In Windows Travaux avà torna l'utilizatore di u pruprietariu di u prucessu quandu u filu attuale hè impersoning un altru utilizatore. Precedentemente questu hà vultatu un errore.
regexp
Regexp avà implementa l'interfaccia encoding.TextAdapter.
runtime
funziunava GOROOT hè avà deprecated. In ambienti più novi, avete preferitu aduprà u percorsu di u sistema per determinà u binariu "vai", è aduprà go env GOROOT per determinà GOROOT.
corde
Poney corde aghjunghje parechje funzioni per travaglià cù iteratori:
- Lines Ritorna un iteratore nantu à e linee separate da a nova linea in una stringa.
- SplitSeq restituisce un iteratore sopra tutte e sottostringhe di una stringa separata da un separatore.
- SplitAfterSeq Ritorna un iteratore nantu à substrings di una stringa, split after each occurrence of the separator.
- Campi Seq Ritorna un iteratore nantu à i substrings di una stringa intornu à sequenze di caratteri spazii bianchi, cum'è definituunicode.IsSpace
- CampiFuncSeq Ritorna un iteratore nantu à substrings di stringa intornu à sequenze di punti di codice Unicode chì soddisfanu un predicatu.
sync
Реализация sync.map hè statu cambiatu per migliurà u rendiment, in particulare per i cambiamenti di dizziunariu. Per esempiu, a cuntinenza di cambiamentu di set disjoint hè menu prubabile nantu à i grandi dizziunari, è ùn hà più bisognu di tempu di custruzzione per ottene una carica di dizziunariu di cuntizzioni bassa.
Se scontri qualsiasi prublema, stabilisce GOEXPERIMENT=nosynchashtriemap durante a custruzione per vultà à l'antica implementazione è per piacè compie u furmulariu di prublema.
essai
Novi metudi T.Cuntestu и B.Cuntestu Ritorna un cuntestu chì hè scartatu dopu chì a prova hè finita è prima chì e funzioni di pulizia di a prova sò eseguite.
Novi metudi T.Chdir и B.Chdir pò esse usatu per cambià u cartulare di travagliu per a durata di una prova o benchmark.
testu / mudellu
I mudelli supportanu avà range-over-func è range-over-int.
tempu
tempu avà implementa interfacce encoding.binaryappender и encoding.TextAppender.
Porti
Linux
Cume era annunziatu Sicondu e note di liberazione di Go 1.23, Go 1.24 richiede a versione di u kernel Linux 3.2 o più tardi.
Darwin
Go 1.24 hè l'ultima versione chì correrà in macOS 11 Big Sur. Go 1.25 richiederà macOS 12 Monterey o più tardi.
assemblea web
A direttiva di compilatore go:wasmexport hè stata aghjunta à i prugrammi Go per esportà e funzioni à l'ospite WebAssembly.
In WebAssembly System Interface Preview 1 (GOOS = wasip1 GOARCH = wasm), Go 1.24 supporta a creazione di un prugramma Go cum'è reattore / biblioteca specificendu a bandiera di creazione -buildmode=c-shared.
Più tipi sò avà permessi cum'è argumenti o tipi di risultati per e funzioni go:wasmimport. In particulare, bool, string, uintptr è puntatori à certi tipi sò permessi (vede i dettagli in ducumentazione), inseme cù i tipi integer 32-bit è 64-bit è floating-point, è unsafe.Pointer, chì sò digià permessi. Sti tipi sò ancu permessi cum'è argumenti o tippu di risultatu per e funzioni go:wasmexport.
I schedarii di supportu per WebAssembly sò stati spustati in lib/wasm da misc/wasm.
L'impronta di memoria iniziale hè significativamente ridutta, in particulare per i picculi applicazioni WebAssembly.
Windows
U portu Windows 32-bit / arm (GOOS = windows GOARCH = arm) hè statu marcatu cum'è rottu. Dettagli in #70705
Source: linux.org.ru
