{"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\/cs\/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>Nov\u00e1 verze programovac\u00edho jazyka Go, verze 1.24, vych\u00e1z\u00ed \u0161est m\u011bs\u00edc\u016f po <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. V\u011bt\u0161ina zm\u011bn se t\u00fdk\u00e1 implementace toolchainu, runtime a knihoven. Jak je obvykl\u00e9, vyd\u00e1n\u00ed zaji\u0161\u0165uje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">slib kompatibility<\/a> Go 1. V\u00fdvoj\u00e1\u0159i jazyka o\u010dek\u00e1vaj\u00ed, \u017ee t\u00e9m\u011b\u0159 v\u0161echny programy v Go budou nad\u00e1le kompilovateln\u00e9 a budou fungovat jako d\u0159\u00edv.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Zm\u011bny v jazyce<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 nyn\u00ed pln\u011b podporuje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">generick\u00e9 typov\u00e9 aliasy<\/a>: alias typu m\u016f\u017ee b\u00fdt parametrizov\u00e1n jako deklarovan\u00fd typ. Podrobnosti naleznete v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">specifikaci jazyka<\/a>. Zat\u00edm lze tuto mo\u017enost deaktivovat nastaven\u00edm GOEXPERIMENT=noaliastypeparams; nicm\u00e9n\u011b volba aliastypeparams bude odstran\u011bna v Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>N\u00e1stroje<\/h2>\n<h3>P\u0159\u00edkaz go<\/h3>\n<p> <noindex><\/p>\n<p>Moduly Go nyn\u00ed mohou sledovat vykonateln\u00e9 z\u00e1vislosti pomoc\u00ed direktivy tool v go.mod. T\u00edmto se eliminuje pot\u0159eba p\u0159edchoz\u00edho obchodu s p\u0159id\u00e1v\u00e1n\u00edm n\u00e1stroj\u016f jako pr\u00e1zdn\u00fdch import\u016f do souboru, obvykle naz\u00fdvan\u00e9ho \"tools.go\". P\u0159\u00edkaz go tool nyn\u00ed m\u016f\u017ee spou\u0161t\u011bt tyto n\u00e1stroje vedle n\u00e1stroj\u016f dod\u00e1van\u00fdch spolu s Go. V\u00edce informac\u00ed naleznete v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">dokumentaci<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Nov\u00e1 vlajka -tool pro go get vede k p\u0159id\u00e1n\u00ed direktivy n\u00e1stroje do aktu\u00e1ln\u00edho modulu pro specifikovan\u00e9 bal\u00ed\u010dky nav\u00edc k p\u0159id\u00e1n\u00ed po\u017eadovan\u00fdch direktiv.<\/p>\n<p> <noindex><\/p>\n<p>Nov\u00fd <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">meta-vzor tool<\/a> odkazuje na v\u0161echny n\u00e1stroje v aktu\u00e1ln\u00edm modulu. To m\u016f\u017ee b\u00fdt pou\u017eito k jejich hromadn\u00e9 aktualizaci p\u0159es go get tool nebo k jejich instalaci do adres\u00e1\u0159e GOBIN p\u0159es go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Spu\u0161t\u011bn\u00e9 soubory vytvo\u0159en\u00e9 pomoc\u00ed go run a nov\u00e9 chov\u00e1n\u00ed go tool jsou nyn\u00ed ukl\u00e1d\u00e1ny do cache Go. To zrychluje opakovan\u00e9 spou\u0161t\u011bn\u00ed d\u00edky zv\u011bt\u0161en\u00e9 cache. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>P\u0159\u00edkazy go build a go install nyn\u00ed akceptuj\u00ed vlajku -json, kter\u00e1 hl\u00e1s\u00ed v\u00fdstupy a chyby kompilace jako strukturovan\u00fd v\u00fdstup JSON do standardn\u00edho v\u00fdstupu. Podrobnosti form\u00e1tu naleznete v go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Nav\u00edc, go test -json nyn\u00ed hl\u00e1s\u00ed v\u00fdstupy a chyby kompilace v JSON, sm\u00edchan\u00e9 s JSONem v\u00fdsledk\u016f testu. Tyto lze odli\u0161it podle nov\u00fdch typ\u016f Action, ale pokud zp\u016fsobuj\u00ed probl\u00e9my v testovac\u00ed integra\u010dn\u00ed syst\u00e9m, lze se vr\u00e1tit k textov\u00e9mu v\u00fdstupu kompilace prost\u0159ednictv\u00edm <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastaven\u00ed GODEBUG<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>Nov\u00e1 prom\u011bnn\u00e1 prost\u0159ed\u00ed GOAUTH poskytuje flexibiln\u00ed zp\u016fsob autorizace soukrom\u00fdch modulov\u00fdch stahov\u00e1n\u00ed. Podrobnosti naleznete v go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>P\u0159\u00edkaz go build nyn\u00ed nastavuje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">verzi z\u00e1kladn\u00edho modulu<\/a> ve skompilovan\u00e9m bin\u00e1rn\u00edm souboru, vych\u00e1zej\u00edc\u00edm z tagu a\/nebo commitu syst\u00e9mu \u0159\u00edzen\u00ed verz\u00ed. P\u0159\u00edpona +dirty bude p\u0159id\u00e1na v p\u0159\u00edpad\u011b necommitovan\u00fdch zm\u011bn. M\u016f\u017eete pou\u017e\u00edt p\u0159\u00edznak -buildvcs=false k tomu, abyste vynechali informace o \u0159\u00edzen\u00ed verz\u00ed z bin\u00e1rn\u00edho souboru.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastaven\u00ed GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> nyn\u00ed m\u016f\u017ee b\u00fdt pou\u017eito k sledov\u00e1n\u00ed procesu v\u00fdb\u011bru toolchainu v t\u00fdmu go.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo podporuje nov\u00e9 anotace pro C funkce pro zlep\u0161en\u00ed v\u00fdkonu za b\u011bhu. #cgo noescape cFunctionName \u0159\u00edk\u00e1 p\u0159eklada\u010di, \u017ee pam\u011b\u0165 p\u0159edan\u00e1 do funkce C cFunctionName neunik\u00e1. #cgo nocallback cFunctionName \u0159\u00edk\u00e1 p\u0159eklada\u010di, \u017ee funkce C cFunctionName neprov\u00e1d\u00ed \u017e\u00e1dn\u00e9 zp\u011btn\u00e9 vol\u00e1n\u00ed na funkce Go. V\u00edce informac\u00ed naleznete v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">dokumentaci cgo<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo v sou\u010dasnosti odm\u00edt\u00e1 kompilovan\u00e9 vol\u00e1n\u00ed C funkce, kter\u00e1 m\u00e1 v\u00edce nekompatibiln\u00edch deklarac\u00ed. Nap\u0159\u00edklad, pokud je f deklarov\u00e1na jako sou\u010dasn\u011b void f(int) a void f(double), cgo nahl\u00e1s\u00ed chybu m\u00edsto mo\u017en\u00e9ho vygenerov\u00e1n\u00ed nespr\u00e1vn\u00e9 posloupnosti vol\u00e1n\u00ed f(0). Novinkou v t\u00e9to verzi je vylep\u0161en\u00e9 rozpozn\u00e1v\u00e1n\u00ed tohoto chybov\u00e9ho stavu, kdy\u017e se nekompatibiln\u00ed deklarace projevuj\u00ed v r\u016fzn\u00fdch souborech. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>N\u00e1stroj objdump nyn\u00ed podporuje disassemblov\u00e1n\u00ed na 64-bitov\u00e9m LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) a S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>Nov\u00fd analyz\u00e1tor tests hl\u00e1s\u00ed b\u011b\u017en\u00e9 chyby v deklarac\u00edch test\u016f, fuzzers, benchmark\u016f a p\u0159\u00edklad\u016f v testovac\u00edch bal\u00ed\u010dc\u00edch, jako jsou nespr\u00e1vn\u011b formulovan\u00e1 jm\u00e9na, nespr\u00e1vn\u00e9 podpisy nebo p\u0159\u00edklady, kter\u00e9 dokumentuj\u00ed neexistuj\u00edc\u00ed identifik\u00e1tory. N\u011bkter\u00e9 z t\u011bchto chyb mohou v\u00e9st k selh\u00e1n\u00ed test\u016f.<\/p>\n<p> <noindex><\/p>\n<p>Existuj\u00edc\u00ed analyz\u00e1tor printf nyn\u00ed hl\u00e1s\u00ed diagnostiku vol\u00e1n\u00ed ve form\u00e1tu fmt.Printf(s), kde s je nes konstantn\u00ed form\u00e1tovac\u00ed \u0159et\u011bzec, bez dal\u0161\u00edch argument\u016f. Takov\u00e1 vol\u00e1n\u00ed b\u00fdvaj\u00ed t\u00e9m\u011b\u0159 v\u017edy chybou, proto\u017ee hodnota s m\u016f\u017ee obsahovat znak %; m\u00edsto toho pou\u017eijte fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. Tato kontrola m\u00e1 tendenci nach\u00e1zet chyby ve st\u00e1vaj\u00edc\u00edm k\u00f3du, a proto se pou\u017e\u00edv\u00e1 pouze tehdy, kdy\u017e verze jazyka (jak je uvedeno direktivou go v souboru go.mod nebo koment\u00e1\u0159i `\/\/go:build) je alespo\u0148 Go 1.24, aby se p\u0159ede\u0161lo selh\u00e1n\u00edm p\u0159i pokra\u010duj\u00edc\u00ed integraci p\u0159i aktualizaci na toolchain Go 1.24.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>St\u00e1vaj\u00edc\u00ed analyz\u00e1tor buildtag nyn\u00ed hl\u00e1s\u00ed diagnostiku, kdy\u017e dojde k chyb\u011b. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">omezen\u00ed verze sestaven\u00ed.<\/a> Go v direktiv\u011b \/\/go:build. Nap\u0159\u00edklad \/\/go:build go1.23.1 se odkazuje na konkr\u00e9tn\u00ed vyd\u00e1n\u00ed; m\u00edsto toho pou\u017eijte \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>St\u00e1vaj\u00edc\u00ed analyz\u00e1tor copylock nyn\u00ed hl\u00e1s\u00ed diagnostiku, kdy\u017e prom\u011bnn\u00e1 deklarovan\u00e1 ve trojit\u00e9m cyklu 'for', jako nap\u0159\u00edklad for i := iter(); done(i); i = next(i) { \u2026 }, obsahuje sync.Locker, jako je sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> zm\u011bnil chov\u00e1n\u00ed t\u011bchto cykl\u016f na vytv\u00e1\u0159en\u00ed nov\u00e9 prom\u011bnn\u00e9 pro ka\u017edou iteraci kop\u00edrov\u00e1n\u00edm hodnot z p\u0159edchoz\u00ed iterace; toto kop\u00edrov\u00e1n\u00ed nen\u00ed bezpe\u010dn\u00e9 pro z\u00e1mky. <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>Vnit\u0159n\u00ed bin\u00e1rn\u00ed soubor cmd\/go a mechanismus pro testov\u00e1n\u00ed cachov\u00e1n\u00ed mohou nyn\u00ed b\u00fdt realizov\u00e1ny pod\u0159\u00edzen\u00fdmi procesy, kter\u00e9 realizuj\u00ed protokol JSON mezi n\u00e1strojem cmd\/go a pod\u0159\u00edzen\u00fdm procesem, jeho\u017e n\u00e1zev je prom\u011bnn\u00e1 prost\u0159ed\u00ed GOCACHEPROG. D\u0159\u00edve to bylo v GOEXPERIMENT. Podrobnosti protokolu lze vid\u011bt v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">dokumentaci<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Doba prov\u00e1d\u011bn\u00ed<\/h2>\n<p> <noindex><\/p>\n<p>N\u011bkolik zlep\u0161en\u00ed v\u00fdkonu v runtime sn\u00ed\u017eilo n\u00e1klady na CPU o 2-3 % v pr\u016fm\u011bru v souboru reprezentativn\u00edch benchmark\u016f. V\u00fdsledky se mohou li\u0161it v z\u00e1vislosti na aplikaci. Tato zlep\u0161en\u00ed zahrnuj\u00ed nov\u00fd vestav\u011bn\u00fd mapov\u00fd implementaci zalo\u017eenou na <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">\u0160v\u00e9dsk\u00fdch Tabulk\u00e1ch<\/a>, efektivn\u011bj\u0161\u00ed alokaci pam\u011bti mal\u00fdch objekt\u016f a novou intern\u00ed runtime implementaci mutexu.<\/p>\n<p><\/noindex> <\/p>\n<p>Nov\u00e1 vestav\u011bn\u00e1 implementace mapy a nov\u00fd intern\u00ed runtime mutex mohou b\u00fdt deaktivov\u00e1ny nastaven\u00edm GOEXPERIMENT=noswissmap a GOEXPERIMENT=nospinbitmutex b\u011bhem sestaven\u00ed.<\/p>\n<h2>Kompil\u00e1tor<\/h2>\n<p>Kompil\u00e1tor ji\u017e zakazoval definov\u00e1n\u00ed nov\u00fdch metod s typy p\u0159\u00edjemce, kter\u00e9 byly generov\u00e1ny cgo, ale bylo mo\u017en\u00e9 obej\u00edt toto omezen\u00ed prost\u0159ednictv\u00edm aliasu typu. Go 1.24 nyn\u00ed v\u017edy hl\u00e1s\u00ed chybu, pokud p\u0159\u00edjemce odkazuje na generovan\u00fd cgo typ, p\u0159\u00edmo nebo nep\u0159\u00edmo (prost\u0159ednictv\u00edm aliasov\u00e9ho typu).<\/p>\n<h2>Linker<\/h2>\n<p>Linker nyn\u00ed generuje identifik\u00e1tor sestaven\u00ed GNU (z\u00e1znam ELF NT_GNU_BUILD_ID) na platform\u00e1ch ELF a UUID (na\u010d\u00edtac\u00ed p\u0159\u00edkaz Mach-O LC_UUID) na macOS podle defaultu. Identifik\u00e1tor sestaven\u00ed nebo UUID se odvozuje z identifik\u00e1toru sestaven\u00ed Go. To m\u016f\u017ee b\u00fdt vypnuto flagem linkeru -B none, nebo p\u0159eps\u00e1no flagem linkeru -B 0xNNNN s u\u017eivatelsky zadanou hexadecim\u00e1ln\u00ed hodnotou.<\/p>\n<h2>Rozto\u010den\u00ed<\/h2>\n<p> <noindex><\/p>\n<p>Jak bylo uvedeno v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">pozn\u00e1mk\u00e1ch k vyd\u00e1n\u00ed Go 1.22<\/a>, Go 1.24 nyn\u00ed vy\u017eaduje ke spu\u0161t\u011bn\u00ed Go 1.22.6 nebo nov\u011bj\u0161\u00ed. V\u00fdvoj\u00e1\u0159i o\u010dek\u00e1vaj\u00ed, \u017ee Go 1.26 bude vy\u017eadovat pro spu\u0161t\u011bn\u00ed bodovou verzi Go 1.24 nebo nov\u011bj\u0161\u00ed.<\/p>\n<p><\/noindex> <\/p>\n<h2>Standardn\u00ed knihovna<\/h2>\n<h3>Omezen\u00fd p\u0159\u00edstup k souborov\u00e9mu syst\u00e9mu podle adres\u00e1\u0159e<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd typ <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> umo\u017e\u0148uje prov\u00e1d\u011bt operace se souborov\u00fdm syst\u00e9mem v r\u00e1mci ur\u010dit\u00e9ho adres\u00e1\u0159e.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> otev\u00edr\u00e1 adres\u00e1\u0159 a vrac\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Metody na <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> pracuj\u00ed v tomto adres\u00e1\u0159i a neumo\u017e\u0148uj\u00ed, aby cesty odkazovaly na um\u00edst\u011bn\u00ed mimo adres\u00e1\u0159, v\u010detn\u011b t\u011bch, kter\u00e9 n\u00e1sleduj\u00ed za symbolick\u00fdmi odkazy mimo adres\u00e1\u0159. Metody na os.Root odr\u00e1\u017eej\u00ed v\u011bt\u0161inu operac\u00ed se souborov\u00fdm syst\u00e9mem dostupn\u00fdch v bal\u00ed\u010dku os, v\u010detn\u011b nap\u0159\u00edklad <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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nov\u00e1 funkce benchmarku<\/h3>\n<p> <noindex><\/p>\n<p>Benchmarky nyn\u00ed mohou vyu\u017e\u00edvat rychlej\u0161\u00ed a m\u00e9n\u011b chybov\u00fd zp\u016fsob <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> k iteraci benchmarku jako for b.Loop() { \u2026 } m\u00edsto obvykl\u00fdch cyklick\u00fdch struktur s \u00fa\u010dast\u00ed b.N jako for range b.N. To nab\u00edz\u00ed dv\u011b v\u00fdznamn\u00e9 v\u00fdhody:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funkce benchmarku se prov\u00e1d\u00ed p\u0159esn\u011b jednou na ka\u017ed\u00fd -count, tak\u017ee n\u00e1kladn\u00e9 f\u00e1ze nastaven\u00ed a \u00faklidu se prov\u00e1d\u011bj\u00ed pouze jednou.<\/li>\n<li>Parametry vol\u00e1n\u00ed funkce a v\u00fdsledky z\u016fst\u00e1vaj\u00ed na\u017eivu, co\u017e br\u00e1n\u00ed kompil\u00e1toru v pln\u00e9 optimalizaci t\u011bla smy\u010dky.<\/li>\n<\/ul>\n<h3>Vylep\u0161en\u00e9 finaliz\u00e1tory<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00e1 funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> je mechanismus \u00faklidu, kter\u00fd je flexibiln\u011bj\u0161\u00ed, efektivn\u011bj\u0161\u00ed a m\u00e9n\u011b n\u00e1chyln\u00fd k chyb\u00e1m ne\u017e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup p\u0159ipojuje funkci \u00faklidu k objektu, kter\u00e1 se spust\u00ed, jakmile se objekt stane nedostupn\u00fdm. Na rozd\u00edl od SetFinalizer v\u0161ak mohou b\u00fdt k jednomu objektu p\u0159ipojeny v\u00edce \u00faklid\u016f, \u00faklidy mohou b\u00fdt p\u0159ipojeny k vnit\u0159n\u00edm ukazatel\u016fm, \u00faklidy obvykle nezp\u016fsobuj\u00ed \u00faniky, kdy\u017e objekty tvo\u0159\u00ed smy\u010dku, a \u00faklidy neoddaluj\u00ed uvoln\u011bn\u00ed objektu nebo objekt\u016f, na kter\u00e9 odkazuje. Nov\u00fd k\u00f3d by m\u011bl preferovat AddCleanup p\u0159ed SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nov\u00fd bal\u00ed\u010dek weak<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> poskytuje slab\u00e9 ukazatele.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Slab\u00e9 ukazatele jsou n\u00edzko\u00farov\u0148ov\u00fdm primitivem, kter\u00e9 je poskytov\u00e1no pro vytv\u00e1\u0159en\u00ed struktur, kter\u00e9 efektivn\u011b vyu\u017e\u00edvaj\u00ed pam\u011b\u0165, jako jsou slab\u00e9 slovn\u00edky pro mapov\u00e1n\u00ed hodnot, kanoniza\u010dn\u00ed slovn\u00edky pro cokoliv, co nen\u00ed pokryto bal\u00ed\u010dkem <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, a r\u016fzn\u00fdmi typy mezipam\u011bt\u00ed. Aby byly tyto p\u0159\u00edpady pou\u017eit\u00ed podporov\u00e1ny, tato verze tak\u00e9 poskytuje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nov\u00fd bal\u00ed\u010dek crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> implementuje ML-KEM-768 a ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM je post-kvantov\u00fd mechanismus v\u00fdm\u011bny kl\u00ed\u010d\u016f, d\u0159\u00edve zn\u00e1m\u00fd jako Kyber a specifikovan\u00fd v <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nov\u00e9 bal\u00ed\u010dky crypto\/hkdf, crypto\/pbkdf2 a crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implementuje funkci v\u00fdstupu kl\u00ed\u010de zalo\u017eenou na HMAC \u201eExtract-and-Expand\u201c HKDF, jak je definov\u00e1no v <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00fd bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implementuje funkci v\u00fdstupu kl\u00ed\u010de zalo\u017eenou na hesle PBKDF2, jak je definov\u00e1no v <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00fd bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implementuje hashovac\u00ed funkci SHA-3 a SHAKE a cSHAKE funkce roz\u0161i\u0159iteln\u00e9ho v\u00fdstupu, jak je definov\u00e1no v <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>V\u0161echny t\u0159i bal\u00ed\u010dky jsou zalo\u017eeny na d\u0159\u00edve existuj\u00edc\u00edch bal\u00ed\u010dc\u00edch golang.org\/x\/crypto\/\u2026<\/p>\n<h3>Soulad s FIPS 140-3<\/h3>\n<p> <noindex><\/p>\n<p>Tato verze zahrnuje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">novou sadu mechanism\u016f pro zaji\u0161t\u011bn\u00ed souladu s FIPS 140-3<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Kryptografick\u00fd modul Go je soubor intern\u00edch bal\u00ed\u010dk\u016f standardn\u00ed knihovny, kter\u00e9 se pr\u016fhledn\u011b pou\u017e\u00edvaj\u00ed k implementaci schv\u00e1len\u00fdch algoritm\u016f FIPS 140-3. Aplikace nevy\u017eaduj\u00ed zm\u011bny k pou\u017eit\u00ed kryptografick\u00e9ho modulu Go pro schv\u00e1len\u00e9 algoritmy.<\/p>\n<p> <noindex><\/p>\n<p>Nov\u00e1 prom\u011bnn\u00e1 prost\u0159ed\u00ed GOFIPS140 m\u016f\u017ee b\u00fdt pou\u017eita k v\u00fdb\u011bru verze kryptografick\u00e9ho modulu Go pro pou\u017eit\u00ed p\u0159i sestaven\u00ed. Nov\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastaven\u00ed GODEBUG<\/a> fips140 m\u016f\u017ee b\u00fdt pou\u017eita k aktivaci re\u017eimu FIPS 140-3 b\u011bhem b\u011bhu.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 zahrnuje kryptografick\u00fd modul Go verze v1.0.0, kter\u00fd je v sou\u010dasn\u00e9 dob\u011b testov\u00e1n akreditovanou laborato\u0159\u00ed CMVP.<\/p>\n<h3>Nov\u00fd experiment\u00e1ln\u00ed bal\u00ed\u010dek testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd experiment\u00e1ln\u00ed bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> poskytuje podporu pro testov\u00e1n\u00ed konkuren\u010dn\u00edho k\u00f3du.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> spou\u0161t\u00ed skupinu gorutin v izolovan\u00e9 \u201ebublin\u011b\u201c. V bublin\u011b funkce bal\u00ed\u010dku <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">\u010das<\/a> pracuj\u00ed na fale\u0161n\u00fdch hodin\u00e1ch.<\/li>\n<li>Funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> \u010dekaj\u00ed, a\u017e se v\u0161echny gorutiny zablokuj\u00ed v aktu\u00e1ln\u00ed bublin\u011b.<\/li>\n<\/ul>\n<p>Podrobnosti lze vid\u011bt v dokumentaci bal\u00ed\u010dku.<\/p>\n<p> <noindex><\/p>\n<p>Bal\u00ed\u010dek synctest je experiment\u00e1ln\u00ed a mus\u00ed b\u00fdt aktivov\u00e1n nastaven\u00edm GOEXPERIMENT=synctest. API bal\u00ed\u010dku se m\u016f\u017ee v budouc\u00edch verz\u00edch zm\u011bnit. V <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> m\u016f\u017eete vid\u011bt v\u00edce podrobnost\u00ed a poskytnout zp\u011btnou vazbu.<\/p>\n<p><\/noindex> <\/p>\n<h3>Drobn\u00e9 zm\u011bny v knihovn\u011b<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implementace (*Writer.AddFS) v archive\/zip a archive\/tar nyn\u00ed zapisuj\u00ed hlavi\u010dku adres\u00e1\u0159e pro pr\u00e1zdn\u00fd adres\u00e1\u0159.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> p\u0159id\u00e1v\u00e1 n\u011bkolik funkc\u00ed, kter\u00e9 pracuj\u00ed s iter\u00e1tory:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> vrac\u00ed iter\u00e1tor po \u0159\u00e1dc\u00edch rozd\u011blen\u00fdch novou lini\u00ed v \u0159ezan\u00e9 bajtov\u00e9 m\u0159\u00ed\u017ece.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> vrac\u00ed iter\u00e1tor pro v\u0161echny podsl\u00edsy bajtov\u00e9ho \u0159ezu, rozd\u011blen\u00e9ho separ\u00e1torem.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> vrac\u00ed iter\u00e1tor pro podsl\u00edsy bajtov\u00e9ho \u0159ezu, rozd\u011blen\u00e9ho po ka\u017ed\u00e9m v\u00fdskytu separ\u00e1toru.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> vrac\u00ed iter\u00e1tor pro podsl\u00edsy bajtov\u00e9ho \u0159ezu kolem sekvenc\u00ed znak\u016f b\u00edl\u00e9 mezery, jak je definov\u00e1no. <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> vrac\u00ed iter\u00e1tor pro podsl\u00edsy bajtov\u00e9ho \u0159ezu kolem sekvenc\u00ed k\u00f3dov\u00fdch bod\u016f Unicode, kter\u00e9 vyhovuj\u00ed predik\u00e1tu.<\/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>Hodnota, kter\u00e1 je vracena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> u\u017e v\u00edce neimplementuje metody NewCTR, NewGCM, NewCBCEncrypter a NewCBCDecrypter. Tyto metody byly nedokumentovan\u00e9 a nebyly dostupn\u00e9 na v\u0161ech architektur\u00e1ch. Nyn\u00ed hodnota <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> mus\u00ed b\u00fdt p\u0159ed\u00e1v\u00e1na p\u0159\u00edmo do p\u0159\u00edslu\u0161n\u00fdch funkc\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. V sou\u010dasnosti crypto\/cipher st\u00e1le kontroluje tyto metody na hodnot\u00e1ch Block, i kdy\u017e u\u017e nejsou podporov\u00e1ny standardn\u00ed knihovnou.<\/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>Nov\u00e1 funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> vrac\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, kter\u00e1 implementuje AES-GCM, generuje n\u00e1hodn\u00e9 jednor\u00e1zov\u00e9 \u010d\u00edslo b\u011bhem Seal a p\u0159id\u00e1v\u00e1 ho na za\u010d\u00e1tek \u0161ifrovan\u00e9ho textu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implementace <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, vr\u00e1cen\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> p\u0159i pou\u017eit\u00ed s <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> nyn\u00ed n\u011bkolikr\u00e1t rychleji na amd64 a 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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> nyn\u00ed jsou ozna\u010deny jako zastaral\u00e9. Re\u017eimy OFB a CFB nejsou autentizovan\u00e9, co\u017e obecn\u011b umo\u017e\u0148uje aktivn\u00edm \u00fatok\u016fm manipulovat a obnovit otev\u0159en\u00fd text. Aplikac\u00edm se doporu\u010duje pou\u017e\u00edvat <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> m\u00edsto toho. Pokud je neautentizovan\u00fd re\u017eim <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> nezbytn\u00fd, lze pou\u017e\u00edt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> m\u00edsto toho.<\/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> nyn\u00ed vytv\u00e1\u0159\u00ed deterministick\u00fd podpis podle <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, pokud je zdroj n\u00e1hody 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>Hodnota, kter\u00e1 je vracena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, nyn\u00ed tak\u00e9 implementuje rozhran\u00ed <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>Funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">\u010c\u00edst<\/a> nyn\u00ed zaru\u010duje absenci chyb. Pokud Read naraz\u00ed na chybu b\u011bhem \u010dten\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, program neodvolateln\u011b ukon\u010d\u00ed. V\u0161imn\u011bte si, \u017ee v\u00fdchoz\u00ed Reader je dokumentov\u00e1no, \u017ee v\u017edy \u00fasp\u011b\u0161n\u011b funguje, tak\u017ee tato zm\u011bna by m\u011bla ovlivnit pouze ty programy, kter\u00e9 p\u0159episuj\u00ed prom\u011bnnou Reader. Jedinou v\u00fdjimkou jsou j\u00e1dra Linuxu p\u0159ed verz\u00ed 3.17, kde v\u00fdchoz\u00ed Reader st\u00e1le otev\u00edr\u00e1 \/dev\/urandom a m\u016f\u017ee selhat.<\/p>\n<p><\/noindex> <\/p>\n<p>Na Linuxu 6.11 a pozd\u011bji Reader nyn\u00ed pou\u017e\u00edv\u00e1 syst\u00e9mov\u00e9 vol\u00e1n\u00ed getrandom p\u0159es vDSO. To je n\u011bkolikr\u00e1t rychlej\u0161\u00ed, obvykle pro mal\u00e9 \u010dten\u00ed.<\/p>\n<p>Na OpenBSD Reader nyn\u00ed pou\u017e\u00edv\u00e1 arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Nov\u00e1 funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> nyn\u00ed m\u016f\u017ee generovat kryptograficky bezpe\u010dn\u00e9 n\u00e1hodn\u00e9 \u0159et\u011bzce textu.<\/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> nyn\u00ed vrac\u00ed chybu, pokud je po\u017eadov\u00e1n kl\u00ed\u010d m\u00e9n\u011b ne\u017e 1024 bit\u016f. V\u0161echny metody Sign, Verify, Encrypt a Decrypt nyn\u00ed vrac\u00ed chybu, pokud jsou pou\u017eity s kl\u00ed\u010dem men\u0161\u00ed ne\u017e 1024 bit\u016f. Takov\u00e9 kl\u00ed\u010de jsou nebezpe\u010dn\u00e9 a nem\u011bly by b\u00fdt pou\u017e\u00edv\u00e1ny. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Nastaven\u00ed GODEBUG<\/a> rsa1024min=0 obnovuje star\u00e9 chov\u00e1n\u00ed, ale v\u00fdvoj\u00e1\u0159i Go doporu\u010duj\u00ed d\u011blat to pouze v p\u0159\u00edpad\u011b pot\u0159eby a pouze v testech, nap\u0159\u00edklad p\u0159id\u00e1n\u00edm \u0159\u00e1dku \/\/go:debug rsa1024min=0 do testovac\u00edho souboru. Nov\u00fd <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">p\u0159\u00edklad<\/a> GenerateKey poskytuje snadno pou\u017eiteln\u00fd standardn\u00ed 2024-bitov\u00fd testovac\u00ed kl\u00ed\u010d.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nyn\u00ed je bezpe\u010dn\u00e9 a efektivn\u011bj\u0161\u00ed volat <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> do <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute je nyn\u00ed rychlej\u0161\u00ed v p\u0159\u00edtomnosti \u010d\u00e1ste\u010dn\u011b vypln\u011bn\u00e9ho <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, nap\u0159\u00edklad p\u0159i extrakci kl\u00ed\u010de z JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Bal\u00ed\u010dek nyn\u00ed odm\u00edt\u00e1 v\u00edce nespr\u00e1vn\u00fdch kl\u00ed\u010d\u016f, i kdy\u017e Validate nen\u00ed vol\u00e1no, a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> nyn\u00ed m\u016f\u017ee vr\u00e1tit nov\u00e9 chyby pro nefunk\u010dn\u00ed zdroje n\u00e1hodnosti. Pole <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> struktury <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> nyn\u00ed jsou pou\u017e\u00edv\u00e1na a ov\u011b\u0159ov\u00e1na i kdy\u017e n\u011bkter\u00e9 hodnoty chyb\u00ed. Byly tak\u00e9 provedeny zm\u011bny v crypto\/x509 ohledn\u011b rozboru a extrakce RSA kl\u00ed\u010d\u016f, jak je pops\u00e1no n\u00ed\u017ee.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> nyn\u00ed podporuj\u00ed SHA-512\/224, SHA-512\/256 a SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> nyn\u00ed pou\u017e\u00edv\u00e1 trochu jinou metodu pro generov\u00e1n\u00ed soukrom\u00e9 exponenci\u00e1ly (Karmichaelova funkce nam\u00edsto Eulerovy funkce). \u0158\u00eddce pou\u017e\u00edvan\u00e9 aplikace, kter\u00e9 znovu vytv\u00e1\u0159ej\u00ed kl\u00ed\u010de pouze z prvo\u010d\u00edsel, mohou vytv\u00e1\u0159et r\u016fzn\u00e9, ale kompatibiln\u00ed v\u00fdsledky.<\/p>\n<p><\/noindex> <\/p>\n<p>Operace s ve\u0159ejn\u00fdmi a soukrom\u00fdmi kl\u00ed\u010di jsou nyn\u00ed a\u017e dvakr\u00e1t rychlej\u0161\u00ed na wasm.<\/p>\n<h3>crypto\/sha*<\/h3>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha1\/\">crypto\/sha1<\/a>: hodnota vr\u00e1cen\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> nyn\u00ed tak\u00e9 implementuje rozhran\u00ed <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>: hodnoty vr\u00e1cen\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> nyn\u00ed tak\u00e9 implementuj\u00ed rozhran\u00ed <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>: hodnoty vr\u00e1cen\u00e9 <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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, nyn\u00ed tak\u00e9 implementuj\u00ed rozhran\u00ed <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>Nov\u00e1 funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> umo\u017e\u0148uje u\u017eivateli vykon\u00e1vat funkci se zapnut\u00fdmi funkcemi specifick\u00fdmi pro architekturu, kter\u00e9 zaru\u010duj\u00ed nem\u011bnnost ur\u010dit\u00fdch instrukc\u00ed vzhledem k \u010dasu hodnoty dat. To m\u016f\u017ee b\u00fdt pou\u017eito k zaji\u0161t\u011bn\u00ed, \u017ee k\u00f3d navr\u017een\u00fd k provozu v konstantn\u00edm \u010dase nebyl optimalizov\u00e1n funkcemi \u00farovn\u011b procesoru takov\u00fdm zp\u016fsobem, \u017ee b\u011b\u017e\u00ed v prom\u011bnliv\u00e9m \u010dase. V sou\u010dasnosti WithDataIndependentTiming pou\u017e\u00edv\u00e1 bit PSTATE.DIT na arm64 a na v\u0161ech ostatn\u00edch architektur\u00e1ch ned\u011bl\u00e1 nic. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Nastaven\u00ed GODEBUG<\/a> dataindependenttiming=1 zap\u00edn\u00e1 re\u017eim DIT pro cel\u00fd program Go.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V\u00fdstup <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> mus\u00ed b\u00fdt zcela p\u0159ekryt nebo v\u016fbec s vstupem. D\u0159\u00edv\u011bj\u0161\u00ed chov\u00e1n\u00ed bylo neur\u010den\u00e9 v opa\u010dn\u00e9m p\u0159\u00edpad\u011b, zat\u00edmco nyn\u00ed XORBytes zpanika\u0159\u00ed.<\/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>Server TLS nyn\u00ed podporuje Encrypted Client Hello (ECH). Tato funkce m\u016f\u017ee b\u00fdt povolena vypln\u011bn\u00edm pole <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00fd post-kvantov\u00fd mechanismus v\u00fdm\u011bny kl\u00ed\u010d\u016f <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> nyn\u00ed je podporov\u00e1n a je povolen ve v\u00fdchoz\u00edm nastaven\u00ed, kdy\u017e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> je nil. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Nastaven\u00ed GODEBUG<\/a> tlsmlkem=0 vrac\u00ed v\u00fdchoz\u00ed hodnotu.<\/p>\n<p><\/noindex> <\/p>\n<p>Podpora experiment\u00e1ln\u00ed v\u00fdm\u011bny kl\u00ed\u010d\u016f X25519Kyber768Draft00 byla odstran\u011bna.<\/p>\n<p> <noindex><\/p>\n<p>Po\u0159ad\u00ed v\u00fdm\u011bny kl\u00ed\u010d\u016f nyn\u00ed zpracov\u00e1v\u00e1 pln\u011b bal\u00ed\u010dek crypto\/tls. Po\u0159ad\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> je nyn\u00ed ignorov\u00e1no a obsah se pou\u017e\u00edv\u00e1 pouze k ur\u010den\u00ed, kter\u00e9 v\u00fdm\u011bny kl\u00ed\u010d\u016f zahrnout, kdy\u017e je pole vypln\u011bno.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00e9 pole <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> vyjmenov\u00e1v\u00e1 seznam identifik\u00e1tor\u016f roz\u0161\u00ed\u0159en\u00ed z\u00edskan\u00fdch v zpr\u00e1v\u011b Client Hello. To m\u016f\u017ee b\u00fdt u\u017eite\u010dn\u00e9 pro fingerprinting klient\u016f 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\">Nastaven\u00ed GODEBUG<\/a> x509sha1 byla odstran\u011bna. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> ji\u017e nepodporuje podpisy zalo\u017een\u00e9 na SHA-1.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> nyn\u00ed implementuje rozhran\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V\u00fdchoz\u00ed pole politik certifik\u00e1tu bylo zm\u011bn\u011bno z <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> na <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. P\u0159i anal\u00fdze certifik\u00e1t\u016f budou ob\u011b pole vypln\u011bna, ale p\u0159i vytv\u00e1\u0159en\u00ed politik certifik\u00e1t\u016f budou br\u00e1ny v \u00favahu z pole Certificate.Policies nam\u00edsto Certificate.PolicyIdentifiers. Tato zm\u011bna m\u016f\u017ee b\u00fdt vr\u00e1cena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastaven\u00edm 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> nyn\u00ed bude generovat s\u00e9riov\u00e9 \u010d\u00edslo pomoc\u00ed metody kompatibiln\u00ed s RFC 5280 p\u0159i p\u0159ed\u00e1v\u00e1n\u00ed \u0161ablony polem <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, m\u00edsto zkratu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> nyn\u00ed podporuje validaci politiky, jak je definov\u00e1no v RFC 5280 a RFC 9618. Nov\u00e9 pole <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> m\u016f\u017ee b\u00fdt nastavena na akceptovatelnou sadu politik <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Pouze \u0159et\u011bzce certifik\u00e1t\u016f s platn\u00fdmi grafy politik budou vr\u00e1ceny z <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> nyn\u00ed vrac\u00ed chybu m\u00edsto extrakce nespr\u00e1vn\u00e9ho RSA kl\u00ed\u010de. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> nevrac\u00ed chybu a jeho chov\u00e1n\u00ed p\u0159i dodan\u00fdch nespr\u00e1vn\u00fdch kl\u00ed\u010d\u00edch z\u016fst\u00e1v\u00e1 neur\u010dit\u00e9.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> nyn\u00ed pou\u017e\u00edvaj\u00ed a validuj\u00ed zak\u00f3dovan\u00e9 hodnoty CRT, tak\u017ee mohou odm\u00edtnout neplatn\u00e9 RSA kl\u00ed\u010de, kter\u00e9 byly d\u0159\u00edve akceptov\u00e1ny. Pou\u017eit\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastaven\u00ed GODEBUG<\/a> x509rsacrt=0 vrac\u00ed k p\u0159epo\u010d\u00edt\u00e1v\u00e1n\u00ed hodnot 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>Bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> p\u0159id\u00e1v\u00e1 podporu pro zpracov\u00e1n\u00ed verz\u00ed symbol\u016f v dynamick\u00fdch souborech ELF (Executable and Linkable Format). Nov\u00e1 metoda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> vrac\u00ed seznam dynamick\u00fdch verz\u00ed definovan\u00fdch v souboru ELF. Nov\u00e1 metoda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> vrac\u00ed seznam dynamick\u00fdch verz\u00ed po\u017eadovan\u00fdch t\u00edmto souborem ELF, kter\u00e9 jsou definov\u00e1ny v jin\u00fdch ELF objektech. Nakonec nov\u00e1 pole <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> ur\u010duj\u00ed verzi symbolu.<\/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>Dva nov\u00e9 rozhran\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> byly zavedeny pro p\u0159id\u00e1n\u00ed textov\u00e9ho nebo bin\u00e1rn\u00edho zobrazen\u00ed objektu do byte slice. Tato rozhran\u00ed poskytuj\u00ed stejnou funk\u010dnost jako <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, ale m\u00edsto alokace nov\u00e9ho slice poka\u017ed\u00e9, p\u0159id\u00e1vaj\u00ed data p\u0159\u00edmo do existuj\u00edc\u00edho slice. Tato rozhran\u00ed nyn\u00ed implementuj\u00ed typy standardn\u00ed knihovny, kter\u00e9 ji\u017e implementuj\u00ed TextMarshaler a\/nebo 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>P\u0159i skl\u00e1d\u00e1n\u00ed bude pole struktury s novou mo\u017enost\u00ed omitzero v tagu pole struktury opu\u0161t\u011bno, pokud m\u00e1 hodnotu nula. Pokud m\u00e1 typ pole metodu IsZero() bool, ta bude pou\u017eita k ur\u010den\u00ed, zda je hodnota nulov\u00e1. Jinak bude hodnota nulov\u00e1, pokud je <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">nula pro sv\u016fj typ<\/a>. Tag pole omitzero je \u010dist\u0161\u00ed a m\u00e9n\u011b n\u00e1chyln\u00fd k chyb\u00e1m ne\u017e omitempty, kdy\u017e je z\u00e1m\u011brem opustit nulov\u00e9 hodnoty. Zvl\u00e1\u0161t\u011b na rozd\u00edl od omitempty omitzero opou\u0161t\u00ed nulov\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> hodnoty, co\u017e je \u010dast\u00fd zdroj probl\u00e9m\u016f.<\/p>\n<p><\/noindex> <\/p>\n<p>Pokud jsou zad\u00e1ny oba omitempty a omitzero, pole bude opu\u0161t\u011bno, pokud je hodnota pr\u00e1zdn\u00e1 nebo nulov\u00e1 (nebo oboj\u00ed sou\u010dasn\u011b).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> nyn\u00ed zahrnuje vestav\u011bn\u00e9 struktury pro poskytov\u00e1n\u00ed podrobn\u011bj\u0161\u00edch zpr\u00e1v o chyb\u00e1ch.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>V\u0161echny struktury dat go\/types, kter\u00e9 odhaluj\u00ed posloupnosti dvojice metod, jako Len() int a At(int) T, nyn\u00ed rovn\u011b\u017e maj\u00ed metody, kter\u00e9 vrac\u00ed iter\u00e1tory, co\u017e umo\u017e\u0148uje zjednodu\u0161it k\u00f3d jako je tento:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>K tomu:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Metody: <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>: hodnota vr\u00e1cen\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">Nov\u00e9<\/a>, nyn\u00ed tak\u00e9 implementuje rozhran\u00ed <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>: hodnoty vr\u00e1cen\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">Nov\u00e9<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, nyn\u00ed tak\u00e9 implementuj\u00ed rozhran\u00ed <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>: hodnota vr\u00e1cen\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">Nov\u00e9<\/a>, nyn\u00ed tak\u00e9 implementuje rozhran\u00ed <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>: hodnoty vr\u00e1cen\u00e9 <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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, nyn\u00ed tak\u00e9 implementuj\u00ed rozhran\u00ed <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>: nov\u00e9 funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> mohou po\u010d\u00edtat hash jak\u00e9koli hodnoty, kter\u00e1 je srovnateln\u00e1. To umo\u017e\u0148uje hashovat cokoliv, co m\u016f\u017ee b\u00fdt pou\u017eito jako kl\u00ed\u010d slovn\u00edku 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>Nov\u00fd <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> je handler, kter\u00fd nikdy nen\u00ed aktivov\u00e1n a v\u017edy zahazuje sv\u016fj v\u00fdstup.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">\u00darove\u0148<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> nyn\u00ed implementuje rozhran\u00ed <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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> nyn\u00ed implementuje rozhran\u00ed <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>: vol\u00e1n\u00ed zastaral\u00e9 vysoce\u00farov\u0148ov\u00e9 funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> ji\u017e nemaj\u00ed \u017e\u00e1dn\u00fd efekt. Pro obnoven\u00ed star\u00e9ho chov\u00e1n\u00ed m\u016f\u017eete pou\u017e\u00edt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastaven\u00ed GODEBUG<\/a> randseednop=0. V\u00edce kontextu v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">v\u00fdroku 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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> nyn\u00ed implementuje rozhran\u00ed <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> nyn\u00ed pou\u017e\u00edv\u00e1 MPTCP jako v\u00fdchoz\u00ed na syst\u00e9mech, kde je to podporov\u00e1no (prozat\u00edm pouze Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> nyn\u00ed implementuje rozhran\u00ed <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>Bylo zm\u011bn\u011bno omezen\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> na obdr\u017een\u00e9 informa\u010dn\u00ed odpov\u011bdi 1xx v reakci na po\u017eadavek. D\u0159\u00edve to zastavilo po\u017eadavek a vr\u00e1tilo chybu po obdr\u017een\u00ed v\u00edce ne\u017e 5 odpov\u011bd\u00ed 1xx. Nyn\u00ed to vrac\u00ed chybu pouze pokud celkov\u00e1 velikost v\u0161ech odpov\u011bd\u00ed 1xx p\u0159ekra\u010duje nastaven\u00ed konfigurace <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Krom\u011b toho, kdy\u017e m\u00e1 po\u017eadavek hook pro sledov\u00e1n\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, nyn\u00ed neexistuje \u017e\u00e1dn\u00e9 omezen\u00ed na celkov\u00fd po\u010det odpov\u011bd\u00ed 1xx. Hook Got1xxResponse m\u016f\u017ee vr\u00e1tit chybu pro zastaven\u00ed po\u017eadavku.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Server<\/a> nyn\u00ed maj\u00ed pole HTTP2, kter\u00e9 umo\u017e\u0148uje konfigurovat nastaven\u00ed protokolu HTTP\/2.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00e1 pole <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> poskytuj\u00ed jednoduch\u00fd zp\u016fsob, jak konfigurovat, jak\u00e9 protokoly HTTP server nebo klient pou\u017e\u00edvaj\u00ed.<\/p>\n<p><\/noindex> <\/p>\n<p>Server a klient mohou b\u00fdt nakonfigurov\u00e1ni tak, aby podporovali neza\u0161ifrovan\u00e1 p\u0159ipojen\u00ed HTTP\/2.<\/p>\n<p> <noindex><\/p>\n<p>Kdy\u017e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> obsahuje UnencrypterHTTP2, server p\u0159ijme p\u0159ipojen\u00ed HTTP\/2 na neza\u0161ifrovan\u00e9 porty. Server m\u016f\u017ee p\u0159ijmout jak HTTP\/1, tak neza\u0161ifrovan\u00fd HTTP\/2 na stejn\u00e9m portu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Kdy\u017e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> obsahuje UnencryptedHTTP2 a neobsahuje HTTP1, transport bude pou\u017e\u00edvat neza\u0161ifrovan\u00fd HTTP\/2 pro adresy <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Pokud je transport nakonfigurov\u00e1n k pou\u017eit\u00ed z\u00e1rove\u0148 HTTP\/1 a nezabezpe\u010den\u00e9ho HTTP\/2, bude pou\u017e\u00edvat HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>Podpora nezabezpe\u010den\u00e9ho HTTP\/2 pou\u017e\u00edv\u00e1 \u201eHTTP\/2 s p\u0159edb\u011b\u017en\u00fdm v\u011bd\u011bn\u00edm\u201c (RFC 9113, odd\u00edl 3.3). Zastaral\u00fd z\u00e1hlav\u00ed \u201eUpgrade: h2c\u201c nen\u00ed podporov\u00e1no.<\/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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> nyn\u00ed implementuj\u00ed rozhran\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> a <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> nyn\u00ed tak\u00e9 implementuje rozhran\u00ed <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>V syst\u00e9mu Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> nyn\u00ed m\u016f\u017ee b\u00fdt pou\u017eit v syst\u00e9mu Windows Nano Server. Implementace byla aktualizov\u00e1na, aby se p\u0159ede\u0161lo vyu\u017e\u00edv\u00e1n\u00ed funkc\u00ed z knihovny NetApi32, kter\u00e1 v Nano Serveru chyb\u00ed.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V syst\u00e9mu 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> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">LookupId<\/a> nyn\u00ed podporuj\u00ed n\u00e1sleduj\u00edc\u00ed vestav\u011bn\u00e9 u\u017eivatelsk\u00e9 servisn\u00ed \u00fa\u010dty:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>NT AUTHORITY\\SYSTEM<\/li>\n<li>NT AUTHORITY\\LOCAL SERVICE<\/li>\n<li>NT AUTHORITY\\NETWORK SERVICE<\/li>\n<\/ul>\n<p> <noindex><\/p>\n<p>V syst\u00e9mu Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> byla v\u00fdrazn\u011b zrychlena, kdy\u017e je aktu\u00e1ln\u00ed u\u017eivatel p\u0159ipojen k pomal\u00e9 dom\u00e9n\u011b, co\u017e je b\u011b\u017en\u00e9 pro mnoho firemn\u00edch u\u017eivatel\u016f. Nov\u00fd v\u00fdkon implementace nyn\u00ed trv\u00e1 milisekundy, ve srovn\u00e1n\u00ed s p\u0159edchoz\u00ed implementac\u00ed, kter\u00e1 mohla trvat n\u011bkolik sekund, dokonce i minut, ne\u017e byla dokon\u010dena.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V syst\u00e9mu Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> nyn\u00ed vrac\u00ed u\u017eivatele vlastn\u00edka procesu, kdy\u017e aktu\u00e1ln\u00ed vl\u00e1kno se vyd\u00e1v\u00e1 za jin\u00e9ho u\u017eivatele. D\u0159\u00edve to vracelo chybu.<\/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> nyn\u00ed implementuje rozhran\u00ed <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>Funkce <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> nyn\u00ed byla prohl\u00e1\u0161ena za zastaralou. V nov\u00e9m k\u00f3du by m\u011blo b\u00fdt up\u0159ednostn\u011bno pou\u017eit\u00ed syst\u00e9mov\u00e9 cesty pro ur\u010den\u00ed bin\u00e1rn\u00edho souboru \u201ego\u201c, a pou\u017e\u00edvat go env GOROOT pro ur\u010den\u00ed 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>Bal\u00ed\u010dek <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> p\u0159id\u00e1v\u00e1 n\u011bkolik funkc\u00ed pro pr\u00e1ci s iter\u00e1tory:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> vrac\u00ed iter\u00e1tor na \u0159\u00e1dky rozd\u011blen\u00e9 novou lini\u00ed ve stringu.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> vrac\u00ed iter\u00e1tor na v\u0161echny pod\u0159et\u011bzce stringu odd\u011blen\u00e9 odd\u011blova\u010dem.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> vrac\u00ed iter\u00e1tor na pod\u0159et\u011bzce stringu odd\u011blen\u00e9 po ka\u017ed\u00e9m v\u00fdskytu odd\u011blova\u010de.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> vrac\u00ed iter\u00e1tor na pod\u0159et\u011bzce stringu kolem sekvenc\u00ed znak\u016f b\u00edl\u00e9 barvy, jak je definov\u00e1no<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> vrac\u00ed iter\u00e1tor na pod\u0159et\u011bzce stringu kolem sekvenc\u00ed k\u00f3dov\u00fdch bod\u016f unicode, kter\u00e9 spl\u0148uj\u00ed predik\u00e1t.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Implementace <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> byla zm\u011bn\u011bna, co\u017e zlep\u0161uje v\u00fdkon, zejm\u00e9na pro zm\u011bny slovn\u00edku. Nap\u0159\u00edklad je m\u00e9n\u011b pravd\u011bpodobn\u00e9, \u017ee dojde ke konfliktu zm\u011bn nesouvisej\u00edc\u00edch sad v rozs\u00e1hl\u00fdch slovn\u00edc\u00edch, a nen\u00ed t\u0159eba \u010dasov\u00e9ho n\u00e1razn\u00edku pro dosa\u017een\u00ed n\u00edzk\u00e9ho konfliktu z\u00e1t\u011b\u017ee slovn\u00edku.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Pokud naraz\u00edte na n\u011bjak\u00e9 probl\u00e9my, nastavte GOEXPERIMENT=nosynchashtriemap b\u011bhem kompilace, abyste se vr\u00e1tili k star\u00e9 implementaci, a pros\u00edm, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">vypl\u0148te formul\u00e1\u0159 pro hl\u00e1\u0161en\u00ed probl\u00e9m\u016f<\/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>Nov\u00e9 metody <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> vrac\u00ed kontext, kter\u00fd je zru\u0161en po dokon\u010den\u00ed testu a p\u0159ed proveden\u00edm \u010dist\u00edc\u00edch funkc\u00ed testu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00e9 metody <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> mohou b\u00fdt pou\u017eity k zm\u011bn\u011b pracovn\u00ed adres\u00e1\u0159e na dobu trv\u00e1n\u00ed testu nebo benchmarku.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>\u0160ablony nyn\u00ed podporuj\u00ed range-over-func a range-over-int.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\/\">\u010das<\/a><\/h4>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">\u010cas<\/a> nyn\u00ed implementuje rozhran\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Porty<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Jak bylo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">ozn\u00e1meno<\/a> v pozn\u00e1mk\u00e1ch k vyd\u00e1n\u00ed Go 1.23, Go 1.24 vy\u017eaduje j\u00e1dro Linux verze 3.2 nebo nov\u011bj\u0161\u00ed.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 je posledn\u00ed verze, kter\u00e1 bude fungovat na macOS 11 Big Sur. Go 1.25 bude vy\u017eadovat macOS 12 Monterey nebo nov\u011bj\u0161\u00ed.<\/p>\n<h3>WebAssembly<\/h3>\n<p>Kompila\u010dn\u00ed direktiva go:wasmexport byla p\u0159id\u00e1na do program\u016f Go pro export funkc\u00ed do hostitele WebAssembly.<\/p>\n<p> <noindex><\/p>\n<p>V Preview 1 WebAssembly System Interface (GOOS=wasip1 GOARCH=wasm) Go 1.24 podporuje kompilaci programu Go jako <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> zad\u00e1n\u00edm p\u0159ep\u00edna\u010de kompilace -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V\u00edce typ\u016f je nyn\u00ed povoleno jako typ argumentu nebo v\u00fdstupu pro funkce go:wasmimport. Zejm\u00e9na jsou povoleny typy bool, string, uintptr a ukazatele na ur\u010dit\u00e9 typy (podrobnosti lze vid\u011bt v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">dokumentaci<\/a>), spolu s 32-bitov\u00fdmi a 64-bitov\u00fdmi typy cel\u00fdch \u010d\u00edsel a s plovouc\u00ed desetinnou \u010d\u00e1rkou a unsafe.Pointer, kter\u00e9 jsou ji\u017e povoleny. Tyto typy jsou tak\u00e9 povoleny jako typy argumentu nebo v\u00fdstupu pro funkce go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>Podporuj\u00edc\u00ed soubory pro WebAssembly byly p\u0159esunuty do lib\/wasm z misc\/wasm.<\/p>\n<p>Po\u010d\u00e1te\u010dn\u00ed velikost pam\u011bti byla zna\u010dn\u011b zmen\u0161ena, zejm\u00e9na pro mal\u00e9 aplikace WebAssembly.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>32-bitov\u00fd port windows\/arm (GOOS=windows GOARCH=arm) byl ozna\u010den jako nefunk\u010dn\u00ed. Podrobnosti v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Zdroj: <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.3 - 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\/cs\/blog\/news\/go-1-24\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\/cs\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}