{"id":121950,"date":"2025-02-15T14:22:29","date_gmt":"2025-02-15T12:22:29","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/go-1-24"},"modified":"2025-02-15T14:22:29","modified_gmt":"2025-02-15T12:22:29","slug":"go-1-24","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/go-1-24","title":{"rendered":"Go 1.24","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><a rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/images\/21754\/original.png\" itemprop=\"contentURL\">            <img decoding=\"async\" alt=\"Go 1.24\" src=\"\/wp-content\/uploads\/2025\/02\/6d6299421d83951d055782658814425f.jpg\" style=\"display:block;margin: 0 auto;\" \/>                   <\/a>                       <noindex>      <noindex><\/p>\n<p>Il nuovo rilascio del linguaggio Go, versione 1.24, esce sei mesi dopo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. La maggior parte delle modifiche riguardano l'implementazione degli strumenti, del runtime e delle librerie. Come sempre, il rilascio garantisce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">l'impegno alla compatibilit\u00e0<\/a> Go 1. Gli sviluppatori del linguaggio si aspettano che quasi tutti i programmi Go continuino a compilarsi e a funzionare come prima.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Modifiche al linguaggio<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 ora supporta completamente <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">gli alias di tipo generici<\/a>: un alias di tipo pu\u00f2 essere parametrizzato come un tipo dichiarato. Maggiori dettagli nella <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">specifica del linguaggio<\/a>. Attualmente, questa funzionalit\u00e0 pu\u00f2 essere disattivata impostando GOEXPERIMENT=noaliastypeparams; tuttavia, l'opzione aliastypeparams sar\u00e0 rimossa in Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>Strumenti<\/h2>\n<h3>Il comando go<\/h3>\n<p> <noindex><\/p>\n<p>I moduli go ora possono tracciare le dipendenze eseguibili utilizzando la direttiva tool in go.mod. Ci\u00f2 elimina la necessit\u00e0 di una precedente soluzione alternativa che prevedeva l'aggiunta di strumenti come importazioni vuote nel file, comunemente chiamato \u201ctools.go\u201d. Il comando go tool ora pu\u00f2 eseguire questi strumenti oltre agli strumenti forniti con Go. Maggiori informazioni possono essere trovate in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">documentazione<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Il nuovo flag -tool per go get consente di aggiungere la direttiva dello strumento nel modulo corrente per i pacchetti specificati, oltre a integrare le direttive richieste.<\/p>\n<p> <noindex><\/p>\n<p>Nuovo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">meta-pattern tool<\/a> si riferisce a tutti gli strumenti nel modulo corrente. Pu\u00f2 essere utilizzato per aggiornare tutti tramite go get tool o per installarli nella propria directory GOBIN tramite go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I file eseguibili creati tramite go run e il nuovo comportamento di go tool ora vengono memorizzati nella cache della build di Go. Questo rende le esecuzioni ripetute pi\u00f9 veloci grazie alla cache incrementata. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>I comandi go build e go install ora accettano il flag -json, che segnala l'output e gli errori di build come output strutturato JSON nel flusso standard. I dettagli del formato possono essere visualizzati in go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Inoltre, go test -json ora segnala l'output e gli errori di build in JSON, mescolati con il JSON dei risultati dei test. Possono essere distinti attraverso nuovi tipi di Action, ma se causano problemi nel sistema di integrazione dei test, \u00e8 possibile tornare all'output testuale di build mediante <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">l'impostazione GODEBUG<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>La nuova variabile d'ambiente GOAUTH offre un modo flessibile per autorizzare il caricamento privato dei moduli. Puoi trovare ulteriori dettagli in go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>Il comando go build ora installa <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">la versione principale del modulo<\/a> nel binario compilato, basandosi sul tag e\/o sul commit del sistema di controllo versione. Il suffisso +dirty verr\u00e0 aggiunto se ci sono modifiche non commesse. Puoi utilizzare il flag -buildvcs=false per omettere le informazioni sul controllo versione dal binario.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nuova <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">la configurazione GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> pu\u00f2 ora essere utilizzata per tracciare il processo di selezione della toolchain nel comando go.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo supporta nuove annotazioni per le funzioni C per migliorare le prestazioni a tempo di esecuzione. #cgo noescape cFunctionName indica al compilatore che la memoria passata alla funzione C cFunctionName non esce. #cgo nocallback cFunctionName indica al compilatore che la funzione C cFunctionName non richiama alcuna funzione Go. Maggiori informazioni possono essere trovate nella <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">documentazione cgo<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo attualmente rifiuta di compilare le chiamate a una funzione C che ha pi\u00f9 dichiarazioni incompatibili. Ad esempio, se f \u00e8 dichiarato sia come void f(int) sia come void f(double), cgo restituir\u00e0 un errore invece di generare una sequenza di chiamate errata f(0). Nuovo in questa versione \u00e8 il miglioramento nel rilevamento di questa condizione di errore, quando le dichiarazioni incompatibili compaiono in file diversi. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>Lo strumento objdump ora supporta il disassemblaggio su architetture a 64 bit LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) e S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>Il nuovo analizzatore tests segnala errori comuni nelle dichiarazioni di test, fuzzers, benchmark ed esempi nei pacchetti di test, come nomi malformati, firme errate o esempi che documentano identificatori inesistenti. Alcuni di questi errori possono portare al fallimento dei test.<\/p>\n<p> <noindex><\/p>\n<p>L'analizzatore printf esistente ora fornisce diagnostica per le chiamate con il formato fmt.Printf(s), dove s \u00e8 una stringa di formato non costante, senza altri argomenti. Tali chiamate sono quasi sempre un errore, poich\u00e9 il valore di s pu\u00f2 contenere il simbolo %; invece, usa fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. Questo controllo tende a fare scoperte nel codice esistente, quindi viene applicato solo quando la versione del linguaggio (come specificato dalla direttiva del file go.mod o dai commenti `\/\/go:build`) \u00e8 almeno Go 1.24, per evitare malfunzionamenti nell'integrazione continua durante l'aggiornamento alla toolchain Go 1.24.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>L'analizzatore buildtag esistente ora fornisce diagnostica quando c'\u00e8 un'informazione errata <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">sulle restrizioni di build di versioni precedenti<\/a> di Go nella direttiva \/\/go:build. Ad esempio, \/\/go:build go1.23.1 fa riferimento a un rilascio patch; invece, usa \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>L'analizzatore copylock esistente ora fornisce diagnostica quando una variabile dichiarata in un ciclo 'for' triplo, come for i := iter(); done(i); i = next(i) { \u2026 }, contiene sync.Locker, come sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> ho modificato il comportamento di tali cicli creando una nuova variabile per ogni iterazione, copiando i valori dalla precedente iterazione; questa copia non \u00e8 sicura per i lock. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/66387\">#66387<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>GOCACHEPROG<\/h3>\n<p> <noindex><\/p>\n<p>Il binario interno cmd\/go e il meccanismo di caching dei test possono ora essere implementati da processi secondari che implementano il protocollo JSON tra lo strumento cmd\/go e il processo secondario, chiamato variabile d'ambiente GOCACHEPROG. In precedenza era sotto GOEXPERIMENT. I dettagli del protocollo possono essere visti in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">documentazione<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Tempo di esecuzione<\/h2>\n<p> <noindex><\/p>\n<p>Diversi miglioramenti delle prestazioni nel runtime hanno ridotto il sovraccarico della CPU del 2-3% in media tra un insieme rappresentativo di benchmark. I risultati possono variare a seconda dell'applicazione. Questi miglioramenti includono una nuova implementazione integrata della mappa basata su <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">Tabelle Svedesi<\/a>, un'allocazione di memoria pi\u00f9 efficiente per piccoli oggetti e una nuova implementazione interna del mutex nel runtime.<\/p>\n<p><\/noindex> <\/p>\n<p>La nuova implementazione integrata della mappa e il nuovo mutex interno del runtime possono essere disattivati impostando GOEXPERIMENT=noswissmap e GOEXPERIMENT=nospinbitmutex durante la compilazione, rispettivamente.<\/p>\n<h2>Compilatore<\/h2>\n<p>Il compilatore ha gi\u00e0 vietato la definizione di nuovi metodi con tipi di ricevente generati da cgo, ma era possibile aggirare questa restrizione tramite alias di tipo. Go 1.24 ora restituisce sempre un errore se il ricevente indica un tipo cgo generato, direttamente o indirettamente (tramite un alias di tipo).<\/p>\n<h2>Linker<\/h2>\n<p>Il linker ora genera un identificatore di build GNU (voci ELF NT_GNU_BUILD_ID) sulle piattaforme ELF e UUID (comando di caricamento Mach-O LC_UUID) su macOS per impostazione predefinita. L'identificatore di build o UUID \u00e8 estratto dall'identificatore di build di Go. Questo pu\u00f2 essere disabilitato con il flag del linker -B none, oppure sovrascritto con il flag del linker -B 0xNNNN con un valore esadecimale specificato dall'utente.<\/p>\n<h2>Rolling<\/h2>\n<p> <noindex><\/p>\n<p>Come indicato in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">note di rilascio di Go 1.22<\/a>, Go 1.24 ora richiede per il rolling Go 1.22.6 o successivo. Gli sviluppatori prevedono che Go 1.26 richieder\u00e0 per il rolling un rilascio puntuale di Go 1.24 o successivo.<\/p>\n<p><\/noindex> <\/p>\n<h2>Libreria Standard<\/h2>\n<h3>Accesso al file system limitato a directory<\/h3>\n<p> <noindex><\/p>\n<p>Nuovo tipo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> fornisce la possibilit\u00e0 di eseguire operazioni sul file system entro una directory specifica.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> apre una directory e restituisce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Metodi su <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> operano in questa directory e non consentono ai percorsi di riferirsi a posizioni al di fuori della directory, compresi quelli che seguono simbolicamente collegamenti al di fuori della directory. I metodi in os.Root riflettono la maggior parte delle operazioni del file system disponibili nel pacchetto os, inclusi, ad esempio, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Open\">os.Root.Open<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Create\">os.Root.Create<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Mkdir\">os.Root.Mkdir<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nuova funzione di benchmarking<\/h3>\n<p> <noindex><\/p>\n<p>I benchmark ora possono utilizzare un metodo pi\u00f9 veloce e meno soggetto a errori <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> per eseguire iterazioni sui benchmark come for b.Loop() { \u2026 } invece delle tipiche strutture cicliche che coinvolgono b.N come for range b.N. Ci\u00f2 offre due vantaggi significativi:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>La funzione di benchmark viene eseguita esattamente una volta per ogni -count, pertanto le costose fasi di impostazione e pulizia vengono eseguite solo una volta.<\/li>\n<li>I parametri di chiamata della funzione e i risultati continuano a vivere, impedendo al compilatore di ottimizzare completamente il corpo del ciclo.<\/li>\n<\/ul>\n<h3>Finalizzatori migliorati<\/h3>\n<p> <noindex><\/p>\n<p>Nuova funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> \u00e8 un meccanismo di completamento che \u00e8 pi\u00f9 flessibile, pi\u00f9 efficace e meno soggetto a errori rispetto a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup collega una funzione di pulizia all'oggetto, che verr\u00e0 eseguita non appena l'oggetto diventa non disponibile. Tuttavia, a differenza di SetFinalizer, \u00e8 possibile allegare pi\u00f9 funzioni di pulizia a un singolo oggetto, le pulizie possono essere collegate a puntatori interni, di solito non causano perdite di memoria quando gli oggetti formano un ciclo e non ritardano il rilascio dell'oggetto o degli oggetti a cui punta. Nuovo codice dovrebbe preferire AddCleanup a SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nuovo pacchetto weak<\/h3>\n<p> <noindex><\/p>\n<p>Nuovo pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> fornisce puntatori deboli.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I puntatori deboli sono un primitivo a basso livello fornito per creare strutture che utilizzano la memoria in modo efficiente, come i dizionari deboli per mappe di valori, dizionari di canonizzazione per qualsiasi cosa non coperta dal pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, e diversi tipi di cache. Per supportare questi casi d'uso, questa versione fornisce anche <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nuovo pacchetto crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Nuovo pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> implementa ML-KEM-768 e ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM \u00e8 un meccanismo di scambio chiave post-quantistico, precedentemente noto come Kyber e specificato in <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nuovi pacchetti crypto\/hkdf, crypto\/pbkdf2 e crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Nuovo pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implementa una funzione di derivazione della chiave basata su HMAC 'Extract-and-Expand' HKDF, come definito in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nuovo pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implementa una funzione di derivazione della chiave basata su password PBKDF2, come definito in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nuovo pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implementa la funzione hash SHA-3 e le funzioni SHAKE e cSHAKE di output estensibile, come definito in <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Tutti e tre i pacchetti si basano su pacchetti esistenti di golang.org\/x\/crypto\/\u2026<\/p>\n<h3>Compliance FIPS 140-3<\/h3>\n<p> <noindex><\/p>\n<p>Questa release include <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">un nuovo set di meccanismi per garantire la compliance FIPS 140-3<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Il modulo crittografico di Go \u00e8 un insieme di pacchetti interni della libreria standard, che vengono utilizzati in modo trasparente per implementare algoritmi approvati FIPS 140-3. Le applicazioni non richiedono modifiche per utilizzare il modulo crittografico di Go per algoritmi approvati.<\/p>\n<p> <noindex><\/p>\n<p>Una nuova variabile d'ambiente GOFIPS140 pu\u00f2 essere utilizzata per scegliere la versione del modulo crittografico di Go da utilizzare nella build. Nuovo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">la configurazione GODEBUG<\/a> fips140 pu\u00f2 essere utilizzato per abilitare la modalit\u00e0 FIPS 140-3 durante l'esecuzione.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 include il modulo crittografico di Go versione v1.0.0, attualmente in fase di test con un laboratorio accreditato CMVP.<\/p>\n<h3>Nuovo pacchetto sperimentale testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Nuovo pacchetto sperimentale <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> fornisce supporto per il test di codice concorrente.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> esegue un gruppo di goroutine in un \u00abbubble\u00bb isolato. Nel bubble, le funzioni del pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">ora<\/a> operano su orologi falsi.<\/li>\n<li>Le funzioni <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> attende che tutte le goroutine siano bloccate nel bubble attuale.<\/li>\n<\/ul>\n<p>Puoi trovare ulteriori dettagli nella documentazione del pacchetto.<\/p>\n<p> <noindex><\/p>\n<p>Il pacchetto synctest \u00e8 sperimentale e deve essere abilitato impostando GOEXPERIMENT=synctest. L'API del pacchetto potrebbe cambiare nelle future versioni. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> Puoi trovare ulteriori dettagli e fornire feedback.<\/p>\n<p><\/noindex> <\/p>\n<h3>Modifiche minori nella libreria<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Le implementazioni (*Writer.AddFS) in archive\/zip e archive\/tar ora scrivono l\u2019intestazione della directory per le directory vuote.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Il pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> aggiunge alcune funzioni che lavorano con gli iteratori:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> restituisce un iteratore sulle righe divise da nuove righe in uno slice di byte.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> restituisce un iteratore su tutti i sottoslice dello slice di byte, separati da un delimitatore.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> restituisce un iteratore sui sottoslice dello slice di byte, separati dopo ogni occorrenza del delimitatore.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> restituisce un iteratore sui sottovettori di uno slice di byte attorno alle sequenze di caratteri di spazio, come definito <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unicode#IsSpace\">unicode.IsSpace<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsFuncSeq\">FieldsFuncSeq<\/a> restituisce un iteratore sui sottovettori di uno slice di byte attorno alle sequenze di punti di codice unicode che soddisfano il predicato.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Il valore restituito <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> non implementa pi\u00f9 i metodi NewCTR, NewGCM, NewCBCEncrypter e NewCBCDecrypter. Questi metodi erano non documentati e non erano disponibili su tutte le architetture. Ora il valore <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> deve essere passato direttamente alle funzioni corrispondenti <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. Attualmente crypto\/cipher controlla ancora questi metodi sui valori Block, anche se non sono pi\u00f9 supportati dalla libreria standard.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Nuova funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> restituisce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, che implementa AES-GCM, generando un numero casuale monouso durante Seal e aggiungendolo all'inizio del testo crittografato.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implementazione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, restituita <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> utilizzando <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> ora \u00e8 molte volte pi\u00f9 veloce su amd64 e arm64.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewOFB\">NewOFB<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBEncrypter\">NewCFBEncrypter<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> ora sono considerati obsoleti. Le modalit\u00e0 OFB e CFB non sono autenticate, il che generalmente consente attacchi attivi di manipolare e ripristinare il testo in chiaro. Si raccomanda alle applicazioni di utilizzare <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> invece. Se \u00e8 necessaria una modalit\u00e0 non autenticata, \u00e8 possibile usare <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> in alternativa. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> in cambio.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa\/\">crypto\/ecdsa<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/ecdsa#PrivateKey.Sign\">PrivateKey.Sign<\/a> ora genera una firma deterministica secondo <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, se la sorgente di casualit\u00e0 \u00e8 nil.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/md5\/\">crypto\/md5<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Il valore restituito <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, ora implementa anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand\/\">crypto\/rand<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">Leggi<\/a> ora garantisce l'assenza di fallimenti. Se Read incontra un errore durante la lettura <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, il programma si interromper\u00e0 senza possibilit\u00e0 di recupero. Si noti che il Reader di default \u00e8 documentato per funzionare sempre con successo, quindi questa modifica dovrebbe interessare solo i programmi che sovrascrivono la variabile Reader. Un'eccezione sono i kernel Linux precedenti alla versione 3.17, dove il Reader di default apre ancora \/dev\/urandom e pu\u00f2 fallire.<\/p>\n<p><\/noindex> <\/p>\n<p>Su Linux 6.11 e versioni successive, Reader ora utilizza la chiamata di sistema getrandom attraverso vDSO. Questo \u00e8 significativamente pi\u00f9 veloce, di solito per letture piccole.<\/p>\n<p>Su OpenBSD, Reader ora utilizza arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Nuova funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> ora pu\u00f2 generare stringhe di testo casuali crittograficamente sicure.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa\/\">crypto\/rsa<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> ora restituisce un errore se viene richiesta una chiave lunga meno di 1024 bit. Tutti i metodi Sign, Verify, Encrypt e Decrypt ora restituiscono un errore se utilizzati con una chiave di dimensione inferiore a 1024 bit. Queste chiavi non sono sicure e non dovrebbero essere utilizzate. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Impostazione GODEBUG<\/a> rsa1024min=0 ripristina il vecchio comportamento, ma gli sviluppatori di Go consigliano di farlo solo quando necessario e solo nei test, ad esempio aggiungendo la riga \/\/go:debug rsa1024min=0 nel file di test. Nuovo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">esempio<\/a> GenerateKey offre una chiave di test standard di 2024 bit facile da usare.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ora \u00e8 sicuro e pi\u00f9 efficiente chiamare <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> fino a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute ora \u00e8 pi\u00f9 veloce in presenza di <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, ad esempio quando si estrae una chiave da JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Il pacchetto ora rifiuta pi\u00f9 chiavi errate, anche quando Validate non viene chiamato, e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> ora pu\u00f2 restituire nuovi errori per fonti di casualit\u00e0 rotte. I campi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> della struttura <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> ora sono utilizzati e convalidati anche quando alcuni valori sono assenti. Sono state apportate modifiche a crypto\/x509 per l'analisi e l'estrazione delle chiavi RSA, come descritto di seguito.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> ora supportano SHA-512\/224, SHA-512\/256 e SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> ora utilizza un metodo leggermente diverso per generare l'esponente privato (funzione di Carmichael invece della funzione di Eulero). Applicazioni rare che ricreano chiavi solo da numeri primi dall'esterno possono generare risultati diversi ma compatibili.<\/p>\n<p><\/noindex> <\/p>\n<p>Le operazioni sulle chiavi pubbliche e private sono ora fino a due volte pi\u00f9 veloci su wasm.<\/p>\n<h3>crypto\/sha*<\/h3>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha1\/\">crypto\/sha1<\/a>: valore restituito <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> ora implementa anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha256\/\">crypto\/sha256<\/a>: valori restituiti <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> ora implementano anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha512\/\">crypto\/sha512<\/a>: valori restituiti <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New\">sha512.New<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New384\">sha512.New384<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_224\">sha512.New512_224<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, ora implementano anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle\/\">crypto\/subtle<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Nuova funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> consente all'utente di eseguire una funzione con funzioni specifiche dell'architettura attivate, garantendo l'invariabilit\u00e0 di determinate istruzioni rispetto al valore temporale dei dati. Questo pu\u00f2 essere utilizzato per assicurarsi che il codice, progettato per funzionare in tempo costante, non sia stato ottimizzato da funzionalit\u00e0 a livello di processore in modo tale da operare in tempo variabile. Attualmente, WithDataIndependentTiming utilizza il bit PSTATE.DIT su arm64 e non fa nulla su tutte le altre architetture. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Impostazione GODEBUG<\/a> dataindependenttiming=1 attiva la modalit\u00e0 DIT per l'intero programma Go.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Risultato <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> deve sovrapporsi completamente o per niente con l'input. In precedenza, il comportamento era indefinito in caso contrario, mentre ora XORBytes generer\u00e0 un panico.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls\/\">crypto\/tls<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Il server TLS ora supporta Encrypted Client Hello (ECH). Questa funzionalit\u00e0 pu\u00f2 essere attivata compilando il campo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Un nuovo meccanismo di scambio chiave post-quantistico <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> \u00e8 ora supportato ed \u00e8 attivato per impostazione predefinita quando <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> \u00e8 nil. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Impostazione GODEBUG<\/a> tlsmlkem=0 restituisce il valore predefinito.<\/p>\n<p><\/noindex> <\/p>\n<p>Il supporto per l'exchange chiave sperimentale X25519Kyber768Draft00 \u00e8 stato rimosso.<\/p>\n<p> <noindex><\/p>\n<p>Il processo di scambio della chiave ora viene gestito interamente dal pacchetto crypto\/tls. L'ordice <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> ora viene ignorato, e il contenuto \u00e8 utilizzato solo per determinare quali scambi di chiavi includere quando il campo \u00e8 compilato.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Il nuovo campo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> elenca gli identificatori delle estensioni ricevuti nel messaggio Client Hello. Questo pu\u00f2 essere utile per il fingerprinting dei client TLS.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509\/\">crypto\/x509<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Impostazione GODEBUG<\/a> x509sha1 \u00e8 stato rimosso. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> non supporta pi\u00f9 le firme basate su SHA-1.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> ora implementa le interfacce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Il campo predefinito delle politiche dei certificati \u00e8 stato cambiato da <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> con <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. Durante l'analisi dei certificati, entrambi i campi saranno compilati, ma nella creazione delle politiche dei certificati verranno utilizzati i dati dal campo Certificate.Policies invece di Certificate.PolicyIdentifiers. Questa modifica pu\u00f2 essere ripristinata <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">con la configurazione GODEBUG<\/a> x509usepolicies=0.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#CreateCertificate\">CreateCertificate<\/a> ora generer\u00e0 un numero di serie utilizzando un metodo compatibile con RFC 5280 quando il modello viene passato nel campo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, invece di fallire.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> ora supporta la validazione delle politiche, come definito in RFC 5280 e RFC 9618. Il nuovo campo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> pu\u00f2 essere impostato su un insieme accettabile di politiche <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a>. Solo le catene di certificati con campi di politiche validi verranno restituite da <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS8PrivateKey\">MarshalPKCS8PrivateKey<\/a> ora restituisce un errore invece di estrarre una chiave RSA non corretta. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> non restituisce un errore e il suo comportamento con chiavi non corrette fornite rimane indefinito.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> ora utilizzano e convalidano i valori codificati CRT, quindi possono rifiutare chiavi RSA non valide che erano state precedentemente accettate. L'uso di <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">impostazione GODEBUG<\/a> x509rsacrt=0 riporta al ricalcolo dei valori CRT.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\/\">debug\/elf<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Il pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> aggiunge supporto per l'elaborazione delle versioni dei simboli nei file ELF (Executable and Linkable Format). Nuovo metodo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> restituisce un elenco delle versioni dinamiche definite nel file ELF. Nuovo metodo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> restituisce un elenco delle versioni dinamiche richieste da questo file ELF, definite in altri oggetti ELF. Infine, i nuovi campi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> indicano la versione del simbolo.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/\">encoding<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Due nuove interfacce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> sono stati introdotti per aggiungere una rappresentazione testuale o binaria di un oggetto a uno slice di byte. Questi interfacciano offrono le stesse funzionalit\u00e0 di <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, ma invece di allocare un nuovo slice ogni volta, aggiungono i dati direttamente nello slice esistente. Queste interfacce sono attualmente implementate da tipi della libreria standard che gi\u00e0 implementano TextMarshaler e\/o BinaryMarshaler.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json\/\">encoding\/json<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Durante la costruzione, il campo della struttura con la nuova opzione omitzero nel tag del campo sar\u00e0 omesso se il suo valore \u00e8 zero. Se il tipo del campo ha un metodo IsZero() bool, sar\u00e0 utilizzato per determinare se il valore \u00e8 nullo. Altrimenti, il valore sar\u00e0 nullo se \u00e8 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">il valore nullo per il suo tipo<\/a>. Il tag del campo omitzero \u00e8 pi\u00f9 pulito e meno soggetto a errori rispetto a omitempty, quando l'intenzione \u00e8 di omettere valori nulli. In particolare, a differenza di omitempty, omitzero omette valori nulli <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> , che \u00e8 una fonte comune di problemi.<\/p>\n<p><\/noindex> <\/p>\n<p>Se sia omitempty che omitzero sono specificati, il campo sar\u00e0 omesso se il valore \u00e8 vuoto o nullo (o entrambi contemporaneamente).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> ora include strutture incorporate per fornire messaggi di errore pi\u00f9 dettagliati.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Tutte le strutture dati go\/types, che rivelano sequenze di coppie di metodi come Len() int e At(int) T, ora hanno anche metodi che restituiscono iteratori, semplificando il codice come questo:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>Per questo:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Metodi: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.EmbeddedTypes\">Interface.EmbeddedTypes<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.ExplicitMethods\">Interface.ExplicitMethods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Interface.Methods\">Interface.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#MethodSet.Methods\">MethodSet.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Named.Methods\">Named.Methods<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Scope.Children\">Scope.Children<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Struct.Fields\">Struct.Fields<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Tuple.Variables\">Tuple.Variables<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#TypeList.Types\">TypeList.Types<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#TypeParamList.TypeParams\">TypeParamList.TypeParams<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types#Union.Terms\">Union.Terms<\/a><\/p>\n<p><\/noindex> <\/p>\n<h4>hash\/*<\/h4>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32\/\">hash\/adler32<\/a>: valore restituito <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">Nuovo<\/a>, ora implementa anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32\/\">hash\/crc32<\/a>: valori restituiti <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">Nuovo<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, ora implementano anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64\/\">hash\/crc64<\/a>: valore restituito <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">Nuovo<\/a>, ora implementa anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv\/\">hash\/fnv<\/a>: valori restituiti <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New32\">New32<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New32a\">New32a<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New64\">New64<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New64a\">New64a<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128\">New128<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, ora implementano anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash\/\">hash\/maphash<\/a>: nuove funzioni <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparabile<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> possono calcolare l'hash di qualsiasi valore che pu\u00f2 essere confrontato. Questo consente di hasciare qualsiasi cosa che possa essere usata come chiave in un dizionario Go.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog\/\">log\/slog<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Nuovo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> \u00e8 un gestore che non \u00e8 mai attivo e scarta sempre il suo output.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">Livello<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> ora implementa l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4>math\/*<\/h4>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big\/\">math\/big<\/a>: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Float\">Float<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Int\">Int<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> ora implementa l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/\">math\/rand<\/a>: le chiamate a funzioni di alto livello deprecate <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> non hanno pi\u00f9 alcun effetto. Per ripristinare il comportamento precedente, \u00e8 possibile utilizzare <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">l'impostazione GODEBUG<\/a> randseednop=0. Maggiore contesto in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">proposta 67273<\/a>.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2\/\">math\/rand\/v2<\/a>: <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#ChaCha8\">ChaCha8<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> ora implementa l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/\">net<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#ListenConfig\">ListenCondig<\/a> ora utilizza MPTCP per impostazione predefinita nei sistemi che lo supportano (attualmente solo Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> ora implementa l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/\">net\/http<\/a><\/h4>\n<p> <noindex><\/p>\n<p>\u00e8 cambiato il limite <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> sulle risposte informative 1xx in risposta a una richiesta. In precedenza questo fermava la richiesta e restituiva un errore dopo aver ricevuto pi\u00f9 di 5 risposte 1xx. Ora restituisce un errore solo se la dimensione totale di tutte le risposte 1xx supera la configurazione. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Inoltre, quando una richiesta ha un hook per il monitoraggio <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, ora non c'\u00e8 limite al numero totale di risposte 1xx. L'hook Got1xxResponse pu\u00f2 restituire un errore per interrompere la richiesta.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Server<\/a> ora hanno un campo HTTP2 che consente la configurazione delle impostazioni del protocollo HTTP\/2.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>I nuovi campi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> forniscono un modo semplice per configurare quali protocolli il server o il client utilizzano.<\/p>\n<p><\/noindex> <\/p>\n<p>Il server e il client possono essere configurati per supportare connessioni HTTP\/2 non crittografate.<\/p>\n<p> <noindex><\/p>\n<p>Quando <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> contiene UnencrypterHTTP2, il server accetter\u00e0 connessioni HTTP\/2 su porte non crittografate. Il server pu\u00f2 accettare sia HTTP\/1 che HTTP\/2 non crittografato sulla stessa porta.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Quando <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> contiene UnencryptedHTTP2 e non contiene HTTP1, il trasporto utilizzer\u00e0 HTTP\/2 non crittografato per gli indirizzi <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Se il trasporto \u00e8 configurato per utilizzare sia HTTP\/1 che HTTP\/2 non crittografato, utilizzer\u00e0 HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>Il supporto per HTTP\/2 non crittografato utilizza \"HTTP\/2 con conoscenza anticipata\" (RFC 9113, sezione 3.3). L'intestazione obsoleta \"Upgrade: h2c\" non \u00e8 supportata.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip\/\">net\/netip<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Addr\">Addr<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#AddrPort\">AddrPort<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> ora implementano le interfacce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/url\/\">net\/url<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/url#URL\">URL<\/a> ora implementa anche l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user\/\">os\/user<\/a><\/h4>\n<p> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> pu\u00f2 ora essere utilizzato in Windows Nano Server. L'implementazione \u00e8 stata aggiornata per evitare l'uso di funzioni dalla libreria NetApi32, che \u00e8 assente in Nano Server.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Lookup\">Lookup<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">LookupId<\/a> ora supportano i seguenti account di servizio utente incorporati:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>NT AUTHORITYSYSTEM<\/li>\n<li>NT AUTHORITYLOCAL SERVICE<\/li>\n<li>NT AUTHORITYNETWORK SERVICE<\/li>\n<\/ul>\n<p> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> \u00e8 stato notevolmente accelerato quando l'utente corrente \u00e8 collegato a un dominio lento, il che \u00e8 comune per molti utenti aziendali. La nuova prestazione dell'implementazione ora \u00e8 nell'ordine dei millisecondi, rispetto all'implementazione precedente, che poteva richiedere diversi secondi, persino minuti, per completarsi.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>In Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> ora restituisce l'utente proprietario del processo quando il thread corrente si finge un altro utente. In precedenza, questo restituiva un errore.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/regexp\/\">regexp<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/regexp#Regexp\">Regexp<\/a> ora implementa l'interfaccia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAdapter<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/\">runtime<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Funzione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> ora dichiarato obsoleto. Nella nuova versione, si consiglia di utilizzare il percorso di sistema per determinare il binario 'go' e usare 'go env GOROOT' per determinare GOROOT.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\/\">strings<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Il pacchetto <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> aggiunge diverse funzioni per lavorare con gli iteratori:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> restituisce un iteratore per le righe della stringa separate da una nuova linea.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> restituisce un iteratore per tutte le sottostringhe della stringa, separate dal delimitatore.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> restituisce un iteratore per le sottostringhe della stringa, separate dopo ogni occorrenza del delimitatore.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> restituisce un iteratore per le sottostringhe della stringa attorno a sequenze di caratteri di spazio, come definito.<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unicode#IsSpace\">unicode.IsSpace<\/a><\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsFuncSeq\">FieldsFuncSeq<\/a> restituisce un iteratore per le sottostringhe della stringa attorno a sequenze di punti di codice Unicode che soddisfano il predicato.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Implementazione <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> \u00e8 stata modificata per migliorare le prestazioni, in particolare per le modifiche al dizionario. Ad esempio, \u00e8 meno probabile che ci sia una competizione tra modifiche di insiemi non sovrapposti su grandi dizionari, e non \u00e8 pi\u00f9 necessario il tempo di accumulo per raggiungere il caricamento dal dizionario con bassa competizione.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Se riscontri problemi, imposta GOEXPERIMENT=nosynchashtriemap durante la compilazione per tornare alla vecchia implementazione e, per favore, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">compila il modulo per segnalare il problema<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/\">testing<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Nuovi metodi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> restituiscono il contesto che viene annullato dopo il completamento del test e prima dell'esecuzione delle funzioni di pulizia del test.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nuovi metodi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> possono essere utilizzati per cambiare la directory di lavoro durante l'esecuzione del test o del benchmark.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>I template ora supportano range-over-func e range-over-int.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\/\">ora<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">Tempo<\/a> ora implementa le interfacce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Porte<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Come era <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">annunciato<\/a> nelle note di rilascio di Go 1.23, Go 1.24 richiede il kernel Linux versione 3.2 o successiva.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 \u00e8 l'ultima versione che funzioner\u00e0 su macOS 11 Big Sur. Go 1.25 richieder\u00e0 macOS 12 Monterey o successivo.<\/p>\n<h3>WebAssembly<\/h3>\n<p>La direttiva del compilatore go:wasmexport \u00e8 stata aggiunta ai programmi Go per esportare funzioni nell'host WebAssembly.<\/p>\n<p> <noindex><\/p>\n<p>Nell'interfaccia di sistema WebAssembly Preview 1 (GOOS=wasip1 GOARCH=wasm) Go 1.24 supporta la compilazione di un programma Go come <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> attraverso l'indicazione del flag di compilazione -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ora sono consentiti pi\u00f9 tipi come tipo di argomento o risultato per le funzioni go:wasmimport. In particolare, bool, string, uintptr e puntatori a determinati tipi sono consentiti (ulteriori dettagli possono essere trovati in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">documentazione<\/a>), insieme a tipi di interi a 32 bit e 64 bit e a numeri a virgola mobile, e unsafe.Pointer, che sono gi\u00e0 consentiti. Questi tipi sono anch'essi consentiti come tipi di argomento o risultato per le funzioni go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>I file di supporto per WebAssembly sono stati spostati in lib\/wasm da misc\/wasm.<\/p>\n<p>La dimensione della memoria originale \u00e8 stata notevolmente ridotta, specialmente per le piccole applicazioni WebAssembly.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>La porta a 32 bit per windows\/arm (GOOS=windows GOARCH=arm) \u00e8 stata segnalata come rotta. Ulteriori dettagli in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Fonte: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/news\/development\/17884044\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":121951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-121950","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/go-1-24\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Go 1.24 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/go-1-24\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-02-15T12:22:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-02-15T12:22:29+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Go 1.24 | ProHoster","description":"La nuova versione del linguaggio Go, versione 1.24, viene rilasciata sei mesi dopo Go 1.23. La maggior parte delle modifiche riguardano l'implementazione del toolchain, del runtime e delle librerie. Come sempre, il rilascio garantisce la promessa di compatibilit\u00e0 con Go 1. Gli sviluppatori del linguaggio si aspettano che quasi tutti i programmi Go continuino a compilarsi e a funzionare come prima. Le modifiche nel linguaggio Go 1.24 ora supportano completamente gli alias di tipo generici: alias","canonical_url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Go 1.24 | ProHoster","og:description":"\u041d\u043e\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u044f\u0437\u044b\u043a\u0430 Go, \u0432\u0435\u0440\u0441\u0438\u044f 1.24, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u0448\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0441\u043b\u0435 Go 1.23. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 Go 1. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u043e\u0436\u0438\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b Go \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0436\u0434\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go 1.24 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0435 \u0430\u043b\u0438\u0430\u0441\u044b \u0442\u0438\u043f\u043e\u0432: \u0430\u043b\u0438\u0430\u0441","og:url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/go-1-24","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2025-02-15T12:22:29+00:00","article:modified_time":"2025-02-15T12:22:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"121950","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 10:38:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 10:38:20","updated":"2026-01-23 10:38:20"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}