{"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\/fr\/blog\/news\/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>La nouvelle version du langage Go, version 1.24, sort six mois apr\u00e8s <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. La plupart des changements concernent l'impl\u00e9mentation de la cha\u00eene d'outils, du runtime et des biblioth\u00e8ques. Comme toujours, la version garantit <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">la promesse de compatibilit\u00e9<\/a> Go 1. Les d\u00e9veloppeurs du langage s'attendent \u00e0 ce que presque tous les programmes Go continuent de se compiler et de fonctionner comme auparavant.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Les changements dans le langage<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 prend d\u00e9sormais en charge <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">les alias de type g\u00e9n\u00e9riques<\/a>: un alias de type peut \u00eatre param\u00e9tr\u00e9 comme un type d\u00e9clar\u00e9. Plus de d\u00e9tails dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">la sp\u00e9cification du langage<\/a>. Pour l'instant, cette fonctionnalit\u00e9 peut \u00eatre d\u00e9sactiv\u00e9e en d\u00e9finissant GOEXPERIMENT=noaliastypeparams ; cependant, l'option aliastypeparams sera supprim\u00e9e dans Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>Outils<\/h2>\n<h3>La commande go<\/h3>\n<p> <noindex><\/p>\n<p>Les modules go peuvent d\u00e9sormais suivre les d\u00e9pendances ex\u00e9cutables en utilisant la directive tool dans go.mod. Cela \u00e9limine le besoin d'une solution de contournement pr\u00e9c\u00e9dente consistant \u00e0 ajouter des outils en tant qu'importations vides dans le fichier, g\u00e9n\u00e9ralement appel\u00e9 \u00ab tools.go \u00bb. La commande go tool peut d\u00e9sormais ex\u00e9cuter ces outils en plus des outils fournis avec Go. Plus d'informations peuvent \u00eatre trouv\u00e9es dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">documentation<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Le nouveau drapeau -tool pour go get ajoute la directive d'outil au module actuel pour les packages sp\u00e9cifi\u00e9s, en plus d'ajouter la directive de requirements.<\/p>\n<p> <noindex><\/p>\n<p>Nouveau <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">Le m\u00e9ta-pattern tool<\/a> fait r\u00e9f\u00e9rence \u00e0 tous les outils dans le module actuel. Cela peut \u00eatre utilis\u00e9 pour les mettre \u00e0 jour tous via go get tool ou pour les installer dans votre r\u00e9pertoire GOBIN via go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Les fichiers ex\u00e9cutables cr\u00e9\u00e9s via go run et le nouveau comportement de go tool sont d\u00e9sormais mis en cache dans le cache de compilation de Go. Cela rend les ex\u00e9cutions r\u00e9p\u00e9t\u00e9es plus efficaces gr\u00e2ce \u00e0 un cache accru. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Les commandes go build et go install prennent d\u00e9sormais l'option -json, qui indique les sorties et les erreurs de compilation sous forme de sortie structur\u00e9e JSON dans la sortie standard. Les d\u00e9tails du format peuvent \u00eatre trouv\u00e9s dans go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>De plus, go test -json rapporte d\u00e9sormais les sorties et les erreurs de compilation en JSON, en intercalant avec le JSON des r\u00e9sultats des tests. Ils peuvent \u00eatre distingu\u00e9s par de nouveaux types d'Action, mais s'ils causent des probl\u00e8mes dans le syst\u00e8me d'int\u00e9gration des tests, il est possible de revenir \u00e0 la sortie textuelle des compilations via <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">la configuration GODEBUG<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>La nouvelle variable d'environnement GOAUTH offre un moyen flexible d'autoriser le tirage priv\u00e9 des modules. Les d\u00e9tails peuvent \u00eatre trouv\u00e9s dans go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>La commande go build installe d\u00e9sormais <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">la version du module principal<\/a> dans le binaire compil\u00e9, bas\u00e9 sur le tag et\/ou le commit du syst\u00e8me de contr\u00f4le de version. Le suffixe +dirty sera ajout\u00e9 en cas de modifications non commises. Vous pouvez utiliser le drapeau -buildvcs=false pour omettre les informations de contr\u00f4le de version du binaire.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nouveau <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">configuration GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> peut maintenant \u00eatre utilis\u00e9 pour suivre le processus de s\u00e9lection de la toolchain dans l'\u00e9quipe go.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo prend en charge les nouvelles annotations pour les fonctions C pour am\u00e9liorer les performances \u00e0 l'ex\u00e9cution. #cgo noescape cFunctionName indique au compilateur que la m\u00e9moire pass\u00e9e \u00e0 la fonction C cFunctionName ne s'\u00e9chappe pas. #cgo nocallback cFunctionName indique au compilateur que la fonction C cFunctionName ne rappelle aucune fonction Go. Plus d'informations peuvent \u00eatre trouv\u00e9es dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">la documentation cgo<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo refuse actuellement de compiler des appels de fonctions C qui ont plusieurs d\u00e9clarations incompatibles. Par exemple, si f est d\u00e9clar\u00e9 \u00e0 la fois comme void f(int) et void f(double), cgo renvoie une erreur au lieu de g\u00e9n\u00e9rer une s\u00e9quence d'appels incorrecte f(0). Nouveau dans cette version est l'am\u00e9lioration de la d\u00e9tection de cette condition d'erreur lorsque des d\u00e9clarations incompatibles apparaissent dans diff\u00e9rents fichiers. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>L'outil objdump prend d\u00e9sormais en charge la d\u00e9sassemblage sur LoongArch 64 bits (GOARCH=loong64), RISC-V (GOARCH=riscv64) et S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>Le nouvel analyseur tests signale des erreurs courantes dans les d\u00e9clarations de tests, les fuzzers, les benchmarks et les exemples dans les paquets de tests, telles que des noms mal form\u00e9s, des signatures incorrectes ou des exemples qui documentent des identifiants inexistants. Certaines de ces erreurs peuvent entra\u00eener l'\u00e9chec des tests.<\/p>\n<p> <noindex><\/p>\n<p>L'analyseur printf existant signale d\u00e9sormais des diagnostics pour les appels sous la forme fmt.Printf(s), o\u00f9 s est une cha\u00eene de format non constante, sans d'autres arguments. De tels appels sont presque toujours une erreur, car la valeur de s peut contenir le symbole % ; utilisez plut\u00f4t fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. Cette v\u00e9rification tend \u00e0 faire des d\u00e9couvertes dans le code existant, et est donc appliqu\u00e9e uniquement lorsque la version du langage (comme indiqu\u00e9 par la directive go du fichier go.mod ou les commentaires `\/\/go:build) est au moins Go 1.24, afin d'\u00e9viter des \u00e9checs de l'int\u00e9gration continue lors de la mise \u00e0 jour vers la toolchain Go 1.24.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>L'analyseur buildtag existant signale d\u00e9sormais un diagnostic lorsqu'il y a une erreur. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">limitation de la version de construction sup\u00e9rieure<\/a> Go dans la directive \/\/go:build. Par exemple, \/\/go:build go1.23.1 fait r\u00e9f\u00e9rence \u00e0 un release point; au lieu de cela, utilisez \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>L'analyseur copylock existant signale d\u00e9sormais un diagnostic lorsque la variable d\u00e9clar\u00e9e dans une boucle 'for' triple, telle que for i := iter(); done(i); i = next(i) { ... }, contient un sync.Locker, tel que sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> a chang\u00e9 le comportement de ces boucles pour cr\u00e9er une nouvelle variable \u00e0 chaque it\u00e9ration, copiant les valeurs de l'it\u00e9ration pr\u00e9c\u00e9dente; cette copie n'est pas s\u00fbre pour les verrous. <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>Le binaire interne cmd\/go et le m\u00e9canisme de mise en cache des tests peuvent d\u00e9sormais \u00eatre impl\u00e9ment\u00e9s par des processus enfants, r\u00e9alisant un protocole JSON entre l'outil cmd\/go et le processus enfant, nomm\u00e9 par la variable d'environnement GOCACHEPROG. Auparavant, c'\u00e9tait par GOEXPERIMENT. Les d\u00e9tails du protocole peuvent \u00eatre consult\u00e9s dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">documentation<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Temps d'ex\u00e9cution<\/h2>\n<p> <noindex><\/p>\n<p>Plusieurs am\u00e9liorations de performance dans le runtime ont r\u00e9duit l'overhead CPU de 2 \u00e0 3% en moyenne parmi un ensemble de benchmarks repr\u00e9sentatifs. Les r\u00e9sultats peuvent varier en fonction de l'application. Ces am\u00e9liorations incluent une nouvelle impl\u00e9mentation int\u00e9gr\u00e9e de la carte bas\u00e9e sur <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">tableaux su\u00e9dois<\/a>, une allocation m\u00e9moire plus efficace des petits objets et une nouvelle impl\u00e9mentation de mutex dans le runtime.<\/p>\n<p><\/noindex> <\/p>\n<p>La nouvelle impl\u00e9mentation int\u00e9gr\u00e9e de la carte et le nouveau mutex du runtime peuvent \u00eatre d\u00e9sactiv\u00e9s respectivement avec les param\u00e8tres GOEXPERIMENT=noswissmap et GOEXPERIMENT=nospinbitmutex lors de la construction.<\/p>\n<h2>Compilateur<\/h2>\n<p>Le compilateur interdisait d\u00e9j\u00e0 de d\u00e9finir de nouvelles m\u00e9thodes avec des types de r\u00e9cepteur g\u00e9n\u00e9r\u00e9s par cgo, mais il \u00e9tait possible de contourner cette restriction par un alias de type. Go 1.24 signale d\u00e9sormais toujours une erreur si le r\u00e9cepteur d\u00e9signe un type cgo g\u00e9n\u00e9r\u00e9, directement ou indirectement (par un alias de type).<\/p>\n<h2>Linker<\/h2>\n<p>Le linker g\u00e9n\u00e8re d\u00e9sormais un identifiant de construction GNU (enregistrement ELF NT_GNU_BUILD_ID) sur les plateformes ELF et un UUID (commande de chargement Mach-O LC_UUID) sur macOS par d\u00e9faut. L'identifiant de construction ou l'UUID est d\u00e9riv\u00e9 de l'identifiant de construction Go. Cela peut \u00eatre d\u00e9sactiv\u00e9 par le drapeau du linker -B none, ou remplac\u00e9 par le drapeau du linker -B 0xNNNN avec la valeur hexad\u00e9cimale sp\u00e9cifi\u00e9e par l'utilisateur.<\/p>\n<h2>D\u00e9ploiement<\/h2>\n<p> <noindex><\/p>\n<p>Comme indiqu\u00e9 dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">les notes de version de Go 1.22<\/a>, Go 1.24 n\u00e9cessite maintenant Go 1.22.6 ou une version ult\u00e9rieure pour \u00eatre d\u00e9ploy\u00e9. Les d\u00e9veloppeurs s'attendent \u00e0 ce que Go 1.26 n\u00e9cessite un correctif de Go 1.24 ou une version ult\u00e9rieure.<\/p>\n<p><\/noindex> <\/p>\n<h2>Biblioth\u00e8que standard<\/h2>\n<h3>Acc\u00e8s au syst\u00e8me de fichiers limit\u00e9 par r\u00e9pertoire<\/h3>\n<p> <noindex><\/p>\n<p>Nouveau type <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> permet d'effectuer des op\u00e9rations sur le syst\u00e8me de fichiers dans un r\u00e9pertoire donn\u00e9.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> ouvre un r\u00e9pertoire et renvoie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Les m\u00e9thodes sur <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> op\u00e8rent dans ce r\u00e9pertoire et ne permettent pas aux chemins de r\u00e9f\u00e9rencer des emplacements en dehors de celui-ci, y compris ceux qui suivent des liens symboliques en dehors du r\u00e9pertoire. Les m\u00e9thodes sur os.Root refl\u00e8tent la plupart des op\u00e9rations du syst\u00e8me de fichiers disponibles dans le package os, y compris, par exemple, <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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nouvelle fonction de benchmark<\/h3>\n<p> <noindex><\/p>\n<p>Les benchmarks peuvent maintenant utiliser une m\u00e9thode plus rapide et moins sujette aux erreurs <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> pour it\u00e9rer le benchmark comme for b.Loop() { \u2026 } au lieu de la structure cyclique typique impliquant b.N comme for range b.N. Cela offre deux avantages significatifs :<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>La fonction de benchmark s'ex\u00e9cute exactement une fois par -count, donc les \u00e9tapes d'installation et de nettoyage co\u00fbteuses ne s'ex\u00e9cutent qu'une seule fois.<\/li>\n<li>Les param\u00e8tres de l'appel de fonction et les r\u00e9sultats continuent d'exister, emp\u00eachant le compilateur d'optimiser compl\u00e8tement le corps de la boucle.<\/li>\n<\/ul>\n<h3>Finaliseurs am\u00e9lior\u00e9s<\/h3>\n<p> <noindex><\/p>\n<p>La nouvelle fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> est un m\u00e9canisme de nettoyage qui est plus flexible, plus efficace et moins sujet aux erreurs que <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup attache une fonction de nettoyage \u00e0 un objet, qui s'ex\u00e9cutera d\u00e8s que l'objet deviendra inaccessible. Cependant, contrairement \u00e0 SetFinalizer, plusieurs nettoyages peuvent \u00eatre attach\u00e9s \u00e0 un m\u00eame objet, les nettoyages peuvent \u00eatre attach\u00e9s \u00e0 des pointeurs internes, les nettoyages ne provoquent g\u00e9n\u00e9ralement pas de fuites lorsqu'il existe des cycles d'objets, et ils ne retardent pas la lib\u00e9ration de l'objet ou des objets auxquels il fait r\u00e9f\u00e9rence. Le nouveau code devrait pr\u00e9f\u00e9rer AddCleanup \u00e0 SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nouveau package weak<\/h3>\n<p> <noindex><\/p>\n<p>Le nouveau package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> fournit des pointeurs faibles.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Les pointeurs faibles sont un primitif de bas niveau, fourni pour cr\u00e9er des structures qui utilisent efficacement la m\u00e9moire, comme des dictionnaires faibles pour faire correspondre des valeurs, des dictionnaires de canonisation pour tout ce qui n'est pas couvert par le package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, et diff\u00e9rents types de caches. Pour prendre en charge ces cas d'utilisation, cette version fournit \u00e9galement <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nouveau paquet crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Le nouveau package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> impl\u00e9mente ML-KEM-768 et ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM est un m\u00e9canisme d'\u00e9change de cl\u00e9s post-quantique, anciennement connu sous le nom de Kyber et sp\u00e9cifi\u00e9 dans <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nouveaux paquets crypto\/hkdf, crypto\/pbkdf2 et crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Le nouveau package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> impl\u00e9mente une fonction de g\u00e9n\u00e9ration de cl\u00e9s bas\u00e9e sur HMAC \u00ab Extract-and-Expand \u00bb HKDF, comme d\u00e9fini dans <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Le nouveau package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> impl\u00e9mente une fonction de g\u00e9n\u00e9ration de cl\u00e9s bas\u00e9e sur un mot de passe PBKDF2, comme d\u00e9fini dans <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Le nouveau package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> impl\u00e9mente la fonction de hachage SHA-3 et les fonctions SHAKE et cSHAKE \u00e0 sortie variable, comme d\u00e9fini dans <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Tous les trois paquets sont bas\u00e9s sur des paquets existants pr\u00e9c\u00e9demment golang.org\/x\/crypto\/....<\/p>\n<h3>Conformit\u00e9 FIPS 140-3<\/h3>\n<p> <noindex><\/p>\n<p>Cette version inclut <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">un nouvel ensemble de m\u00e9canismes pour assurer la conformit\u00e9 FIPS 140-3<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Le module cryptographique Go est un ensemble de paquets internes de la biblioth\u00e8que standard, utilis\u00e9s de mani\u00e8re transparente pour impl\u00e9menter des algorithmes FIPS 140-3 approuv\u00e9s. Les applications ne n\u00e9cessitent aucun changement pour utiliser le module cryptographique Go pour les algorithmes approuv\u00e9s.<\/p>\n<p> <noindex><\/p>\n<p>La nouvelle variable d'environnement GOFIPS140 peut \u00eatre utilis\u00e9e pour choisir la version du module cryptographique Go \u00e0 utiliser lors de la compilation. Le nouveau <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">configuration GODEBUG<\/a> fips140 peut \u00eatre utilis\u00e9 pour activer le mode FIPS 140-3 \u00e0 l'ex\u00e9cution.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 inclut le module cryptographique Go version v1.0.0, qui est actuellement test\u00e9 avec un laboratoire CMVP accr\u00e9dit\u00e9.<\/p>\n<h3>Nouveau paquet exp\u00e9rimental testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Nouveau paquet exp\u00e9rimental <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> fournit un support pour le test de code concurrent.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> ex\u00e9cute un groupe de goroutines dans une \u00ab bulle \u00bb isol\u00e9e. Dans la bulle, les fonctions du paquet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">time<\/a> op\u00e8rent sur des horloges factices.<\/li>\n<li>Fonctions <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> attend que toutes les goroutines soient bloqu\u00e9es dans la bulle actuelle.<\/li>\n<\/ul>\n<p>Les d\u00e9tails peuvent \u00eatre consult\u00e9s dans la documentation du paquet.<\/p>\n<p> <noindex><\/p>\n<p>Le paquet synctest est exp\u00e9rimental et doit \u00eatre activ\u00e9 en d\u00e9finissant GOEXPERIMENT=synctest. L'API du paquet peut changer dans de futures versions. Dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> vous pouvez voir plus de d\u00e9tails et fournir des commentaires.<\/p>\n<p><\/noindex> <\/p>\n<h3>Modifications mineures dans la biblioth\u00e8que<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Les impl\u00e9mentations (*Writer.AddFS) dans archive\/zip et archive\/tar \u00e9crivent maintenant l'en-t\u00eate du r\u00e9pertoire pour un r\u00e9pertoire vide.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> ajoute plusieurs fonctions qui travaillent avec des it\u00e9rateurs :<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> renvoie un it\u00e9rateur sur les lignes s\u00e9par\u00e9es par de nouvelles lignes dans un tableau d'octets.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> renvoie un it\u00e9rateur sur tous les sous-segments d'un tableau d'octets, s\u00e9par\u00e9s par un s\u00e9parateur.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> renvoie un it\u00e9rateur sur les sous-segments d'un tableau d'octets, s\u00e9par\u00e9s apr\u00e8s chaque occurrence du s\u00e9parateur.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> renvoie un it\u00e9rateur sur les sous-segments d'un tableau d'octets autour des s\u00e9quences de caract\u00e8res d'espace, comme d\u00e9fini. <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> renvoie un it\u00e9rateur sur les sous-segments d'un tableau d'octets autour des s\u00e9quences de points de code Unicode satisfaisant un pr\u00e9dicat.<\/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>Valeur renvoy\u00e9e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> ne met plus en \u0153uvre les m\u00e9thodes NewCTR, NewGCM, NewCBCEncrypter et NewCBCDecrypter. Ces m\u00e9thodes n'\u00e9taient pas document\u00e9es et n'\u00e9taient pas disponibles sur toutes les architectures. Maintenant, la valeur <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> doit \u00eatre pass\u00e9e directement aux fonctions correspondantes. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. Actuellement, crypto\/cipher v\u00e9rifie toujours ces m\u00e9thodes sur les valeurs Block, m\u00eame si elles ne sont plus prises en charge par la biblioth\u00e8que 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>La nouvelle fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> retourne <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, qui met en \u0153uvre AES-GCM en g\u00e9n\u00e9rant un num\u00e9ro unique al\u00e9atoire lors du Seal et en l'ajoutant au d\u00e9but du texte chiffr\u00e9.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Mise en \u0153uvre <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, renvoy\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> lorsqu'il est utilis\u00e9 avec <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> maintenant plusieurs fois plus rapide sur amd64 et 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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> sont d\u00e9sormais d\u00e9clar\u00e9s obsol\u00e8tes. Les modes OFB et CFB ne sont pas authentifi\u00e9s, ce qui permet en g\u00e9n\u00e9ral aux attaques actives de manipuler et de restaurer le texte ouvert. Les applications sont invit\u00e9es \u00e0 utiliser <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> \u00e0 la place. Si un mode non authentifi\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> est n\u00e9cessaire, il est possible d'utiliser <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> \u00e0 la place.<\/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> cr\u00e9e maintenant une signature d\u00e9terministe conforme \u00e0 <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, si la source de hasard est 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>Valeur renvoy\u00e9e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, met maintenant \u00e9galement en \u0153uvre l'interface <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>Fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">Lire<\/a> garantit maintenant l'absence d'\u00e9chec. Si Read rencontre une erreur lors de la lecture <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, le programme se terminera de mani\u00e8re irr\u00e9versible. Notez que le Reader par d\u00e9faut est document\u00e9 pour toujours fonctionner avec succ\u00e8s, donc ce changement ne devrait concerner que les programmes qui red\u00e9finissent la variable Reader. Une seule exception concerne les noyaux Linux avant la version 3.17, o\u00f9 le Reader par d\u00e9faut ouvre encore \/dev\/urandom et peut \u00e9chouer.<\/p>\n<p><\/noindex> <\/p>\n<p>Sur Linux 6.11 et plus, Reader utilise maintenant l'appel syst\u00e8me getrandom via vDSO. C'est plusieurs fois plus rapide, g\u00e9n\u00e9ralement pour de petites lectures.<\/p>\n<p>Sur OpenBSD, Reader utilise maintenant arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>La nouvelle fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> peut d\u00e9sormais g\u00e9n\u00e9rer des cha\u00eenes de texte al\u00e9atoires cryptographiquement s\u00e9curis\u00e9es.<\/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> renvoie maintenant une erreur si une cl\u00e9 de moins de 1024 bits est demand\u00e9e. Tous les m\u00e9thodes Sign, Verify, Encrypt, et Decrypt renvoient d\u00e9sormais une erreur si elles sont utilis\u00e9es avec une cl\u00e9 de moins de 1024 bits. De telles cl\u00e9s ne sont pas s\u00e9curis\u00e9es et ne devraient pas \u00eatre utilis\u00e9es. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Configuration GODEBUG<\/a> rsa1024min=0 restaure le comportement pr\u00e9c\u00e9dent, mais les d\u00e9veloppeurs de Go recommandent de ne le faire que si n\u00e9cessaire et uniquement dans les tests, par exemple en ajoutant la ligne \/\/go:debug rsa1024min=0 dans le fichier de test. Le nouveau <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">exemple<\/a> GenerateKey fournit une cl\u00e9 de test standard de 2024 bits facile \u00e0 utiliser.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Il est maintenant s\u00fbr et plus efficace d'appeler <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> \u00e0 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute est maintenant plus rapide en pr\u00e9sence de <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, par exemple lors de l'extraction d'une cl\u00e9 \u00e0 partir de JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Le paquet rejette d\u00e9sormais plus de cl\u00e9s incorrectes, m\u00eame lorsque Validate n'est pas appel\u00e9, et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> peut d\u00e9sormais renvoyer de nouvelles erreurs pour des sources al\u00e9atoires d\u00e9fectueuses. Les champs <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> de la structure <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> sont d\u00e9sormais utilis\u00e9s et valid\u00e9s m\u00eame lorsque certaines valeurs manquent. Des modifications ont \u00e9galement \u00e9t\u00e9 apport\u00e9es \u00e0 crypto\/x509 pour l'analyse et l'extraction des cl\u00e9s RSA, d\u00e9crites ci-dessous.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> prennent d\u00e9sormais en charge SHA-512\/224, SHA-512\/256 et SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> utilise maintenant une m\u00e9thode l\u00e9g\u00e8rement diff\u00e9rente pour g\u00e9n\u00e9rer l'exposant priv\u00e9 (la fonction de Carmichael au lieu de la fonction d'Euler). Les applications rares qui reconstruisent uniquement les cl\u00e9s \u00e0 partir de nombres premiers externes peuvent produire des r\u00e9sultats diff\u00e9rents mais compatibles.<\/p>\n<p><\/noindex> <\/p>\n<p>Les op\u00e9rations sur les cl\u00e9s publiques et priv\u00e9es sont d\u00e9sormais jusqu'\u00e0 deux fois plus rapides sur wasm.<\/p>\n<h3>crypto\/sha*<\/h3>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha1\/\">crypto\/sha1<\/a>: la valeur renvoy\u00e9e par <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> impl\u00e9mente maintenant \u00e9galement l'interface <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>: les valeurs renvoy\u00e9es par <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> impl\u00e9mentent d\u00e9sormais \u00e9galement l'interface <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>: les valeurs renvoy\u00e9es par <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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, impl\u00e9mentent maintenant \u00e9galement l'interface <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>La nouvelle fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> permet \u00e0 l'utilisateur d'ex\u00e9cuter une fonction avec des fonctionnalit\u00e9s sp\u00e9cifiques \u00e0 l'architecture, garantissant l'immuabilit\u00e9 de certaines instructions en fonction du temps des valeurs des donn\u00e9es. Cela peut \u00eatre utilis\u00e9 pour s'assurer que le code con\u00e7u pour fonctionner en temps constant n'a pas \u00e9t\u00e9 optimis\u00e9 par les fonctions de niveau du processeur de mani\u00e8re \u00e0 fonctionner en temps variable. Actuellement, WithDataIndependentTiming utilise le bit PSTATE.DIT sur arm64 et ne fait rien sur toutes les autres architectures. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Configuration GODEBUG<\/a> dataindependenttiming=1 active le mode DIT pour tout le programme Go.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Sortie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> doit se superposer compl\u00e8tement ou pas du tout aux entr\u00e9es. Auparavant, le comportement \u00e9tait ind\u00e9fini dans le cas contraire, tandis qu'aujourd'hui XORBytes va paniquer.<\/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>Le serveur TLS prend maintenant en charge Encrypted Client Hello (ECH). Cette fonctionnalit\u00e9 peut \u00eatre activ\u00e9e en remplissant le champ <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Un nouveau m\u00e9canisme d'\u00e9change de cl\u00e9s post-quantique <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> est maintenant pris en charge et activ\u00e9 par d\u00e9faut lorsque <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> est nil. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Configuration GODEBUG<\/a> tlsmlkem=0 renvoie par d\u00e9faut.<\/p>\n<p><\/noindex> <\/p>\n<p>Le support de l'\u00e9change de cl\u00e9s exp\u00e9rimental X25519Kyber768Draft00 a \u00e9t\u00e9 supprim\u00e9.<\/p>\n<p> <noindex><\/p>\n<p>L'ordre d'\u00e9change de cl\u00e9s est maintenant enti\u00e8rement g\u00e9r\u00e9 par le paquet crypto\/tls. L'ordre <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> est maintenant ignor\u00e9, et le contenu est uniquement utilis\u00e9 pour d\u00e9terminer quels \u00e9changes de cl\u00e9s inclure lorsque le champ est rempli.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Un nouveau champ <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> \u00e9num\u00e8re la liste des identifiants d'extensions re\u00e7us dans le message Client Hello. Cela peut \u00eatre utile pour le fingerprinting des clients 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\">Configuration GODEBUG<\/a> x509sha1 a \u00e9t\u00e9 supprim\u00e9. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> ne prend plus en charge les signatures bas\u00e9es sur SHA-1.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> impl\u00e9mente maintenant les interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Le champ par d\u00e9faut des politiques de certificat a \u00e9t\u00e9 modifi\u00e9 de <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> sur <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. Lors de l'analyse des certificats, les deux champs seront remplis, mais lors de la cr\u00e9ation de politiques de certificats, ils seront pris du champ Certificate.Policies au lieu de Certificate.PolicyIdentifiers. Ce changement peut \u00eatre annul\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">par la configuration 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> va maintenant g\u00e9n\u00e9rer un num\u00e9ro de s\u00e9rie en utilisant une m\u00e9thode compatible RFC 5280 lors de la transmission du mod\u00e8le par le champ <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, au lieu de provoquer une erreur.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> prend maintenant en charge la validation des politiques telles que d\u00e9finies dans RFC 5280 et RFC 9618. Le nouveau champ <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> peut \u00eatre d\u00e9fini sur un ensemble acceptable de politiques <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Seules les cha\u00eenes de certificats avec des graphes de politiques valides seront renvoy\u00e9es depuis <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> g\u00e9n\u00e8re maintenant une erreur au lieu d'extraire une cl\u00e9 RSA incorrecte. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> qui ne renvoie pas d'erreur et son comportement avec des cl\u00e9s incorrectes fournies reste ind\u00e9fini.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> valide maintenant et utilise les valeurs CRT encod\u00e9es, ce qui lui permet de rejeter les cl\u00e9s RSA incorrectes qui \u00e9taient accept\u00e9es auparavant. Utiliser <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">les r\u00e9glages GODEBUG<\/a> x509rsacrt=0 ram\u00e8ne au recalcul des valeurs 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>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> ajoute la prise en charge du traitement des versions de symboles dans les fichiers ELF (Executable and Linkable Format). La nouvelle m\u00e9thode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> renvoie une liste des versions dynamiques d\u00e9finies dans le fichier ELF. La nouvelle m\u00e9thode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> renvoie une liste des versions dynamiques requises par ce fichier ELF, qui sont d\u00e9finies dans d'autres objets ELF. Enfin, les nouveaux champs <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> indiquent la version du symbole.<\/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>Deux nouvelles interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> ont \u00e9t\u00e9 introduites pour ajouter une repr\u00e9sentation textuelle ou binaire de l'objet \u00e0 un tableau d'octets. Ces interfaces fournissent la m\u00eame fonctionnalit\u00e9 que <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, mais au lieu d'allouer un nouveau tableau chaque fois, elles ajoutent directement les donn\u00e9es au tableau existant. Ces interfaces sont maintenant impl\u00e9ment\u00e9es par des types de la biblioth\u00e8que standard qui impl\u00e9mentent d\u00e9j\u00e0 TextMarshaler et\/ou 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>Lors de l'encodage, un champ de structure avec la nouvelle option omitzero dans le tag de champ de structure sera omis si sa valeur est z\u00e9ro. Si le type du champ a une m\u00e9thode IsZero() bool, elle sera utilis\u00e9e pour d\u00e9terminer si la valeur est z\u00e9ro. Sinon, la valeur sera z\u00e9ro si elle est <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">une valeur nulle pour son type<\/a>. Le tag de champ omitzero est plus propre et moins sujet aux erreurs que omitempty, lorsque l'intention est d'omettre les valeurs nulles. En particulier, contrairement \u00e0 omitempty, omitzero omet les valeurs nulles <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> , ce qui est une source fr\u00e9quente de probl\u00e8mes.<\/p>\n<p><\/noindex> <\/p>\n<p>Si \u00e0 la fois omitempty et omitzero sont sp\u00e9cifi\u00e9s, le champ sera omis si la valeur est vide ou nulle (ou les deux \u00e0 la fois).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> inclut d\u00e9sormais des structures int\u00e9gr\u00e9es pour fournir des messages d'erreur plus d\u00e9taill\u00e9s.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Toutes les structures de donn\u00e9es go\/types, qui r\u00e9v\u00e8lent des s\u00e9quences de paires de m\u00e9thodes comme Len() int et At(int) T, disposent d\u00e9sormais \u00e9galement de m\u00e9thodes qui retournent des it\u00e9rateurs, permettant de simplifier le code comme celui-ci :<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>Pour cela :<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>M\u00e9thodes : <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>: la valeur renvoy\u00e9e par <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">Nouveau<\/a>, met maintenant \u00e9galement en \u0153uvre l'interface <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>: les valeurs renvoy\u00e9es par <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">Nouveau<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, impl\u00e9mentent maintenant \u00e9galement l'interface <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>: la valeur renvoy\u00e9e par <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">Nouveau<\/a>, met maintenant \u00e9galement en \u0153uvre l'interface <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>: les valeurs renvoy\u00e9es par <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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, impl\u00e9mentent maintenant \u00e9galement l'interface <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>: nouvelles fonctions <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> peuvent calculer le hachage de toute valeur qui peut \u00eatre compar\u00e9e. Cela permet de hacher n'importe quoi qui peut \u00eatre utilis\u00e9 comme cl\u00e9 d'un dictionnaire 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>Nouveau <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> est un gestionnaire qui n'est jamais activ\u00e9 et qui jette toujours sa sortie.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">Niveau<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> impl\u00e9mente d\u00e9sormais l'interface <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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> impl\u00e9mente d\u00e9sormais l'interface <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>: les appels de la fonction de haut niveau obsol\u00e8te <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> n'ont plus aucun effet. Pour restaurer le comportement d'antan, vous pouvez utiliser <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">la configuration GODEBUG<\/a> randseednop=0. Plus de contexte dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">la proposition 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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> impl\u00e9mente d\u00e9sormais l'interface <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> utilise d\u00e9sormais MPTCP par d\u00e9faut sur les syst\u00e8mes o\u00f9 cela est pris en charge (pour l'instant seulement Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> impl\u00e9mente d\u00e9sormais l'interface <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>La limitation a chang\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> sur les r\u00e9ponses d'information 1xx re\u00e7ues en r\u00e9ponse \u00e0 une demande. Auparavant, cela arr\u00eatait la requ\u00eate et renvoyait une erreur apr\u00e8s avoir re\u00e7u plus de 5 r\u00e9ponses 1xx. D\u00e9sormais, cela renvoie une erreur uniquement si la taille totale de toutes les r\u00e9ponses 1xx d\u00e9passe le param\u00e8tre de configuration <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>De plus, lorsqu'une requ\u00eate a un hook de suivi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, il n'y a d\u00e9sormais aucune limite sur le nombre total de r\u00e9ponses 1xx. Le hook Got1xxResponse peut renvoyer une erreur pour arr\u00eater la requ\u00eate.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Serveur<\/a> ont d\u00e9sormais un champ HTTP2, qui permet de configurer les param\u00e8tres du protocole HTTP\/2.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Les nouveaux champs <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> offrent un moyen simple de configurer quels protocoles le serveur ou le client HTTP utilisent.<\/p>\n<p><\/noindex> <\/p>\n<p>Le serveur et le client peuvent \u00eatre configur\u00e9s pour prendre en charge des connexions HTTP\/2 non chiffr\u00e9es.<\/p>\n<p> <noindex><\/p>\n<p>Lorsque <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> contient UnencrypterHTTP2, le serveur acceptera les connexions HTTP\/2 sur des ports non chiffr\u00e9s. Le serveur peut accepter \u00e0 la fois HTTP\/1 et HTTP\/2 non chiffr\u00e9 sur le m\u00eame port.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Lorsque <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> contient UnencryptedHTTP2 et ne contient pas HTTP1, le transport utilisera HTTP\/2 non chiffr\u00e9 pour les adresses <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Si le transport est configur\u00e9 pour utiliser \u00e0 la fois HTTP\/1 et HTTP\/2 non chiffr\u00e9, il utilisera HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>Le support de HTTP\/2 non chiffr\u00e9 utilise \u00ab HTTP\/2 avec pr\u00e9connaissance \u00bb (RFC 9113, section 3.3). L'en-t\u00eate obsol\u00e8te \u00ab Upgrade: h2c \u00bb n'est pas pris en charge.<\/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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> impl\u00e9mentent maintenant des interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> et <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> impl\u00e9mente maintenant \u00e9galement l'interface <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>Sous Windows, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> peut maintenant \u00eatre utilis\u00e9 sur Windows Nano Server. L'impl\u00e9mentation a \u00e9t\u00e9 mise \u00e0 jour pour \u00e9viter l'utilisation de fonctions de la biblioth\u00e8que NetApi32, qui est absente sur Nano Server.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Sous 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> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">LookupId<\/a> prise en charge des comptes de service utilisateur int\u00e9gr\u00e9s suivants :<\/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>Sous Windows, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> a \u00e9t\u00e9 significativement acc\u00e9l\u00e9r\u00e9e lorsque l'utilisateur actuel est connect\u00e9 \u00e0 un domaine lent, ce qui est fr\u00e9quent pour de nombreux utilisateurs d'entreprise. Maintenant, la performance de l'impl\u00e9mentation est de l'ordre de la milliseconde, par rapport \u00e0 l'ancienne impl\u00e9mentation qui pouvait prendre plusieurs secondes, voire des minutes, pour s'achever.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Sous Windows, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> renvoie d\u00e9sormais l'utilisateur propri\u00e9taire du processus lorsque le thread actuel se fait passer pour un autre utilisateur. Auparavant, cela renvoyait une erreur.<\/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> impl\u00e9mente d\u00e9sormais l'interface <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>Fonction <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> est d\u00e9sormais d\u00e9clar\u00e9e obsol\u00e8te. Dans le nouveau code, il convient de privil\u00e9gier l'utilisation du chemin syst\u00e8me pour identifier le binaire \u00ab go \u00bb, et d'utiliser go env GOROOT pour d\u00e9terminer 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>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> ajoute plusieurs fonctions pour travailler avec des it\u00e9rateurs :<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> renvoie un it\u00e9rateur sur les lignes s\u00e9par\u00e9es par de nouvelles lignes dans la cha\u00eene.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> renvoie un it\u00e9rateur sur toutes les sous-cha\u00eenes de la cha\u00eene, s\u00e9par\u00e9es par le s\u00e9parateur.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> renvoie un it\u00e9rateur sur les sous-cha\u00eenes de la cha\u00eene, s\u00e9par\u00e9es apr\u00e8s chaque occurrence du s\u00e9parateur.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> renvoie un it\u00e9rateur sur les sous-cha\u00eenes de la cha\u00eene autour des s\u00e9quences de caract\u00e8res d'espace tel que d\u00e9fini<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> renvoie un it\u00e9rateur sur les sous-cha\u00eenes de la cha\u00eene autour des s\u00e9quences de points de code unicode qui satisfont le pr\u00e9dicat.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Mise en \u0153uvre <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> a \u00e9t\u00e9 modifi\u00e9e pour am\u00e9liorer les performances, en particulier pour les modifications de dictionnaires. Par exemple, la concurrence des modifications de ensembles non chevauchants sur de grands dictionnaires est moins probable, et il n'est plus n\u00e9cessaire d'accumuler du temps pour atteindre un dictionnaire \u00e0 faible concurrence.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Si vous rencontrez des probl\u00e8mes, d\u00e9finissez GOEXPERIMENT=nosynchashtriemap lors de la compilation pour revenir \u00e0 l'ancienne impl\u00e9mentation et, s'il vous pla\u00eet, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">remplissez le formulaire de probl\u00e8me<\/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>Nouvelles m\u00e9thodes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> renvoie le contexte qui est annul\u00e9 apr\u00e8s la fin du test et avant l'ex\u00e9cution des fonctions de nettoyage du test.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nouvelles m\u00e9thodes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> peuvent \u00eatre utilis\u00e9s pour changer le r\u00e9pertoire de travail pendant la dur\u00e9e du test ou du benchmark.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>Les mod\u00e8les prennent maintenant en charge range-over-func et range-over-int.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\/\">time<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">Temps<\/a> impl\u00e9mente maintenant les interfaces <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> et <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Ports<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Comment c'\u00e9tait <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">d\u00e9clar\u00e9<\/a> dans les notes de version de Go 1.23, Go 1.24 n\u00e9cessite un noyau Linux version 3.2 ou ult\u00e9rieure.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 est la derni\u00e8re version qui fonctionnera sur macOS 11 Big Sur. Go 1.25 n\u00e9cessitera macOS 12 Monterey ou ult\u00e9rieure.<\/p>\n<h3>WebAssembly<\/h3>\n<p>La directive du compilateur go:wasmexport a \u00e9t\u00e9 ajout\u00e9e aux programmes Go pour exporter des fonctions vers l'h\u00f4te WebAssembly.<\/p>\n<p> <noindex><\/p>\n<p>Dans WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm), Go 1.24 prend en charge la compilation d'un programme Go comme <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> en sp\u00e9cifiant le flag de construction -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Plus de types sont d\u00e9sormais autoris\u00e9s comme type d'argument ou de r\u00e9sultat pour les fonctions go:wasmimport. En particulier, bool, string, uintptr et des pointeurs vers des types sp\u00e9cifiques sont autoris\u00e9s (les d\u00e9tails peuvent \u00eatre consult\u00e9s dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">documentation<\/a>), avec des types d'entiers de 32 bits et 64 bits et des nombres flottants, ainsi que unsafe.Pointer, qui sont d\u00e9j\u00e0 autoris\u00e9s. Ces types sont \u00e9galement autoris\u00e9s comme types d'argument ou de r\u00e9sultat pour les fonctions go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>Les fichiers de support pour WebAssembly ont \u00e9t\u00e9 d\u00e9plac\u00e9s dans lib\/wasm depuis misc\/wasm.<\/p>\n<p>La taille de la m\u00e9moire d'origine a \u00e9t\u00e9 consid\u00e9rablement r\u00e9duite, en particulier pour les petites applications WebAssembly.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>Le port windows\/arm 32 bits (GOOS=windows GOARCH=arm) a \u00e9t\u00e9 marqu\u00e9 comme cass\u00e9. Les d\u00e9tails dans <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Source : <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-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\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\/fr\/blog\/news\/go-1-24\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/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":"","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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:url":"https:\/\/prohoster.info\/fr\/blog\/news\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}