{"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\/sk\/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 verzia programovacieho jazyka Go, verzia 1.24, vych\u00e1dza po \u0161iestich mesiacoch od <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. V\u00e4\u010d\u0161ina zmien sa t\u00fdka implement\u00e1cie n\u00e1strojov\u00fdch re\u0165azcov, runtime a kni\u017en\u00edc. Ako v\u017edy, vydanie zabezpe\u010duje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">s\u013eub kompatibility<\/a> Go 1. V\u00fdvoj\u00e1ri jazyka o\u010dak\u00e1vaj\u00fa, \u017ee takmer v\u0161etky programy Go bud\u00fa na\u010falej kompilova\u0165 a fungova\u0165 ako predt\u00fdm.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Zmeny v jazyku<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 teraz plne podporuje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">generick\u00e9 aliasy typov<\/a>: alias typu m\u00f4\u017ee by\u0165 parametizovan\u00fd ako deklarovan\u00fd typ. Podrobnosti n\u00e1jdete v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">\u0161pecifik\u00e1cii jazyka<\/a>. Zatia\u013e je mo\u017en\u00e9 t\u00fato funkciu vypn\u00fa\u0165 pomocou nastavenia GOEXPERIMENT=noaliastypeparams; av\u0161ak mo\u017enos\u0165 aliastypeparams bude odstr\u00e1nen\u00e1 v Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>N\u00e1stroje<\/h2>\n<h3>Pr\u00edkaz go<\/h3>\n<p> <noindex><\/p>\n<p>Moduly go teraz m\u00f4\u017eu sledova\u0165 vykon\u00e1vacie z\u00e1vislosti pomocou direkt\u00edvy tool v go.mod. To odstra\u0148uje potrebu predch\u00e1dzaj\u00faceho obch\u00e1dzaj\u00faceho rie\u0161enia prid\u00e1vania n\u00e1strojov ako pr\u00e1zdnych importov do s\u00faboru, ktor\u00fd sa zvy\u010dajne naz\u00fdva \u201etools.go\u201c. Pr\u00edkaz go tool teraz m\u00f4\u017ee sp\u00fa\u0161\u0165a\u0165 tieto n\u00e1stroje mimo n\u00e1strojov dod\u00e1van\u00fdch spolu s Go. Viac inform\u00e1ci\u00ed n\u00e1jdete v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">dokumen\u00e1cie<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Nov\u00fd pr\u00edkaz -tool pre go get vedie k pridaniu direkt\u00edvy n\u00e1stroja do aktu\u00e1lneho modulu pre ur\u010den\u00e9 bal\u00edky, okrem pridania direkt\u00edv po\u017eiadaviek.<\/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> sa vz\u0165ahuje na v\u0161etky n\u00e1stroje v aktu\u00e1lnom module. M\u00f4\u017ee by\u0165 pou\u017eit\u00fd na aktualiz\u00e1ciu v\u0161etk\u00fdch prostredn\u00edctvom go get tool alebo na ich in\u0161tal\u00e1ciu do va\u0161ej adres\u00e1re GOBIN prostredn\u00edctvom go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Vykon\u00e1vacie s\u00fabory vytvoren\u00e9 pomocou go run a nov\u00e9 spr\u00e1vanie pr\u00edkazu go tool s\u00fa teraz cachovan\u00e9 v cache zostavenia Go. To rob\u00ed opakovan\u00e9 sp\u00fa\u0161\u0165ania r\u00fdchlej\u0161\u00edmi v\u010faka zv\u00fd\u0161enej cache. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Pr\u00edkazy go build a go install teraz prij\u00edmaj\u00fa flag -json, ktor\u00fd informuje o v\u00fdstupe a chyb\u00e1ch zostavenia ako \u0161trukt\u00farovan\u00fd JSON v\u00fdstup do \u0161tandardn\u00e9ho v\u00fdstupu. Detaily form\u00e1tu n\u00e1jdete v go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Navy\u0161e, go test -json teraz informuje o v\u00fdstupe a chyb\u00e1ch zostavenia v JSON, zmie\u0161an\u00e9 s JSONom v\u00fdsledku testovania. Tieto je mo\u017en\u00e9 rozl\u00ed\u0161i\u0165 pod\u013ea nov\u00fdch typov akci\u00ed, ale ak sp\u00f4sobuj\u00fa probl\u00e9my v teste integra\u010dn\u00e9ho syst\u00e9mu, m\u00f4\u017eete sa vr\u00e1ti\u0165 k textov\u00e9mu v\u00fdstupu zostavenia cez <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastavenie GODEBUG<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>Nov\u00e1 premenn\u00e1 prostredia GOAUTH poskytuje flexibiln\u00fd sp\u00f4sob autoriz\u00e1cie s\u00fakromn\u00fdch stiahnut\u00ed modulov. Podrobnosti n\u00e1jdete v go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>Pr\u00edkaz go build teraz in\u0161taluje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">verziu hlavn\u00e9ho modulu<\/a> v skompilovanom bin\u00e1rnom s\u00fabore, na z\u00e1klade tagu a\/alebo commitu syst\u00e9mu kontroly verzi\u00ed. Pr\u00edpona +dirty sa prid\u00e1, ak s\u00fa pr\u00edtomn\u00e9 nezakompilovan\u00e9 zmeny. M\u00f4\u017eete pou\u017ei\u0165 prep\u00edna\u010d -buildvcs=false na to, aby ste vynechali inform\u00e1cie o kontrole verzi\u00ed z bin\u00e1rneho s\u00faboru.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastavenie GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> teraz m\u00f4\u017ee by\u0165 pou\u017eit\u00e1 na sledovanie procesu v\u00fdberu toolchainu v pr\u00edkaze go.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo podporuje nov\u00e9 anot\u00e1cie pre funkcie C na zlep\u0161enie v\u00fdkonu za behu. #cgo noescape cFunctionName hovor\u00ed kompil\u00e1toru, \u017ee pam\u00e4\u0165 odovzdan\u00e1 do funkcie C cFunctionName neunik\u00e1. #cgo nocallback cFunctionName hovor\u00ed kompil\u00e1toru, \u017ee funkcia C cFunctionName nevyvol\u00e1va sp\u00e4\u0165 \u017eiadne funkcie Go. Viac inform\u00e1ci\u00ed n\u00e1jdete v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">dokument\u00e1cii cgo<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo v s\u00fa\u010dasnosti odmieta kompilova\u0165 volania funkcie C, ktor\u00e1 m\u00e1 viacero nekompatibiln\u00fdch deklar\u00e1ci\u00ed. Napr\u00edklad, ak je f vyhl\u00e1sen\u00e1 ako void f(int) a void f(double), Cgo ozn\u00e1mi chybu namiesto toho, aby generoval nespr\u00e1vnu sekvenciu volania f(0). Novinkou v tejto verzii je zlep\u0161en\u00e9 rozpozn\u00e1vanie tejto chybovej podmienky, ke\u010f sa nekompatibiln\u00e9 deklar\u00e1cie objavia v r\u00f4znych s\u00faboroch. <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 teraz podporuje disassemblovanie na 64-bitovom LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) a S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>Nov\u00fd analyz\u00e1tor tests hl\u00e1si be\u017en\u00e9 chyby v deklar\u00e1ci\u00e1ch testov, fuzzerov, benchmarkov a pr\u00edkladov v testovac\u00edch bal\u00edkoch, ako s\u00fa nespr\u00e1vne definovan\u00e9 n\u00e1zvy, nespr\u00e1vne podpisy alebo pr\u00edklady, ktor\u00e9 dokumentuj\u00fa neexistuj\u00face identifik\u00e1tory. Niektor\u00e9 z t\u00fdchto ch\u00fdb m\u00f4\u017eu vies\u0165 k ne\u00faspe\u0161n\u00fdm testom.<\/p>\n<p> <noindex><\/p>\n<p>Existuj\u00faci analyz\u00e1tor printf teraz hl\u00e1si diagnostiku volan\u00ed form\u00e1tu fmt.Printf(s), kde s je re\u0165azec nekonstantn\u00e9ho form\u00e1tu, bez \u010fal\u0161\u00edch argumentov. Tak\u00e9to volania s\u00fa takmer v\u017edy chybou, preto\u017ee hodnota s m\u00f4\u017ee obsahova\u0165 znak %; namiesto toho pou\u017eite fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. T\u00e1to kontrola m\u00e1 tendenciu robi\u0165 n\u00e1lezy v existuj\u00facom k\u00f3de, a preto sa uplat\u0148uje iba vtedy, ke\u010f je verzia jazyka (ako je uveden\u00e9 direkt\u00edvou go v s\u00fabore go.mod alebo pozn\u00e1mkami `\/\/go:build) aspo\u0148 Go 1.24, aby sa predi\u0161lo zlyhaniam dlhodobej integr\u00e1cie pri aktualiz\u00e1cii na toolchain Go 1.24.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Existuj\u00faci analyz\u00e1tor buildtag teraz hl\u00e1si diagnostiku, ke\u010f je pr\u00edtomn\u00e1 nespr\u00e1vna <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">obmedzenie zostavenia nov\u0161ej verzie<\/a> Go v direkt\u00edve \/\/go:build. Napr\u00edklad, \/\/go:build go1.23.1 odkazuje na bodov\u00fd release; namiesto toho pou\u017eite \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Existuj\u00faci analyz\u00e1tor copylock teraz hl\u00e1si diagnostiku, ke\u010f premenn\u00e1 deklarovan\u00e1 v trojitom \u201efor\u201c cykle, ako for i := iter(); done(i); i = next(i) { \u2026 }, obsahuje sync.Locker, ako sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> zmenil spr\u00e1vanie tak\u00fdchto cyklov na vytvorenie novej premennej pre ka\u017ed\u00fa iter\u00e1ciu, kop\u00edrovan\u00edm hodn\u00f4t z predch\u00e1dzaj\u00facej iter\u00e1cie; toto kop\u00edrovanie nie je bezpe\u010dn\u00e9 pre 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>Intern\u00fd bin\u00e1rny s\u00fabor cmd\/go a mechanismus cacheovania testov m\u00f4\u017eu teraz by\u0165 realizovan\u00e9 podraden\u00fdmi procesmi, ktor\u00e9 implementuj\u00fa protokol JSON medzi n\u00e1strojom cmd\/go a podraden\u00fdm procesom, naz\u00fdvan\u00fdm premennou prostredia GOCACHEPROG. Predt\u00fdm to bolo za GOEXPERIMENT. Detaily protokolu si m\u00f4\u017eete pozrie\u0165 v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">dokumen\u00e1cie<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>\u010cas vykon\u00e1vania<\/h2>\n<p> <noindex><\/p>\n<p>Nieko\u013eko vylep\u0161en\u00ed v\u00fdkonu v runtime zn\u00ed\u017eilo re\u017eijn\u00e9 n\u00e1klady na CPU v priemere o 2-3% medzi s\u00faborom reprezentat\u00edvnych benchmarkov. V\u00fdsledky sa m\u00f4\u017eu l\u00ed\u0161i\u0165 v z\u00e1vislosti od aplik\u00e1cie. Tieto vylep\u0161enia zah\u0155\u0148aj\u00fa nov\u00fa vstavan\u00fa implement\u00e1ciu mapy na z\u00e1klade <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">\u0160v\u00e9dskych Tabuliek<\/a>, efekt\u00edvnej\u0161ie pride\u013eovanie pam\u00e4te mal\u00fdch objektov a nov\u00fa intern\u00fa runtime implement\u00e1ciu mutexov.<\/p>\n<p><\/noindex> <\/p>\n<p>Nov\u00e1 vstavan\u00e1 implement\u00e1cia mapy a nov\u00e1 intern\u00e1 runtime mutex m\u00f4\u017eu by\u0165 vypnut\u00e9 pomocou nastaven\u00ed GOEXPERIMENT=noswissmap a GOEXPERIMENT=nospinbitmutex po\u010das zostavenia.<\/p>\n<h2>Kompil\u00e1tor<\/h2>\n<p>Kompil\u00e1tor u\u017e zakazoval definova\u0165 nov\u00e9 met\u00f3dy s typmi pr\u00edjemcu, ktor\u00e9 boli generovan\u00e9 cgo, ale bolo mo\u017en\u00e9 ob\u00eds\u0165 toto obmedzenie cez alias typu. Go 1.24 teraz v\u017edy hl\u00e1si chybu, ak pr\u00edjemca ozna\u010duje generovan\u00fd cgo typ, priamo alebo nepriamo (cez alias typu).<\/p>\n<h2>Linker<\/h2>\n<p>Linker teraz generuje identifik\u00e1tor zostavenia GNU (z\u00e1znam ELF NT_GNU_BUILD_ID) na ELF platform\u00e1ch a UUID (n\u00e1kladov\u00e1 pr\u00edkaz Mach-O LC_UUID) na macOS ako predvolen\u00e9. Identifik\u00e1tor zostavenia alebo UUID sa odvodzuje z identifik\u00e1tora zostavenia Go. Toto m\u00f4\u017ee by\u0165 vypnut\u00e9 flagom linkeru -B none, alebo predefinovan\u00e9 flagom linkeru -B 0xNNNN s zadanou pou\u017e\u00edvate\u013eskou hexadecim\u00e1lnou hodnotou.<\/p>\n<h2>Prechod<\/h2>\n<p> <noindex><\/p>\n<p>Ako bolo uveden\u00e9 v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">pozn\u00e1mkach k vydaniu Go 1.22<\/a>, Go 1.24 teraz vy\u017eaduje Go 1.22.6 alebo nov\u0161iu verziu na spustenie. V\u00fdvoj\u00e1ri o\u010dak\u00e1vaj\u00fa, \u017ee Go 1.26 bude vy\u017eadova\u0165 na spustenie bodov\u00fa verziu Go 1.24 alebo nov\u0161iu.<\/p>\n<p><\/noindex> <\/p>\n<h2>\u0160tandardn\u00e1 kni\u017enica<\/h2>\n<h3>Obmedzen\u00fd pr\u00edstup k s\u00faborov\u00e9mu syst\u00e9mu pod\u013ea adres\u00e1ra<\/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 vykon\u00e1va\u0165 oper\u00e1cie so s\u00faborov\u00fdm syst\u00e9mom v r\u00e1mci konkr\u00e9tneho adres\u00e1ra.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> otvor\u00ed adres\u00e1r a vr\u00e1ti <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Met\u00f3dy na <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> pracuj\u00fa v tomto adres\u00e1ri a nedovoluj\u00fa, aby cesty odkazovali na umiestnenia za hranicami adres\u00e1ra, vr\u00e1tane t\u00fdch, ktor\u00e9 nasleduj\u00fa za symbolick\u00fdmi odkazmi za adres\u00e1r. Met\u00f3dy na os.Root odr\u00e1\u017eaj\u00fa v\u00e4\u010d\u0161inu oper\u00e1ci\u00ed s\u00faborov\u00e9ho syst\u00e9mu dostupn\u00fdch v bal\u00edku os, vr\u00e1tane napr\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 funkcia benchmarku<\/h3>\n<p> <noindex><\/p>\n<p>Benchmarky teraz m\u00f4\u017eu vyu\u017e\u00edva\u0165 r\u00fdchlej\u0161iu a menej chybov\u00fa met\u00f3du <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> na iter\u00e1ciu benchmarku, ako for b.Loop() { \u2026 } namiesto typick\u00fdch cyklick\u00fdch \u0161trukt\u00far s b.N, ako for range b.N. To pon\u00faka dve v\u00fdznamn\u00e9 v\u00fdhody:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funkcia benchmarku sa vykon\u00e1va presne raz na ka\u017ed\u00fd -count, tak\u017ee n\u00e1kladn\u00e9 kroky nastavenia a \u010distenia sa vykonaj\u00fa iba raz.<\/li>\n<li>Parametre volania funkcie a v\u00fdsledky zost\u00e1vaj\u00fa, \u010do br\u00e1ni kompil\u00e1toru v \u00faplnej optimaliz\u00e1cii tela cyklu.<\/li>\n<\/ul>\n<h3>Vylep\u0161en\u00e9 kone\u010dn\u00e1ky<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00e1 funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> je mechanizmus ukon\u010denia, ktor\u00fd je flexibilnej\u0161\u00ed, efekt\u00edvnej\u0161\u00ed a menej n\u00e1chyln\u00fd na chyby ne\u017e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup pripoj\u00ed funkciu \u010distenia k objektu, ktor\u00e1 sa spust\u00ed, akon\u00e1hle sa objekt stane nedostupn\u00fdm. Av\u0161ak, na rozdiel od SetFinalizer, m\u00f4\u017ee by\u0165 k jedn\u00e9mu objektu pripojen\u00fdch nieko\u013eko \u010disten\u00ed, \u010distenia m\u00f4\u017eu by\u0165 pripojen\u00e9 k vn\u00fatorn\u00fdm ukazovate\u013eom, \u010distenia obvykle nesp\u00f4sobuj\u00fa \u00faniky, ke\u010f objekty tvoria cyklus, a \u010distenia neodlo\u017eia uvo\u013enenie objektu alebo objektov, na ktor\u00e9 odkazuje. Nov\u00fd k\u00f3d by mal prednostne pou\u017e\u00edva\u0165 AddCleanup pred SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nov\u00fd bal\u00edk weak<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd bal\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> poskytuje slab\u00e9 ukazovatele.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Slab\u00e9 ukazovatele s\u00fa n\u00edzko\u00farov\u0148ov\u00fd primit\u00edv, ktor\u00fd je poskytovan\u00fd na vytv\u00e1ranie \u0161trukt\u00far, ktor\u00e9 efekt\u00edvne vyu\u017e\u00edvaj\u00fa pam\u00e4\u0165, ako s\u00fa slab\u00e9 slovn\u00edky na mapovanie hodn\u00f4t, kanoniza\u010dn\u00e9 slovn\u00edky pre \u010doko\u013evek, \u010do nie je pokryt\u00e9 bal\u00edkom <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, a r\u00f4znych typov cache. Na podporu t\u00fdchto pou\u017e\u00edvate\u013esk\u00fdch pr\u00edpadov, toto vydanie taktie\u017e 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\u00edk crypto\/mlkem<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd bal\u00edk <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 postkvantov\u00fd mechanizmus v\u00fdmeny k\u013e\u00fa\u010dov, zn\u00e1my predt\u00fdm ako Kyber a \u0161pecifikovan\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\u00edky crypto\/hkdf, crypto\/pbkdf2 a crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd bal\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implementuje HMAC zalo\u017een\u00fa funkciu v\u00fdstupu k\u013e\u00fa\u010da \u201cExtract-and-Expand\u201d HKDF, ako je definovan\u00e9 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\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implementuje password-based funkciu v\u00fdstupu k\u013e\u00fa\u010da PBKDF2, ako je definovan\u00e9 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\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implementuje hashovaciu funkciu SHA-3 a SHAKE a cSHAKE funkcie roz\u0161\u00edren\u00e9ho v\u00fdstupu, ako je definovan\u00e9 v <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>V\u0161etky tri bal\u00edky s\u00fa zalo\u017een\u00e9 na predch\u00e1dzaj\u00facich bal\u00edkoch golang.org\/x\/crypto\/\u2026<\/p>\n<h3>Kompliance FIPS 140-3<\/h3>\n<p> <noindex><\/p>\n<p>Toto vydanie obsahuje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">nov\u00fa sadu mechanizmov na zabezpe\u010denie kompliance FIPS 140-3<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Kryptografick\u00fd modul Go je s\u00fabor intern\u00fdch bal\u00edkov \u0161tandardnej kni\u017enice, ktor\u00e9 s\u00fa prieh\u013eadne pou\u017e\u00edvan\u00e9 na implement\u00e1ciu schv\u00e1len\u00fdch algoritmov FIPS 140-3. Aplik\u00e1cie nevy\u017eaduj\u00fa zmeny na pou\u017e\u00edvanie kryptografick\u00e9ho modulu Go pre schv\u00e1len\u00e9 algoritmy.<\/p>\n<p> <noindex><\/p>\n<p>Nov\u00e1 premenn\u00e1 prostredia GOFIPS140 m\u00f4\u017ee by\u0165 pou\u017eit\u00e1 na v\u00fdber verzie kryptografick\u00e9ho modulu Go pou\u017e\u00edvan\u00e9ho v zostaven\u00ed. Nov\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastavenie GODEBUG<\/a> fips140 m\u00f4\u017ee by\u0165 pou\u017eit\u00e1 na aktiv\u00e1ciu re\u017eimu FIPS 140-3 po\u010das vykon\u00e1vania.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 zah\u0155\u0148a kryptografick\u00fd modul Go verzie v1.0.0, ktor\u00fd je v s\u00fa\u010dasnosti testovan\u00fd s akreditovanou laborat\u00f3riou CMVP.<\/p>\n<h3>Nov\u00fd experiment\u00e1lny bal\u00edk testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Nov\u00fd experiment\u00e1lny bal\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> poskytuje podporu testovania konkuren\u010dn\u00e9ho k\u00f3du.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> sp\u00fa\u0161\u0165a skupinu gor\u00fatin v izolovanej \u201ebuble\u201c. V bubline funkcie bal\u00edka <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">time<\/a> operuj\u00fa na falo\u0161n\u00fdch hodin\u00e1ch.<\/li>\n<li>Funkcie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> \u010dak\u00e1, k\u00fdm sa v\u0161etky gorutiny zablokuj\u00fa v aktu\u00e1lnej bubline.<\/li>\n<\/ul>\n<p>Podrobnosti n\u00e1jdete v dokument\u00e1cii bal\u00edka.<\/p>\n<p> <noindex><\/p>\n<p>Bal\u00edk synctest je experiment\u00e1lny a m\u00e1 by\u0165 aktivovan\u00fd nastaven\u00edm GOEXPERIMENT=synctest. API bal\u00edka sa m\u00f4\u017ee zmeni\u0165 v bud\u00facich vydaniach. V <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> m\u00f4\u017eete n\u00e1js\u0165 viac podrobnost\u00ed a poskytn\u00fa\u0165 sp\u00e4tn\u00fa v\u00e4zbu.<\/p>\n<p><\/noindex> <\/p>\n<h3>Men\u0161ie zmeny v kni\u017enici<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implement\u00e1cie (*Writer.AddFS) v archive\/zip a archive\/tar teraz zapisuj\u00fa hlavi\u010dku adres\u00e1ra pre pr\u00e1zdny adres\u00e1r.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Bal\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> prid\u00e1va nieko\u013eko funkci\u00ed, ktor\u00e9 pracuj\u00fa s iter\u00e1tormi:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> vracia iter\u00e1tor cez riadky oddelen\u00e9 novou \u010diarou v bajtovom slice.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> vracia iter\u00e1tor pre v\u0161etky pods\u00fabory zo slice bajtov, rozdelen\u00e9ho odde\u013eova\u010dom.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> vracia iter\u00e1tor pre pods\u00fabory zo slice bajtov, rozdelen\u00e9ho po ka\u017edom v\u00fdskyte odde\u013eova\u010da.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> vracia iter\u00e1tor pre pods\u00fabory zo slice bajtov okolo sekvenci\u00ed bielych znakov, ako je definovan\u00e9 <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> vracia iter\u00e1tor pre pods\u00fabory zo slice bajtov okolo sekvenci\u00ed k\u00f3dov\u00fdch bodov unicode, ktor\u00e9 vyhovuj\u00fa 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, ktor\u00e1 sa vracia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> u\u017e viac neimplementuje met\u00f3dy NewCTR, NewGCM, NewCBCEncrypter a NewCBCDecrypter. Tieto met\u00f3dy boli nedokumentovan\u00e9 a neboli dostupn\u00e9 na v\u0161etk\u00fdch architekt\u00farach. Teraz hodnota <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> mus\u00ed by\u0165 priamo odovzdan\u00e1 do zodpovedaj\u00facich funkci\u00ed <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. V s\u00fa\u010dasnosti crypto\/cipher st\u00e1le kontroluje tieto met\u00f3dy na hodnot\u00e1ch Block, aj ke\u010f u\u017e nie s\u00fa podporovan\u00e9 \u0161tandardnou kni\u017enicou.<\/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 funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> vracia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, ktor\u00fd implementuje AES-GCM, generuj\u00fac n\u00e1hodn\u00fd jednorazov\u00fd k\u00f3d po\u010das Seal a prid\u00e1va ho na za\u010diatok za\u0161ifrovan\u00e9ho textu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implement\u00e1cia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, vracan\u00fd <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> pri pou\u017eit\u00ed s <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> teraz je nieko\u013ekokr\u00e1t r\u00fdchlej\u0161\u00ed 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> s\u00fa teraz ozna\u010den\u00e9 ako zastaran\u00e9. Re\u017eimy OFB a CFB nie s\u00fa autentifikovan\u00e9, \u010do vo v\u0161eobecnosti umo\u017e\u0148uje akt\u00edvnym \u00fatokom manipulova\u0165 s otvoren\u00fdm textom a obnovi\u0165 ho. Aplik\u00e1ci\u00e1m sa odpor\u00fa\u010da pou\u017e\u00edva\u0165 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> namiesto toho. Ak je neautentifikovan\u00fd re\u017eim <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> nevyhnutn\u00fd, je mo\u017en\u00e9 pou\u017ei\u0165 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> namiesto.<\/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> teraz vytv\u00e1ra deterministick\u00fd podpis v s\u00falade s <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, ak 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, ktor\u00e1 sa vracia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, teraz tie\u017e implementuje rozhranie <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>Funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">\u010c\u00edta\u0165<\/a> teraz zaru\u010duje nepr\u00edtomnos\u0165 zlyhan\u00ed. Ak Read naraz\u00ed na chybu po\u010das \u010d\u00edtania <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, program nevratne skon\u010d\u00ed. V\u0161imnite si, \u017ee predvolen\u00fd Reader je zdokumentovan\u00fd tak, \u017ee v\u017edy funguje \u00faspe\u0161ne, tak\u017ee t\u00e1to zmena by mala zasiahnu\u0165 iba tie programy, ktor\u00e9 predefinuj\u00fa premenn\u00fa Reader. Jedinou v\u00fdnimkou s\u00fa jadr\u00e1 Linuxu pred verziou 3.17, kde predvolen\u00fd Reader st\u00e1le otv\u00e1ra \/dev\/urandom a m\u00f4\u017ee zlyha\u0165.<\/p>\n<p><\/noindex> <\/p>\n<p>Na Linuxe 6.11 a nesk\u00f4r Reader teraz pou\u017e\u00edva syst\u00e9mov\u00fd volanie getrandom cez vDSO. Je to nieko\u013ekokr\u00e1t r\u00fdchlej\u0161ie, zvy\u010dajne pre mal\u00e9 \u010d\u00edtania.<\/p>\n<p>Na OpenBSD Reader teraz pou\u017e\u00edva arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Nov\u00e1 funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> teraz m\u00f4\u017ee generova\u0165 kryptograficky bezpe\u010dn\u00e9 n\u00e1hodn\u00e9 textov\u00e9 re\u0165azce.<\/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> teraz vracia chybu, ak je po\u017eadovan\u00fd k\u013e\u00fa\u010d dlh\u0161\u00ed ako 1024 bitov. V\u0161etky met\u00f3dy Sign, Verify, Encrypt a Decrypt teraz vracaj\u00fa chybu, ak sa pou\u017e\u00edvaj\u00fa s k\u013e\u00fa\u010dom men\u0161\u00edm ako 1024 bitov. Tak\u00e9to k\u013e\u00fa\u010de nie s\u00fa bezpe\u010dn\u00e9 a nemali by sa pou\u017e\u00edva\u0165. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Nastavenie GODEBUG<\/a> rsa1024min=0 obnovuje star\u00e9 spr\u00e1vanie, ale v\u00fdvoj\u00e1ri Go odpor\u00fa\u010daj\u00fa robi\u0165 to len v pr\u00edpade potreby a len v testoch, napr\u00edklad pridan\u00edm riadku \/\/go:debug rsa1024min=0 do testovacieho s\u00faboru. Nov\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">pr\u00edklad<\/a> GenerateKey poskytuje jednoduch\u00fd na pou\u017eitie \u0161tandardn\u00fd 2024-bitov\u00fd testovac\u00ed k\u013e\u00fa\u010d.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Teraz je bezpe\u010dne a efekt\u00edvnej\u0161ie vola\u0165 <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 teraz r\u00fdchlej\u0161ie v pr\u00edtomnosti \u010diasto\u010dne vyplnen\u00fdch <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, napr\u00edklad pri z\u00edskavan\u00ed k\u013e\u00fa\u010da z JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Bal\u00edk teraz odmieta viac nespr\u00e1vnych k\u013e\u00fa\u010dov, aj ke\u010f Validate nie je volan\u00e1, a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> teraz m\u00f4\u017ee vr\u00e1ti\u0165 nov\u00e9 chyby pre ne\u00fapln\u00e9 zdroje n\u00e1hodnosti. Polia <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> teraz sa pou\u017e\u00edvaj\u00fa a overuj\u00fa aj ke\u010f niektor\u00e9 hodnoty ch\u00fdbaj\u00fa. Taktie\u017e boli vykonan\u00e9 zmeny v crypto\/x509 pre anal\u00fdzu a z\u00edskavanie RSA k\u013e\u00fa\u010dov, pop\u00edsan\u00e9 ni\u017e\u0161ie.<\/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> teraz podporuj\u00fa 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> teraz pou\u017e\u00edva trochu in\u00fd sp\u00f4sob generovania priv\u00e1tneho exponentu (Karmichelova funkcia namiesto Eulerovej). Rar\u00e9 aplik\u00e1cie, ktor\u00e9 vonkaj\u0161ie znovu vytv\u00e1raj\u00fa k\u013e\u00fa\u010de iba z prvo\u010d\u00edsel, m\u00f4\u017eu vytvori\u0165 r\u00f4zne, ale kompatibiln\u00e9 v\u00fdsledky.<\/p>\n<p><\/noindex> <\/p>\n<p>Oper\u00e1cie s verejn\u00fdmi a s\u00fakromn\u00fdmi k\u013e\u00fa\u010dmi s\u00fa teraz a\u017e dvakr\u00e1t r\u00fdchlej\u0161ie 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\u00e1ten\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> teraz tie\u017e implementuje rozhranie <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\u00e1ten\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> teraz tie\u017e implementuje rozhranie <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\u00e1ten\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>, teraz tie\u017e implementuje rozhranie <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 funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> umo\u017e\u0148uje u\u017e\u00edvate\u013eovi vykon\u00e1va\u0165 funkciu so zapnut\u00fdmi \u0161pecifick\u00fdmi pre architekt\u00faru, ktor\u00e1 zaru\u010duje nemennos\u0165 ur\u010dit\u00fdch in\u0161trukci\u00ed vzh\u013eadom na \u010dasov\u00fa hodnotu d\u00e1t. M\u00f4\u017ee to by\u0165 pou\u017eit\u00e9 na overenie, \u017ee k\u00f3d vytvoren\u00fd na prev\u00e1dzku v kon\u0161tantnom \u010dase nebol optimalizovan\u00fd procesorov\u00fdmi funkciami tak, \u017ee funguje v premennom \u010dase. V s\u00fa\u010dasnosti WithDataIndependentTiming vyu\u017e\u00edva bit PSTATE.DIT na arm64 a na ostatn\u00fdch architekt\u00farach nevykon\u00e1va \u017eiadne oper\u00e1cie. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Nastavenie GODEBUG<\/a> dataindependenttiming=1 zap\u00edna re\u017eim DIT pre cel\u00fd program Go.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Z\u00e1ver <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> mus\u00ed sa \u00faplne prekry\u0165 alebo v\u00f4bec s vstupom. Predt\u00fdm spr\u00e1vanie bolo neur\u010dit\u00e9 v opa\u010dnom pr\u00edpade, zatia\u013e \u010do teraz XORBytes sp\u00f4sob\u00ed paniku.<\/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 teraz podporuje Encrypted Client Hello (ECH). T\u00fato funkciu je mo\u017en\u00e9 zapn\u00fa\u0165 vyplnen\u00edm po\u013ea <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 mechanizmus v\u00fdmeny k\u013e\u00fa\u010dov <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> je teraz podporovan\u00fd a zapnut\u00fd predvolene, ke\u010f <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\">Nastavenie GODEBUG<\/a> tlsmlkem=0 vr\u00e1ti predvolen\u00e9 nastavenie.<\/p>\n<p><\/noindex> <\/p>\n<p>Podpora experiment\u00e1lnej v\u00fdmeny k\u013e\u00fa\u010dov X25519Kyber768Draft00 bola odstr\u00e1nen\u00e1.<\/p>\n<p> <noindex><\/p>\n<p>Poradie v\u00fdmeny k\u013e\u00fa\u010dov je teraz spracovan\u00e9 plne bal\u00edkom crypto\/tls. Poradie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> je teraz ignorovan\u00e9 a obsah sa pou\u017e\u00edva len na ur\u010denie, ktor\u00e9 v\u00fdmeny k\u013e\u00fa\u010dov zahrn\u00fa\u0165, ke\u010f je pole vyplnen\u00e9.<\/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> vymenov\u00e1va zoznam identifik\u00e1torov roz\u0161\u00edren\u00ed prijat\u00fdch v spr\u00e1ve Client Hello. To m\u00f4\u017ee by\u0165 u\u017eito\u010dn\u00e9 na odtla\u010dky klientov 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\">Nastavenie GODEBUG<\/a> x509sha1 bola odstr\u00e1nen\u00e1. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> u\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> teraz implementuje rozhrania <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>Predvolen\u00e9 pole polit\u00edk certifik\u00e1tu bolo zmenen\u00e9 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>. Pri rozpr\u00e1van\u00ed certifik\u00e1tov bud\u00fa oba polia vyplnen\u00e9, ale pri vytv\u00e1ran\u00ed polit\u00edk certifik\u00e1tov bud\u00fa bran\u00e9 z po\u013ea Certificate.Policies namiesto Certificate.PolicyIdentifiers. T\u00e1to zmena m\u00f4\u017ee by\u0165 vr\u00e1ten\u00e1 <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> teraz bude generova\u0165 s\u00e9riov\u00e9 \u010d\u00edslo pou\u017eit\u00edm met\u00f3dy kompatibilnej s RFC 5280 pri prenosu \u0161abl\u00f3ny po\u013eom <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, namiesto zlyhania.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> teraz podporuje overovanie polit\u00edk, ako je definovan\u00e9 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\u00f4\u017ee by\u0165 nastaven\u00e9 na akceptovate\u013en\u00fd s\u00fabor polit\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Iba re\u0165azce certifik\u00e1tov s platn\u00fdmi grafmi polit\u00edk bud\u00fa vr\u00e1ten\u00e9 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> teraz vr\u00e1ti chybu namiesto extrakcie nespr\u00e1vneho RSA k\u013e\u00fa\u010da. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> nevracia chybu a jeho spr\u00e1vanie pri poskytnut\u00fdch nespr\u00e1vnych k\u013e\u00fa\u010doch na\u010falej ost\u00e1va 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> teraz pou\u017e\u00edvaj\u00fa a validuj\u00fa zak\u00f3dovan\u00e9 hodnoty CRT, tak\u017ee m\u00f4\u017eu odmieta\u0165 nespr\u00e1vne RSA k\u013e\u00fa\u010de, ktor\u00e9 boli predt\u00fdm akceptovan\u00e9. Pou\u017e\u00edvanie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastavenia GODEBUG<\/a> x509rsacrt=0 sa vracia k prepo\u010d\u00edtaniu hodn\u00f4t 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\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> prid\u00e1va podporu spracovania verzi\u00ed symbolov v dynamick\u00fdch s\u00faboroch ELF (Executable and Linkable Format). Nov\u00e1 met\u00f3da <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> vracia zoznam dynamick\u00fdch verzi\u00ed definovan\u00fdch v s\u00fabore ELF. Nov\u00e1 met\u00f3da <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> vracia zoznam dynamick\u00fdch verzi\u00ed, ktor\u00e9 vy\u017eaduje tento s\u00fabor ELF, a ktor\u00e9 s\u00fa definovan\u00e9 v in\u00fdch objektoch ELF. Nakoniec, nov\u00e9 polia <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\u00fa verziu 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>Dve nov\u00e9 rozhrania <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> boli zaveden\u00e9 na pridanie textovej alebo bin\u00e1rnej reprezent\u00e1cie objektu do byte slice. Tieto rozhrania poskytuj\u00fa rovnak\u00fa funk\u010dnos\u0165 ako <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 namiesto alok\u00e1cie nov\u00e9ho slice ka\u017ed\u00fd raz, prid\u00e1vaj\u00fa d\u00e1ta priamo do existuj\u00faceho slice. Tieto rozhrania s\u00fa teraz implementovan\u00e9 typmi \u0161tandardnej kni\u017enice, ktor\u00e9 u\u017e implementuj\u00fa TextMarshaler a\/alebo 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>Pri zostavovan\u00ed po\u013ea \u0161trukt\u00fary s novou mo\u017enos\u0165ou omitzero v tagu po\u013ea \u0161trukt\u00fary bude vynechan\u00e9, ak m\u00e1 hodnotu nula. Ak m\u00e1 typ po\u013ea met\u00f3du IsZero() bool, bude pou\u017eit\u00e1 na ur\u010denie, \u010di je hodnota nulov\u00e1. Inak bude hodnota nulov\u00e1, ak je to <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">nulov\u00e1 hodnota pre jeho typ<\/a>. Tag po\u013ea omitzero je \u010distej\u0161\u00ed a menej n\u00e1chyln\u00fd na chyby ako omitempty, ke\u010f je \u00famyslom vynecha\u0165 nulov\u00e9 hodnoty. Konkr\u00e9tne, na rozdiel od omitempty, omitzero vynech\u00e1va nulov\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> hodnoty, \u010do je \u010dast\u00fd zdroj probl\u00e9mov.<\/p>\n<p><\/noindex> <\/p>\n<p>Ak s\u00fa uveden\u00e9 oba omitempty a omitzero, pole bude vynechan\u00e9, ak je hodnota pr\u00e1zdna alebo nulov\u00e1 (alebo oboje naraz).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> teraz zah\u0155\u0148a zabudovan\u00e9 \u0161trukt\u00fary na poskytovanie podrobnej\u0161\u00edch chybov\u00fdch hl\u00e1sen\u00ed.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>V\u0161etky d\u00e1tov\u00e9 \u0161trukt\u00fary go\/types, ktor\u00e9 odha\u013euj\u00fa sekvencie p\u00e1rov met\u00f3d ako Len() int a At(int) T, teraz maj\u00fa aj met\u00f3dy, ktor\u00e9 vracaj\u00fa iter\u00e1tory, \u010do zjednodu\u0161uje k\u00f3d ako 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>Na tomto:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Met\u00f3dy: <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\u00e1ten\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">Nov\u00fd<\/a>, teraz tie\u017e implementuje rozhranie <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\u00e1ten\u00e9 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">Nov\u00fd<\/a> a <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, teraz tie\u017e implementuje rozhranie <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\u00e1ten\u00e1 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">Nov\u00fd<\/a>, teraz tie\u017e implementuje rozhranie <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\u00e1ten\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>, teraz tie\u017e implementuje rozhranie <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 funkcie <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> m\u00f4\u017eu po\u010d\u00edta\u0165 hash ak\u00e9hoko\u013evek hodnoty, ktor\u00e1 m\u00f4\u017ee by\u0165 porovn\u00e1van\u00e1. To umo\u017e\u0148uje hashovanie \u010dohoko\u013evek, \u010do m\u00f4\u017ee by\u0165 pou\u017eit\u00e9 ako k\u013e\u00fa\u010d slovn\u00edka 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, ktor\u00fd nikdy nie je zapnut\u00fd a v\u017edy odhaduje svoj 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> teraz implementuj\u00fa rozhranie <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> teraz implementuj\u00fa rozhranie <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>: volania zastaralej vrchnej \u00farovne funkcie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> u\u017e nemaj\u00fa \u017eiadny \u00fa\u010dinok. Na obnovenie star\u00e9ho spr\u00e1vania je mo\u017en\u00e9 pou\u017ei\u0165 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastavenie GODEBUG<\/a> randseednop=0. Viac kontextu v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">pozn\u00e1mke 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> teraz implementuj\u00fa rozhranie <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> teraz pou\u017e\u00edva MPTCP ako predvolen\u00e9 na syst\u00e9moch, kde je to podporovan\u00e9 (zatia\u013e len Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> teraz implementuje rozhranie <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>Zmenilo sa obmedzenie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> na prijat\u00e9 informa\u010dn\u00e9 odpovede 1xx na po\u017eiadavku. Predt\u00fdm to zastavilo po\u017eiadavku a vr\u00e1tilo chybu po prijat\u00ed viac ako 5 odpoved\u00ed 1xx. Teraz to vr\u00e1ti chybu len ak celkov\u00e1 ve\u013ekos\u0165 v\u0161etk\u00fdch odpoved\u00ed 1xx presahuje nastavenie konfigur\u00e1cie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Okrem toho, ke\u010f po\u017eiadavka m\u00e1 h\u00e1\u010dik na sledovanie <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, teraz nie je obmedzenie na celkov\u00fd po\u010det odpoved\u00ed 1xx. H\u00e1k Got1xxResponse m\u00f4\u017ee vr\u00e1ti\u0165 chybu na zastavenie po\u017eiadavky.<\/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> teraz maj\u00fa pole HTTP2, ktor\u00e9 umo\u017e\u0148uje konfigurovanie nastaven\u00ed protokolu HTTP\/2.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00e9 polia <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\u00fa jednoduch\u00fd sp\u00f4sob, ako nakonfigurova\u0165, ak\u00e9 protokoly HTTP server alebo klient pou\u017e\u00edvaj\u00fa.<\/p>\n<p><\/noindex> <\/p>\n<p>Server a klient m\u00f4\u017eu by\u0165 nakonfigurovan\u00ed na podporu neza\u0161ifrovan\u00fdch pripojen\u00ed HTTP\/2.<\/p>\n<p> <noindex><\/p>\n<p>Ke\u010f <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> obsahuje UnencrypterHTTP2, server prijme pripojenia HTTP\/2 na neza\u0161ifrovan\u00e9 porty. Server m\u00f4\u017ee prija\u0165 s\u00fa\u010dasne HTTP\/1 a neza\u0161ifrovan\u00fd HTTP\/2 na rovnakom porte.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ke\u010f <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> obsahuje UnencryptedHTTP2 a neobsahuje HTTP1, transport pou\u017eije neza\u0161ifrovan\u00fd HTTP\/2 pre adresy <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Ak je prenos nakonfigurovan na pou\u017e\u00edvanie HTTP\/1 a neza\u0161ifrovan\u00e9ho HTTP\/2, pou\u017eije HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>Podpora neza\u0161ifrovan\u00e9ho HTTP\/2 pou\u017e\u00edva \u201eHTTP\/2 s predbe\u017en\u00fdm poznan\u00edm\u201c (RFC 9113, \u010das\u0165 3.3). Zastaral\u00fd header \u201eUpgrade: h2c\u201c nie je podporovan\u00fd.<\/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> teraz implementuj\u00fa rozhrania <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> teraz tie\u017e implementuje rozhranie <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>Vo Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> teraz m\u00f4\u017ee by\u0165 pou\u017eit\u00fd vo Windows Nano Server. Implement\u00e1cia bola aktualizovan\u00e1, aby sa predi\u0161lo pou\u017e\u00edvaniu funkci\u00ed z kni\u017enice NetApi32, ktor\u00e1 nie je pr\u00edtomn\u00e1 v Nano Server.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Vo 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> teraz podporuj\u00fa nasleduj\u00face vstavan\u00e9 pou\u017e\u00edvate\u013esk\u00e9 servisn\u00e9 \u00fa\u010dty:<\/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>Vo Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> bol v\u00fdrazne zr\u00fdchlen\u00fd, ke\u010f je aktu\u00e1lny pou\u017e\u00edvate\u013e pripojen\u00fd k pomal\u00e9mu dom\u00e9nu, \u010do je be\u017en\u00fd sc\u00e9nar pre mnoh\u00fdch firemn\u00fdch pou\u017e\u00edvate\u013eov. Nov\u00fd v\u00fdkon implement\u00e1cie je teraz v r\u00e1de milisek\u00fand, v porovnan\u00ed s predch\u00e1dzaj\u00facou implement\u00e1ciou, ktor\u00e1 mohla trva\u0165 nieko\u013eko sek\u00fand, ba dokonca min\u00fat, k\u00fdm sa dokon\u010dila.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Vo Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> teraz vracia pou\u017e\u00edvate\u013ea vlastn\u00edka procesu, ke\u010f aktu\u00e1lny vl\u00e1kno sa vyd\u00e1va za in\u00e9ho pou\u017e\u00edvate\u013ea. Predt\u00fdm to vracalo 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> teraz implementuje rozhranie <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>Funkcia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> teraz je vyhl\u00e1sen\u00e1 za zastaran\u00fa. V novom k\u00f3de by sa mala uprednostni\u0165 pou\u017eitie syst\u00e9movej cesty na ur\u010denie bin\u00e1rky \u201ego\u201c a pou\u017ei\u0165 go env GOROOT na ur\u010denie 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\u00edk <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> prid\u00e1va nieko\u013eko funkci\u00ed na pr\u00e1cu s iter\u00e1tormi:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> vracia iter\u00e1tor po riadkoch rozdelen\u00fdch novou l\u00edniou v re\u0165azci.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> vracia iter\u00e1tor po v\u0161etk\u00fdch podre\u0165azcoch re\u0165azca, rozdelen\u00fdch pod\u013ea odde\u013eova\u010da.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> vracia iter\u00e1tor po podre\u0165azcoch re\u0165azca, rozdelen\u00fdch po ka\u017edom v\u00fdskyte odde\u013eova\u010da.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> vracia iter\u00e1tor po podre\u0165azcoch re\u0165azca okolo sekvenci\u00ed znakov pr\u00e1zdneho miesta, ako je definovan\u00e9<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> vracia iter\u00e1tor po podre\u0165azcoch re\u0165azca okolo sekvenci\u00ed k\u00f3dov\u00fdch bodov unicode, ktor\u00e9 vyhovuj\u00fa predik\u00e1tu.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Implement\u00e1cia <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> bola zmenen\u00e1 na zlep\u0161enie v\u00fdkonu, najm\u00e4 pre zmeny slovn\u00edka. Napr\u00edklad je menej pravdepodobn\u00e9, \u017ee d\u00f4jde k s\u00fa\u0165a\u017eeniu zmien neprekr\u00fdvaj\u00facich sa mno\u017e\u00edn na ve\u013ek\u00fdch slovn\u00edkoch, a viac nie je potrebn\u00fd \u010das na na\u0165ahovanie na dosiahnutie slovn\u00edka s n\u00edzkou s\u00fa\u0165a\u017eou.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ak sa stretnete s ak\u00fdmiko\u013evek probl\u00e9mami, nastavte GOEXPERIMENT=nosynchashtriemap po\u010das zostavenia, aby ste sa vr\u00e1tili k starej implement\u00e1cii a, pros\u00edm, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">vypl\u0148te formul\u00e1r probl\u00e9mov<\/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 met\u00f3dy <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> vracaj\u00fa kontext, ktor\u00fd sa zru\u0161\u00ed po dokon\u010den\u00ed testu a pred vykonan\u00edm funkci\u00ed \u010distenia testu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov\u00e9 met\u00f3dy <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> m\u00f4\u017eu by\u0165 pou\u017eit\u00e9 na zmenu pracovn\u00e9ho adres\u00e1ra po\u010das vykon\u00e1vania testu alebo benchmarku.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>\u0160abl\u00f3ny teraz podporuj\u00fa range-over-func a 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\">Time<\/a> teraz implementuje rozhrania <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>Ports<\/h2>\n<h3>Linux<\/h3>\n<p> <noindex><\/p>\n<p>Ako bolo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">vyhl\u00e1sen\u00e9<\/a> v pozn\u00e1mkach k vydaniu Go 1.23, Go 1.24 vy\u017eaduje jadro Linux verzie 3.2 alebo nov\u0161iu.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 je posledn\u00e9 vydanie, ktor\u00e9 bude fungova\u0165 na macOS 11 Big Sur. Go 1.25 bude vy\u017eadova\u0165 macOS 12 Monterey alebo nov\u0161iu.<\/p>\n<h3>WebAssembly<\/h3>\n<p>Priama direkt\u00edva kompil\u00e1tora go:wasmexport bola pridan\u00e1 do programov Go na exportovanie funkci\u00ed do hostite\u013ea WebAssembly.<\/p>\n<p> <noindex><\/p>\n<p>V WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) Go 1.24 podporuje zostavenie programu Go ako <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> prostredn\u00edctvom \u0161pecifikovania prep\u00edna\u010da zostavenia -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Viac typov je teraz povolen\u00fdch ako typ argumentu alebo v\u00fdsledku pre funkcie go:wasmimport. Osobitne, bool, string, uintptr a ukazovatele na ur\u010dit\u00e9 typy s\u00fa povolen\u00e9 (podrobnosti n\u00e1jdete v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">dokumen\u00e1cie<\/a>), spolu s 32-bitov\u00fdmi a 64-bitov\u00fdmi typmi cel\u00fdch \u010d\u00edsel a s pl\u00e1vaj\u00facou desatinnou \u010diarkou, a unsafe.Pointer, ktor\u00e9 s\u00fa u\u017e povolen\u00e9. Tieto typy s\u00fa tie\u017e povolen\u00e9 ako typy argumentu alebo v\u00fdsledku pre funkcie go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>Podporn\u00e9 s\u00fabory pre WebAssembly boli presunut\u00e9 do lib\/wasm z misc\/wasm.<\/p>\n<p>Po\u010diato\u010dn\u00e1 ve\u013ekos\u0165 pam\u00e4te bola v\u00fdznamne zn\u00ed\u017een\u00e1, najm\u00e4 pre mal\u00e9 aplik\u00e1cie WebAssembly.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>32-bitov\u00fd port windows\/arm (GOOS=windows GOARCH=arm) bol ozna\u010den\u00fd ako zlomen\u00fd. 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.4 - 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\/sk\/blog\/news\/go-1-24\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\/sk\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}