{"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\/lv\/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>Jaunais Go valodas izlaidums, 1.24 versija, tiek izlaists se\u0161us m\u0113ne\u0161us p\u0113c <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. Liel\u0101k\u0101 da\u013ca izmai\u0146u attiecas uz r\u012bku komplekta, izpildlaika un bibliot\u0113ku \u012bsteno\u0161anu. K\u0101 vienm\u0113r, izlaidums nodro\u0161ina <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">sader\u012bbas sol\u012bjumu<\/a> Go 1. Izstr\u0101d\u0101t\u0101ji sagaida, ka gandr\u012bz visas Go programmas turpin\u0101s kompil\u0113t un darboties k\u0101 iepriek\u0161.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Izmai\u0146as valod\u0101<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 tagad piln\u012bb\u0101 atbalsta <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">\u0123eneriskos tipu aliasus<\/a>: tipa alias var b\u016bt parametriz\u0113ts k\u0101 deklar\u0113ts tips. S\u012bk\u0101ka inform\u0101cija ir <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">valodas specifik\u0101cij\u0101<\/a>. Pag\u0101ju\u0161aj\u0101 iesp\u0113j\u0101 varat to atsl\u0113gt, uzst\u0101dot GOEXPERIMENT=noaliastypeparams; tom\u0113r opcija aliastypeparams tiks no\u0146emta Go 1.25 versij\u0101.<\/p>\n<p><\/noindex> <\/p>\n<h2>R\u012bki<\/h2>\n<h3>Go komanda<\/h3>\n<p> <noindex><\/p>\n<p>Go modu\u013ci tagad var sekot izpild\u0101maj\u0101m atkar\u012bb\u0101m, izmantojot r\u012bka direkt\u012bvu go.mod fail\u0101. Tas nov\u0113r\u0161 iepriek\u0161\u0113jo apgaitu risin\u0101jumu, kur\u0101 r\u012bki tika pievienoti k\u0101 tuk\u0161i importi fail\u0101, parasti saukt\u0101 \"tools.go\". Go r\u012bku komanda tagad var palaist \u0161os r\u012bkus papildus r\u012bkiem, kas tiek pieg\u0101d\u0101ti kop\u0101 ar Go. Papildu inform\u0101ciju var atrast <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">dokument\u0101cij\u0101<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Jaunais karogs -tool priek\u0161 go get noved pie r\u012bka direkt\u012bvas pievieno\u0161anas pa\u0161reiz\u0113jam modulim nor\u0101d\u012btajiem iepakojumiem, papildus piepras\u012bjumu direkt\u012bvu pievieno\u0161anai.<\/p>\n<p> <noindex><\/p>\n<p>CSIStorageCapacity <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">meta-raksts tools<\/a> attiecas uz visiem r\u012bkiem pa\u0161reiz\u0113j\u0101 modul\u012b. To var izmantot, lai visus tos atjaunin\u0101tu ar go get tool vai lai instal\u0113tu tos sav\u0101 GOBIN direktorij\u0101, izmantojot go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Izpild\u0101mie faili, kas izveidoti ar go run, un jaun\u0101 go tool uzved\u012bba tagad tiek ke\u0161oti Go kompil\u0101cijas ke\u0161\u0101. Tas padara atk\u0101rtotu palai\u0161anu \u0101tr\u0101ku, palielinot ke\u0161u. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Komandas go build un go install tagad pie\u0146em karogu -json, kas zi\u0146o par kompil\u0101cijas izvadi un k\u013c\u016bd\u0101m k\u0101 struktur\u0113tu JSON izvadi standarta izv\u0101d\u0113. Form\u0101ta deta\u013cas var redz\u0113t go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Turkl\u0101t go test -json tagad zi\u0146o par kompil\u0101cijas izvadi un k\u013c\u016bd\u0101m JSON form\u0101t\u0101, sapludinot to ar test\u0113\u0161anas rezult\u0101tu JSON. Tos var at\u0161\u0137irt p\u0113c jauniem Action tipi, ta\u010du, ja tie rada probl\u0113mas integr\u0101cijas test\u0113\u0161anas sist\u0113m\u0101, varat atgriezties pie teksta izvades kompil\u0113\u0161anai caur <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG iestat\u012bjumu<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>Jaun\u0101 GOAUTH vides main\u012bg\u0101 sniedz elast\u012bgu veidu, k\u0101 autoriz\u0113t priv\u0101t\u0101s modu\u013cu vilk\u0161anas. S\u012bk\u0101ka inform\u0101cija ir pieejama go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>Go build komanda tagad uzst\u0101da <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">pamatojuma modu\u013ca versiju<\/a> sarakst\u0101 izveidotaj\u0101 bin\u0101raj\u0101 fail\u0101, pamatojoties uz tagu un\/vai versiju kontroles izmai\u0146u. Pielikums +dirty tiks pievienots, ja ir nesaglab\u0101tas izmai\u0146as. Var izmantot karodzi\u0146u -buildvcs=false, lai izlaistu versiju kontroles inform\u0101ciju no bin\u0101r\u0101 faila.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Jauna <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG iestat\u012bjumi<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> tagad var tikt izmantots, lai izsekotu r\u012bku izv\u0113les procesu go komand\u0101.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo atbalsta jaunus uzlabojumus C funkcij\u0101m, lai uzlabotu izpildes laika veiktsp\u0113ju. #cgo noescape cFunctionName inform\u0113 kompilatoru, ka nodot\u0101 funkcijai C cFunctionName atmi\u0146a neliekas. #cgo nocallback cFunctionName inform\u0113 kompilatoru, ka C funkcija cFunctionName nesauc atpaka\u013c nevienu Go funkciju. Pla\u0161\u0101ku inform\u0101ciju var atrast <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">cgo dokument\u0101cij\u0101<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo \u0161obr\u012bd noraida kompil\u0101ciju C funkcij\u0101m ar vair\u0101k\u0101m nesader\u012bg\u0101m deklar\u0101cij\u0101m. Piem\u0113ram, ja f ir deklar\u0113ts k\u0101 vienlaikus void f(int) un void f(double), cgo zi\u0146os par k\u013c\u016bdu, nevis m\u0113\u0123in\u0101s \u0123ener\u0113t nepareizu f(0) izsaukumu. \u0160aj\u0101 laidien\u0101 ir uzlabota \u0161\u012b k\u013c\u016bdas nosac\u012bjuma atkl\u0101\u0161ana, kad nesader\u012bgas deklar\u0101cijas par\u0101d\u0101s da\u017e\u0101dos failos. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>Objdump r\u012bks tagad atbalsta 64-bit LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) un S390X (GOARCH=s390x) disasemb\u013co\u0161anu.<\/p>\n<h3>Vet<\/h3>\n<p>Jaunais tests anal\u012btiskais r\u012bks zi\u0146o par bie\u017ei sastopam\u0101m k\u013c\u016bd\u0101m testu deklar\u0101cij\u0101s, fuzzers, benchmarks un paraugiem testu paket\u0113s, piem\u0113ram, nepareizi veidotiem nosaukumiem, nepareiz\u0101m parakstiem vai paraugiem, kas dokument\u0113 neeso\u0161us identifikatorus. Da\u017eas no \u0161\u012bm k\u013c\u016bd\u0101m var novest pie testu neizpildes.<\/p>\n<p> <noindex><\/p>\n<p>Eso\u0161ais printf anal\u012btiskais r\u012bks tagad zi\u0146o par diagnostiku fmt.Printf(s) izsaukumiem, kur s ir nesast\u0101d\u012bta form\u0101ta virkne bez citiem argumentiem. \u0160\u0101di izsaukumi gandr\u012bz vienm\u0113r ir k\u013c\u016bda, jo s var satur\u0113t simbolu %; t\u0101 viet\u0101 izmantojiet fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. \u0160\u012b p\u0101rbaude parasti atkl\u0101j eso\u0161o kodu, t\u0101p\u0113c tiek piem\u0113rota tikai tad, kad valodas versija (k\u0101 nor\u0101d\u012bts go.mod faila go mod\u012bjo\u0161aj\u0101 direkt\u012bv\u0101 vai koment\u0101ros `\/\/go:build) ir vismaz Go 1.24, lai izvair\u012btos no nep\u0101rtrauktas integr\u0101cijas k\u013c\u016bd\u0101m, atjauninot uz Go 1.24 r\u012bku komplektu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Esojoja anal\u012bze buildtag tagad zi\u0146o par diagnostiku, kad ir k\u013c\u016bda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">vec\u0101k\u0101s versijas b\u016bvniec\u012bbas ierobe\u017eojums<\/a> Go direkt\u012bv\u0101 \/\/go:build. Piem\u0113ram, \/\/go:build go1.23.1 atsaucas uz punktu izlaidumu; t\u0101 viet\u0101 izmantojiet \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Esojoja anal\u012bze copylock tagad zi\u0146o par diagnostiku, kad main\u012bgais, kas pasludin\u0101ts tr\u012bsk\u0101r\u0161\u0101 \u201cfor\u201d cikl\u0101, piem\u0113ram, for i := iter(); done(i); i = next(i) { \u2026 }, satur sync.Locker, piem\u0113ram, sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> izmain\u012bja \u0161\u0101du ciklu uzved\u012bbu, izveidojot jaunu main\u012bgo katrai iter\u0101cijai, kop\u0113jot v\u0113rt\u012bbas no iepriek\u0161\u0113j\u0101s iter\u0101cijas; \u0161\u012b kop\u0113\u0161ana nav dro\u0161a attiec\u012bb\u0101 uz lokiem. <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>Iek\u0161\u0113jais fails cmd\/go un testu ke\u0161atmi\u0146as meh\u0101nisms tagad var tikt realiz\u0113ts apak\u0161procesos, kas ievie\u0161 JSON protokolu starp r\u012bku cmd\/go un apak\u0161procesu, ko nosaka main\u012bgais videi GOCACHEPROG. Agr\u0101k tas bija par GOEXPERIMENT. Protokola deta\u013cas var apskat\u012bt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">dokument\u0101cij\u0101<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Izpildes laiks<\/h2>\n<p> <noindex><\/p>\n<p>Da\u017e\u0101di veiktsp\u0113jas uzlabojumi izpildlaik\u0101 samazin\u0101ja CPU p\u0101rslodzes vid\u0113ji par 2-3% starp reprezentat\u012bvu benchmarku kopu. Rezult\u0101ti var at\u0161\u0137irties atkar\u012bb\u0101 no lietojuma. \u0160ie uzlabojumi iek\u013cauj jaunu ieb\u016bv\u0113tu map izpildi, kas balst\u012bta uz <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">Zviedru tabul\u0101m<\/a>, efekt\u012bv\u0101ku mazu objektu atmi\u0146as pie\u0161\u0137ir\u0161anu un jaunu iek\u0161\u0113ju izpildlaika mutexu izpildi.<\/p>\n<p><\/noindex> <\/p>\n<p>Jaun\u0101 ieb\u016bv\u0113t\u0101 map izpilde un jauns iek\u0161\u0113js izpildlaika mutex var tikt atvienots ar GOEXPERIMENT=noswissmap un GOEXPERIMENT=nospinbitmutex iestat\u012bjumiem attiec\u012bgi b\u016bvniec\u012bbas laik\u0101.<\/p>\n<h2>Kompilers<\/h2>\n<p>Kompilers jau aizliedza jaunu meto\u017eu defin\u0113\u0161anu ar sa\u0146\u0113m\u0113ja tipiem, kas tika \u0123ener\u0113ti ar cgo, ta\u010du bija iesp\u0113jams apej \u0161o ierobe\u017eojumu caur tipa aliasu. Go 1.24 tagad vienm\u0113r zi\u0146o par k\u013c\u016bdu, ja sa\u0146\u0113m\u0113js apz\u012bm\u0113 \u0123ener\u0113tu cgo tipu, tie\u0161i vai netie\u0161i (caur tipa aliasu).<\/p>\n<h2>Linkeris<\/h2>\n<p>Linkeris tagad p\u0113c noklus\u0113juma \u0123ener\u0113 GNU kompil\u0101cijas identifikatoru (ELF NT_GNU_BUILD_ID ieraksts) ELF platform\u0101s un UUID (MacOS iel\u0101des komanda LC_UUID) p\u0113c noklus\u0113juma. Kompil\u0101cijas identifikators vai UUID tiek \u0123ener\u0113ts no Go kompil\u0101cijas identifikatora. To var izsl\u0113gt ar linkera karogu -B none vai p\u0101rrakst\u012bt ar linkera karogu -B 0xNNNN ar lietot\u0101ja nor\u0101d\u012btu heksadecim\u0101lo v\u0113rt\u012bbu.<\/p>\n<h2>Izveido\u0161ana<\/h2>\n<p> <noindex><\/p>\n<p>K\u0101 nor\u0101d\u012bts <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">Go 1.22 izlaiduma piez\u012bm\u0113s<\/a>, Go 1.24 tagad prasa Go 1.22.6 vai v\u0113l\u0101kai versijai. Izstr\u0101d\u0101t\u0101ji gaida, ka Go 1.26 pras\u012bs Go 1.24 vai v\u0113l\u0101k izlaiduma versiju.<\/p>\n<p><\/noindex> <\/p>\n<h2>Standarta bibliot\u0113ka<\/h2>\n<h3>Ierobe\u017eota piek\u013cuve failu sist\u0113mai pa map\u0113m<\/h3>\n<p> <noindex><\/p>\n<p>Jauns tips <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> nodro\u0161ina iesp\u0113ju veikt failu sist\u0113mas oper\u0101cijas noteikt\u0101 map\u0113.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> atver mapi un atgrie\u017e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Metodes uz <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> darbojas \u0161aj\u0101 map\u0113 un ne\u013cauj ce\u013ciem atsaukties uz viet\u0101m \u0101rpus mapes, tostarp uz t\u0101m, kas ir sekojo\u0161as simboliskaj\u0101m sait\u0113m \u0101rpus mapes. Metodes uz os.Root atspogu\u013co liel\u0101ko da\u013cu failu sist\u0113mas oper\u0101ciju, kas pieejamas os paket\u0113, tostarp piem\u0113ram, <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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Jauna test\u0113\u0161anas funkcija<\/h3>\n<p> <noindex><\/p>\n<p>Testi tagad var izmantot \u0101tr\u0101ku un maz\u0101k k\u013c\u016bdainu metodi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> lai veiktu iter\u0101cijas testam, piem\u0113ram, for b.Loop() { \u2026 } viet\u0101 parast\u0101m ciklu strukt\u016br\u0101m ar b.N, piem\u0113ram, for range b.N. Tas pied\u0101v\u0101 divus b\u016btiskus ieguvumus:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Test\u0113\u0161anas funkcija tiek izpild\u012bta tie\u0161i vienu reizi katram -count, t\u0101d\u0113j\u0101di d\u0101rg\u0101s uzst\u0101d\u012b\u0161anas un att\u012br\u012b\u0161anas darb\u012bbas tiek veiktas tikai vienu reizi.<\/li>\n<li>Funkcijas izsaukuma parametri un rezult\u0101ti turpina dz\u012bvot, nov\u0113r\u0161ot kompilatora piln\u012bgu cikla \u0137erme\u0146a optimiz\u0101ciju.<\/li>\n<\/ul>\n<h3>Uzlaboti att\u012br\u012bt\u0101ji<\/h3>\n<p> <noindex><\/p>\n<p>Jauna funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> ir pabeig\u0161anas meh\u0101nisms, kur\u0161 ir elast\u012bg\u0101ks, efekt\u012bv\u0101ks un maz\u0101k pak\u013cauts k\u013c\u016bd\u0101m nek\u0101 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup pieliec funkciju att\u012br\u012b\u0161anai pie objekta, kura tiks izsaukta, tikl\u012bdz objekts k\u013c\u016bs nepieejams. Tom\u0113r at\u0161\u0137ir\u012bb\u0101 no SetFinalizer, vair\u0101ki att\u012br\u012bt\u0101ji var tikt pievienoti vienam objektam, att\u012br\u012b\u0161anas var tikt pievienotas iek\u0161\u0113jiem r\u0101d\u012bt\u0101jiem, att\u012br\u012b\u0161anas parasti neizraisa nopl\u016bdes, kad objekti veido ciklus, un att\u012br\u012b\u0161anas nep\u0101rtrauc objekta vai objektu, uz kuriem tas nor\u0101da, atbr\u012bvo\u0161anu. Jaunajam kodam vajadz\u0113tu dot priek\u0161roku AddCleanup p\u0101r SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Jauns weak pakets<\/h3>\n<p> <noindex><\/p>\n<p>Jauns <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> pakets nodro\u0161ina v\u0101jus r\u0101d\u012bt\u0101jus.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V\u0101ji r\u0101d\u012bt\u0101ji ir zema l\u012bme\u0146a primat\u012bvs, kas nodro\u0161ina strukt\u016bru izveidi, kas efekt\u012bvi izmanto atmi\u0146u, piem\u0113ram, v\u0101jus v\u0101rdn\u012bcas, lai kartotu v\u0113rt\u012bbas, kanoniz\u0101cijas v\u0101rdn\u012bcas jebkam, kas nav iek\u013cauts paket\u0113 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, un da\u017e\u0101d\u0101m ke\u0161u form\u0101m. Lai atbalst\u012btu \u0161os lieto\u0161anas gad\u012bjumus, \u0161is izlaidums ar\u012b nodro\u0161ina <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Jauns crypto\/mlkem pakotne<\/h3>\n<p> <noindex><\/p>\n<p>Jauns <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> \u012bsteno ML-KEM-768 un ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM ir post- kvantu atsl\u0113gu apmai\u0146as meh\u0101nisms, agr\u0101k paz\u012bstams k\u0101 Kyber un specifiz\u0113ts <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Jauni crypto\/hkdf, crypto\/pbkdf2 un crypto\/sha3 pakotnes<\/h3>\n<p> <noindex><\/p>\n<p>Jauns <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> \u012bsteno HMAC balst\u012btu atsl\u0113gu izn\u0101kuma funkciju \u201cExtract-and-Expand\u201d HKDF, k\u0101 noteikts <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Jauns <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> \u012bsteno paroles balst\u012btu atsl\u0113gu izn\u0101kuma funkciju PBKDF2, k\u0101 noteikts <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Jauns <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> \u012bsteno SHA-3 un SHAKE hash funkcijas un cSHAKE papla\u0161in\u0101\u0161anas izejas funkcijas, k\u0101 noteikts <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Visas tr\u012bs pakotnes balst\u0101s uz iepriek\u0161\u0113jiem golang.org\/x\/crypto pakotn\u0113m....<\/p>\n<h3>FIPS 140-3 atbilst\u012bba<\/h3>\n<p> <noindex><\/p>\n<p>\u0160is izlaidums iek\u013cauj <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">jaunu meh\u0101nismu komplektu FIPS 140-3 atbilst\u012bbas nodro\u0161in\u0101\u0161anai<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Go kriptogr\u0101fiskais modulis ir iek\u0161\u0113jo pakot\u0146u kopums standartbibliot\u0113k\u0101, kas p\u0101rredzami tiek izmantots, lai ieviestu FIPS 140-3 apstiprin\u0101tus algoritmus. Lietojumprogrammas neprasa izmai\u0146as, lai izmantotu Go kriptogr\u0101fisko moduli apstiprin\u0101tajiem algoritmiem.<\/p>\n<p> <noindex><\/p>\n<p>Jauna GOFIPS140 vides main\u012bg\u0101 var tikt izmantota, lai izv\u0113l\u0113tos Go kriptogr\u0101fisk\u0101 modu\u013ca versiju, ko izmantot kompil\u0101cij\u0101. Jauna <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG iestat\u012bjumi<\/a> fips140 var tikt izmantota, lai iesp\u0113jo FIPS 140-3 re\u017e\u012bmu izpildes laik\u0101.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 iek\u013cauj Go kriptogr\u0101fisk\u0101 modu\u013ca versiju v1.0.0, kas \u0161obr\u012bd tiek test\u0113ta ar akredit\u0113tu CMVP laboratoriju.<\/p>\n<h3>Jauna eksperiment\u0101l\u0101 pakotne testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>Jauna eksperiment\u0101l\u0101 pakotne <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> nodro\u0161ina atbalstu konkurent\u0101 koda test\u0113\u0161anai.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> palaida grupu gorut\u012bnu izol\u0113t\u0101 \u2018izol\u0101cij\u0101\u2019. Izol\u0101cij\u0101 pakotnes funkcijas <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">time<\/a> darbojas uz viltus pulkste\u0146iem.<\/li>\n<li>Funkcijas <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> gaida, kad visas gorut\u012bnas tiks blo\u0137\u0113tas pa\u0161reiz\u0113j\u0101 izol\u0101cij\u0101.<\/li>\n<\/ul>\n<p>S\u012bk\u0101ku inform\u0101ciju var redz\u0113t pakotnes dokument\u0101cij\u0101.<\/p>\n<p> <noindex><\/p>\n<p>Pakotne synctest ir eksperiment\u0101la un j\u0101iek\u013cauj, iest\u0101dot GOEXPERIMENT=synctest. Pakotnes API var main\u012bties n\u0101kotnes izlaidumos. Var <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> redz\u0113t vair\u0101k inform\u0101cijas un sniegt atsauksmes.<\/p>\n<p><\/noindex> <\/p>\n<h3>S\u012bk\u0101s izmai\u0146as bibliot\u0113k\u0101<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implement\u0101cijas (*Writer.AddFS) archive\/zip un archive\/tar tagad raksta mapes virsrakstu tuk\u0161ai mapei.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Pakete <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> pievieno vair\u0101kas funkcijas, kas str\u0101d\u0101 ar iteratoriem:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> atgrie\u017e iteratoru, kas sadal\u012bts pa jauno rindu, kas ir mas\u012bv\u0101 ar baitiem.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> atgrie\u017e iterciju visiem apak\u0161s\u0113rij\u0101m baitu s\u0113rij\u0101, ko atdala separatora.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> atgrie\u017e iterciju apak\u0161s\u0113rij\u0101m baitu s\u0113rij\u0101, kas ir sadal\u012bta p\u0113c katra separatora sastap\u0161an\u0101s.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> atgrie\u017e iterciju apak\u0161s\u0113rij\u0101m baitu s\u0113rij\u0101 ap telpu simbolu sec\u012bb\u0101m, k\u0101 defin\u0113ts <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> atgrie\u017e iterciju apak\u0161s\u0113rij\u0101m baitu s\u0113rij\u0101 ap Unicode koda punktu sec\u012bb\u0101m, kas atbilst predikatam.<\/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>Atgriezt\u0101 v\u0113rt\u012bba <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> vairs neimplement\u0113 metodes NewCTR, NewGCM, NewCBCEncrypter un NewCBCDecrypter. \u0160\u012bs metodes nebija dokument\u0113tas un nebija pieejamas vis\u0101m arhitekt\u016br\u0101m. Tagad v\u0113rt\u012bba <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> j\u0101nodod tie\u0161i attiec\u012bgaj\u0101m funkcij\u0101m <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. Pa\u0161laik crypto\/cipher joproj\u0101m p\u0101rbauda \u0161\u012bs metodes uz Block v\u0113rt\u012bb\u0101m, pat ja t\u0101s vairs nav atbalst\u012btas standartbibliot\u0113k\u0101.<\/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>Jauna funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> atgrie\u017e <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, kas \u012bsteno AES-GCM, \u0123ener\u0113jot nejau\u0161u vienreiz\u0113ju numuru Seal laik\u0101 un pievienojot to \u0161ifr\u0113t\u0101 teksta s\u0101kum\u0101.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Realiz\u0101cija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, atgriezta <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> izmantojot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> tagad ir daudz \u0101tr\u0101k amd64 un 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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> tagad ir atz\u012bti par novecoju\u0161iem. OFB un CFB re\u017e\u012bmi nav autentific\u0113ti, kas visp\u0101r\u0113j\u0101 gad\u012bjum\u0101 \u013cauj akt\u012bviem uzbrukumiem manipul\u0113t un atjaunot atkl\u0101to tekstu. Lietotn\u0113m ieteicams lietot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> viet\u0101. Ja neautentific\u0113ts re\u017e\u012bms <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> ir nepiecie\u0161ams, var izmantot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> viet\u0101.<\/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> tagad rada deterministisku parakstu saska\u0146\u0101 ar <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, ja nejau\u0161\u012bbas avots ir 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>Atgriezt\u0101 v\u0113rt\u012bba <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, tagad ar\u012b \u012bsteno interfeisu <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>Funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Read\">Las\u012bt<\/a> tagad garant\u0113 neveiksmju neesam\u012bbu. Ja Read sastop k\u013c\u016bdu las\u012b\u0161anas laik\u0101 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, programma beigsies neatgriezeniski. L\u016bdzu, \u0146emiet v\u0113r\u0101, ka noklus\u0113juma Reader dokument\u0113ts str\u0101d\u0101t veiksm\u012bgi, t\u0101p\u0113c \u0161\u012b izmai\u0146a ietekm\u0113s tikai t\u0101s programmas, kuras p\u0101rraksta Reader main\u012bgo. Vien\u012bgais iz\u0146\u0113mums ir Linux kodoli l\u012bdz versijai 3.17, kur noklus\u0113juma Reader joproj\u0101m atver \/dev\/urandom un var neizdoties.<\/p>\n<p><\/noindex> <\/p>\n<p>Linux 6.11 un v\u0113l\u0101k Reader tagad izmanto sist\u0113mas izsaukumu getrandom caur vDSO. Tas ir daudz \u0101tr\u0101k, parasti maz\u0101m las\u012bjumam.<\/p>\n<p>OpenBSD Reader tagad izmanto arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Jauna funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Text<\/a> tagad var \u0123ener\u0113t kriptogr\u0101fiski dro\u0161us nejau\u0161us teksta virknes.<\/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> tagad atgrie\u017e k\u013c\u016bdu, ja piepras\u012bts atsl\u0113ga ar garumu maz\u0101ku par 1024 bitiem. Visas metodes Sign, Verify, Encrypt un Decrypt tagad atgrie\u017e k\u013c\u016bdu, ja t\u0101s tiek izmantotas ar atsl\u0113gu, kas ir maz\u0101ka par 1024 bitiem. \u0160\u0101das atsl\u0113gas nav dro\u0161as un t\u0101s nedr\u012bkst izmantot. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG konfigur\u0101cija<\/a> rsa1024min=0 atjauno iepriek\u0161\u0113jo uzved\u012bbu, ta\u010du Go izstr\u0101d\u0101t\u0101ji iesaka to dar\u012bt tikai tad, kad tas ir nepiecie\u0161ams, un tikai testos, piem\u0113ram, pievienojot rindu \/\/go:debug rsa1024min=0 testu fail\u0101. Jaunais <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">piem\u0113rs<\/a> GenerateKey nodro\u0161ina viegli lietojamu standarta 2024 bitu test\u0113\u0161anas atsl\u0113gu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Tagad ir dro\u0161i un efekt\u012bv\u0101k izsaukt <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precompute\">PrivateKey.Precompute<\/a> l\u012bdz <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Validate\">PrivateKey.Validate<\/a>. Precompute tagad ir \u0101tr\u0101ks, ja ir da\u013c\u0113ji aizpild\u012bti <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, piem\u0113ram, izvelkot atsl\u0113gu no JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Pakotne tagad noraida vair\u0101k nepareizu atsl\u0113gu, pat ja Validate netiek izsaukts, un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> tagad var atgriezt jaunas k\u013c\u016bdas salauzt\u0101m nejau\u0161\u012bbas avotiem. Lauki <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> strukt\u016bras <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> tagad tiek izmantoti un valid\u0113ti pat tad, ja da\u017ei v\u0113rt\u012bbas tr\u016bkst. T\u0101pat ir izmai\u0146as crypto\/x509 atsl\u0113gu RSA pars\u0113\u0161an\u0101 un ieg\u016b\u0161an\u0101, k\u0101 aprakst\u012bts zem\u0101k.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> tagad atbalsta SHA-512\/224, SHA-512\/256 un SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> tagad izmanto nedaudz at\u0161\u0137ir\u012bgu metodi priv\u0101t\u0101 ekspon\u0113ta \u0123ener\u0113\u0161anai (Karm\u012bkla funkcija, nevis Eilera funkcija). Ret\u0101m lietojumprogramm\u0101m, kas \u0101r\u0113ji p\u0101radres\u0113 atsl\u0113gas tikai no pirmajiem skait\u013ciem, var rasties da\u017e\u0101di, bet sader\u012bgi rezult\u0101ti.<\/p>\n<p><\/noindex> <\/p>\n<p>Oper\u0101cijas ar publiskaj\u0101m un priv\u0101taj\u0101m atsl\u0113g\u0101m tagad ir l\u012bdz div\u0101m reiz\u0113m \u0101tr\u0101kas wasm.<\/p>\n<h3>crypto\/sha*<\/h3>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha1\/\">crypto\/sha1<\/a>: v\u0113rt\u012bba, kas tiek atgriezta <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> tagad ar\u012b implement\u0113 saskarni <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>: v\u0113rt\u012bbas, kas tiek atgrieztas <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> tagad ar\u012b implement\u0113 saskarni <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>: v\u0113rt\u012bbas, kas tiek atgrieztas <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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, tagad ar\u012b implement\u0113 saskarni <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>Jauna funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> \u013cauj lietot\u0101jam izpild\u012bt funkciju ar iesl\u0113gt\u0101m, arhitekt\u016brai specifisk\u0101m funkcij\u0101m, kas garant\u0113, ka noteiktas instrukcijas attiec\u012bb\u0101 uz laiku ir nemain\u012bgas. To var izmantot, lai p\u0101rliecin\u0101tos, ka kods, kas izstr\u0101d\u0101ts darbam ar konstantu laiku, nav optimiz\u0113ts ar procesora l\u012bme\u0146a funkcij\u0101m t\u0101d\u0101 veid\u0101, ka tas darbojas main\u012bg\u0101 laik\u0101. Pa\u0161laik WithDataIndependentTiming izmanto bitu PSTATE.DIT arm64 un neko nedara vis\u0101s cit\u0101s arhitekt\u016br\u0101s. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG konfigur\u0101cija<\/a> dataindependenttiming=1 aktiviz\u0113 DIT re\u017e\u012bmu visai Go programmai.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Izvade <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> ir j\u0101p\u0101rkl\u0101jas piln\u012bb\u0101 vai visp\u0101r ne ar ievadi. Agr\u0101kais uzved\u012bba cit\u0101di bija nenoteikta, bet tagad XORBytes izrais\u012bs 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>TLS serveris tagad atbalsta Encrypted Client Hello (ECH). \u0160o iesp\u0113ju var aktiviz\u0113t, aizpildot laukumu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Jauns post-kvantumu atsl\u0113gu apmai\u0146as meh\u0101nisms <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> tagad tiek atbalst\u012bts un ir iesl\u0113gts p\u0113c noklus\u0113juma, kad <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> ir nil. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG konfigur\u0101cija<\/a> tlsmlkem=0 atgrie\u017e noklus\u0113jumu.<\/p>\n<p><\/noindex> <\/p>\n<p>Atbalsts eksperiment\u0101lajai atsl\u0113gu apmai\u0146ai X25519Kyber768Draft00 ir no\u0146emts.<\/p>\n<p> <noindex><\/p>\n<p>Atsl\u0113gu apmai\u0146as sec\u012bba tagad tiek apstr\u0101d\u0101ta piln\u012bb\u0101 ar crypto\/tls pakotni. Sec\u012bba <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> tagad tiek ignor\u0113ta, un saturs tiek izmantots tikai, lai noteiktu, kuras atsl\u0113gu apmai\u0146as iesp\u0113jas iek\u013caut, kad valst\u012b ir aizpild\u012bta.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Jauns lauks <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> uzskaita papla\u0161in\u0101jumu identifikatoru sarakstu, kas sa\u0146emti Client Hello zi\u0146ojum\u0101. Tas var b\u016bt noder\u012bgi TLS klientu p\u0113d\u0101m.<\/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\">GODEBUG konfigur\u0101cija<\/a> x509sha1 ir no\u0146emts. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> vairs neatbalsta SHA-1 balst\u012btu parakst\u012b\u0161anu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> tagad \u012bsteno saskarnes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Sertifik\u0101tu politiku noklus\u0113juma lauks tika main\u012bts no <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.PolicyIdentifiers\">Certificate.PolicyIdentifiers<\/a> uz <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Policies\">Certificate.Policies<\/a>. Sertifik\u0101tu izp\u0113tes laik\u0101 abi lauki tiks aizpild\u012bti, ta\u010du sertifik\u0101tu politiku izveid\u0113 tiks \u0146emti no lauka Certificate.Policies, nevis Certificate.PolicyIdentifiers. \u0160\u012b izmai\u0146a var tikt atgriezta <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">ar GODEBUG iestat\u012bjumu<\/a> x509usepolicies=0.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#CreateCertificate\">CreateCertificate<\/a> tagad \u0123ener\u0113s s\u0113rijas numuru, izmantojot RFC 5280 atbilsto\u0161u metodi, nododot veidni <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, nevis radot k\u013c\u016bdu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> tagad atbalsta politikas valid\u0101ciju, k\u0101 defin\u0113ts RFC 5280 un RFC 9618. Jauns lauks <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> var tikt iestat\u012bts uz pie\u0146emamu politiku komplektu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Tik sertifik\u0101tu \u0137\u0113des ar der\u012bg\u0101m politikas grafiem tiks atgrieztas no <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> tagad atgrie\u017e k\u013c\u016bdu, nevis izvelk nepareizu RSA atsl\u0113gu. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> nekas netiek atgriezts un t\u0101 uzved\u012bba, ja tiek sniegtas nepareizas atsl\u0113gas, joproj\u0101m paliek nenoteikta.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> tagad izmanto un valid\u0113 kod\u0113t\u0101s CRT v\u0113rt\u012bbas, t\u0101p\u0113c var noraid\u012bt nepareizas RSA atsl\u0113gas, kas agr\u0101k tika pie\u0146emtas. Izmantojot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG iestat\u012bjumus<\/a> x509rsacrt=0 atgrie\u017eas pie CRT v\u0113rt\u012bbu p\u0101rr\u0113\u0137in\u0101\u0161anas.<\/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>Pakete <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> pievieno atbalstu versiju apstr\u0101dei dinamiskajos ELF (izpild\u0101m\u0101 un saist\u0101m\u0101 form\u0101ta) failos. Jauna metode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> atgrie\u017e dinamisko versiju sarakstu, kas defin\u0113ts ELF fail\u0101. Jauna metode <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> atgrie\u017e dinamisko versiju sarakstu, ko \u0161is ELF fails prasa, kas ir defin\u0113tas citos ELF objektos. Visbeidzot, jauni lauki <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> nor\u0101da uz simbolu versiju.<\/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>Divi jauni interfeisi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> tika ieviesti, lai pievienotu teksta vai bin\u0101ro objekta att\u0113lojumu bajtu s\u0113jumam. \u0160ie interfeisi nodro\u0161ina t\u0101du pa\u0161u funkcionalit\u0101ti k\u0101 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, bet viet\u0101, lai katru reizi pie\u0161\u0137irtu jaunu s\u0113jumu, tie tie\u0161i pievieno datus eso\u0161ajam s\u0113jumam. \u0160ie interfeisi tagad ir \u012bstenoti standarta bibliot\u0113kas tipiem, kas jau \u012bsteno TextMarshaler un\/vai 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>Sagrup\u0113jot strukt\u016bras lauku ar jaunu omitzero opciju, strukt\u016bras lauka tag\u0101 lauks tiks izlaists, ja t\u0101 v\u0113rt\u012bba ir nulle. Ja lauka tips ietver metodi IsZero() bool, t\u0101 tiks izmantota, lai noteiktu, vai v\u0113rt\u012bba ir nulle. Pret\u0113j\u0101 gad\u012bjum\u0101 v\u0113rt\u012bba b\u016bs nulle, ja t\u0101 ir <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">nul ieg\u016bta v\u0113rt\u012bba t\u0101s tipam<\/a>. Omicron lauka tags ir t\u012br\u0101ks un maz\u0101k pak\u013cauts k\u013c\u016bd\u0101m nek\u0101 omitempty, kad nodoms ir izlaist nulles v\u0113rt\u012bbas. \u012apa\u0161i, at\u0161\u0137ir\u012bb\u0101 no omitempty, omitzero izsl\u0113dz nulles <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> v\u0113rt\u012bbas, kas ir bie\u017ei probl\u0113mu avots.<\/p>\n<p><\/noindex> <\/p>\n<p>Ja abi omitempty un omitzero ir nor\u0101d\u012bti, lauks tiks izlaists, ja v\u0113rt\u012bba ir tuk\u0161a vai nulles (vai uzreiz kop\u0101).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> tagad ietver ieb\u016bv\u0113tas strukt\u016bras, lai sniegtu detaliz\u0113t\u0101kas k\u013c\u016bdu zi\u0146ojumu.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Visas datu strukt\u016bras go\/types, kas atkl\u0101j p\u0101ru metodes sec\u012bbu, piem\u0113ram, Len() int un At(int) T, tagad ar\u012b ir metodes, kas atgrie\u017e iterators, \u013caujot vienk\u0101r\u0161ot kodu, piem\u0113ram, \u0161\u0101du:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>Uz \u0161o:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Metodes: <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>: v\u0113rt\u012bba, kas tiek atgriezta <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">New<\/a>, tagad ar\u012b \u012bsteno interfeisu <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>: v\u0113rt\u012bbas, kas tiek atgrieztas <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">New<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, tagad ar\u012b implement\u0113 saskarni <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>: v\u0113rt\u012bba, kas tiek atgriezta <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">New<\/a>, tagad ar\u012b \u012bsteno interfeisu <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>: v\u0113rt\u012bbas, kas tiek atgrieztas <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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, tagad ar\u012b implement\u0113 saskarni <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>: jaunas funkcijas <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> var apr\u0113\u0137in\u0101t hash jebkurai v\u0113rt\u012bbai, kuru var sal\u012bdzin\u0101t. Tas \u013cauj hash\u0113t visu, ko var izmantot k\u0101 go v\u0101rdn\u012bcas atsl\u0113gu.<\/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>CSIStorageCapacity <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> ir apstr\u0101d\u0101t\u0101js, kas nekad nav iesl\u0113gts un vienm\u0113r noraida savu izn\u0101kumu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">L\u012bmenis<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> tagad ievie\u0161 interfeisu <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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> tagad ievie\u0161 interfeisu <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>: novecojusi augsta l\u012bme\u0146a funkcijas izsaukumi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> vairs nav nek\u0101da efekta. Lai atjaunotu veco uzved\u012bbu, var izmantot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">GODEBUG iestat\u012bjumu<\/a> randseednop=0. Vair\u0101k konteksta iek\u0161 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">pied\u0101v\u0101jum\u0101 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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> tagad ievie\u0161 interfeisu <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> tagad autom\u0101tiski izmanto MPTCP sist\u0113m\u0101s, kur\u0101s tas tiek atbalst\u012bts (pa\u0161laik tikai Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> tagad ievie\u0161 interfeisu <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>Main\u012bjies ierobe\u017eojums <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> uz sa\u0146emtajiem atbild\u0113m 1xx k\u0101 atbilde uz piepras\u012bjumu. Agr\u0101k tas p\u0101rtrauca piepras\u012bjumu un atgrieza k\u013c\u016bdu p\u0113c tam, kad tika sa\u0146emtas vair\u0101k nek\u0101 5 atbildes 1xx. Tagad tas atgriez\u012bs k\u013c\u016bdu tikai tad, ja visu 1xx atbil\u017eu kop\u0113jais izm\u0113rs p\u0101rsniedz konfigur\u0101cijas iestat\u012bjumu <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Turkl\u0101t, kad piepras\u012bjumam ir uzraudz\u012bbas \u0101\u0137is <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, tagad nav ierobe\u017eojuma uz kop\u0113jo atbil\u017eu skaitu 1xx. \u0100\u0137is Got1xxResponse var atgriezt k\u013c\u016bdu, lai p\u0101rtrauktu piepras\u012bjumu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Serveris<\/a> tagad ir HTTP2 lauks, kas \u013cauj konfigur\u0113t HTTP\/2 protokola iestat\u012bjumus.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Jauni lauki <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> nodro\u0161ina vienk\u0101r\u0161u veidu, k\u0101 konfigur\u0113t, kuri protokoli HTTP serveris vai klients izmanto.<\/p>\n<p><\/noindex> <\/p>\n<p>Serveris un klients var tikt konfigur\u0113ti, lai atbalst\u012btu neza\u0161ifr\u0113tus HTTP\/2 savienojumus.<\/p>\n<p> <noindex><\/p>\n<p>Kad <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> saturs UnencryptHTTP2, serveris pie\u0146ems HTTP\/2 savienojumus uz neza\u0161ifr\u0113tiem portiem. Serveris var vienlaic\u012bgi pie\u0146emt gan HTTP\/1, gan neza\u0161ifr\u0113tu HTTP\/2 uz vienu un to pa\u0161u portu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Kad <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> satur UnencryptedHTTP2 un nesatur HTTP1, transport\u0101 tiks izmantots neza\u0161ifr\u0113ts HTTP\/2 adres\u0113m <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> Ja transporta konfigur\u0113\u0161ana paredz vienlaic\u012bgu HTTP\/1 un ne\u0161ifr\u0113tu HTTP\/2 lieto\u0161anu, tas izmantos HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>Atbalsts ne\u0161ifr\u0113tam HTTP\/2 izmanto \"HTTP\/2 ar priek\u0161zin\u0101\u0161an\u0101m\" (RFC 9113, 3.3. noda\u013ca). Novecojusi virsraksts \"Upgrade: h2c\" netiek atbalst\u012bta.<\/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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefix<\/a> tagad \u012bsteno saskarnes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> un <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> tagad ar\u012b implement\u0113 saskarni <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>Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> tagad var tikt izmantots Windows Nano Server. Realiz\u0101cija tika atjaunin\u0101ta, lai izvair\u012btos no funkciju izmanto\u0161anas no bibliot\u0113kas NetApi32, kas nav pieejama Nano Server.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>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> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">LookupId<\/a> tagad atbalsta \u0161\u0101dus ieb\u016bv\u0113tos lietot\u0101ja pakalpojumu kontus:<\/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>Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> bija b\u016btiski pa\u0101trin\u0101ta, kad pa\u0161reiz\u0113jais lietot\u0101js pievienojas l\u0113nam dom\u0113nam, kas ir izplat\u012bts daudziem korporat\u012bvajiem lietot\u0101jiem. Jaun\u0101 realiz\u0101cijas veiktsp\u0113ja tagad ir milisekund\u0113s, sal\u012bdzinot ar iepriek\u0161\u0113jo versiju, kurai bija nepiecie\u0161amas vair\u0101kas sekundes, pat min\u016btes, lai pabeigtu.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Current<\/a> tagad atgrie\u017e procesa \u012bpa\u0161nieka lietot\u0101ju, kad pa\u0161reiz\u0113j\u0101 pl\u016bsma izsniedz sevi k\u0101 citu lietot\u0101ju. Agr\u0101k tas atgrieza k\u013c\u016bdu.<\/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> tagad ievie\u0161 interfeisu <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>Funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#GOROOT\">GOROOT<\/a> tagad ir pasludin\u0101ta par novecojusi. Jaunaj\u0101 kod\u0101 j\u0101piedod priek\u0161roka sist\u0113mas ce\u013cam bin\u0101ro failu \"go\" noteik\u0161an\u0101 un j\u0101izmanto go env GOROOT, lai noteiktu 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>Pakete <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> pievieno vair\u0101kas funkcijas darbu ar iteratoriem:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> atgrie\u017e iteratoru, kas \u0161\u0137iro p\u0101rtraukumus pa jauniem l\u012bniju simboliem virknes tekst\u0101.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> atgrie\u017e iteratoru vis\u0101m apak\u0161virkn\u0113m virknes, kas \u0161\u0137irtas ar separatoru.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> atgrie\u017e iteratoru pa apak\u0161virkn\u0113m virknes, kas \u0161\u0137irtas p\u0113c katra separatora sastopam\u012bbas.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> atgrie\u017e iteratoru pa apak\u0161virkn\u0113m virknes ap simbolu atstarpiem, k\u0101 noteikts<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> atgrie\u017e iteratoru p\u0113c apak\u0161virkn\u0113m virknes ap Unicode kodu punktu sec\u012bb\u0101m, kas izpilda predik\u0101tu.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Realiz\u0101cija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> tika main\u012bta, uzlabojot veiktsp\u0113ju, \u012bpa\u0161i v\u0101rdn\u012bcas izmai\u0146\u0101m. Piem\u0113ram, nep\u0101rkl\u0101jo\u0161a komplektu izmai\u0146u konkurence tagad ir maz\u0101k iesp\u0113jama liel\u0101s v\u0101rdn\u012bc\u0101s, un nav nepiecie\u0161ama laika palielin\u0101\u0161ana, lai sasniegtu zemas konkurences v\u0101rdn\u012bcu slodzi.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ja, ja saskarsieties ar jebk\u0101d\u0101m probl\u0113m\u0101m, uzst\u0101diet GOEXPERIMENT=nosynchashtriemap kompil\u0101cijas laik\u0101, lai atgrieztos pie vec\u0101s \u012bsteno\u0161anas, l\u016bdzu, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">aizpildiet probl\u0113mu veidlapu<\/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>Jaunas metodes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> atgrie\u017e kontekstu, kas tiek atcelts p\u0113c test\u0113\u0161anas pabeig\u0161anas un pirms test\u0113\u0161anas t\u012br\u012b\u0161anas funkciju izpildes.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Jaunas metodes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> un <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> var tikt izmantoti darba direktorijas mai\u0146ai test\u0113\u0161anas vai veiktsp\u0113jas v\u0113rt\u0113juma laik\u0101.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>Veidnes tagad atbalsta range-over-func un 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\">Laiks<\/a> tagad \u012bsteno saskarnes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> un <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>K\u0101 bija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">pazi\u0146ots<\/a> Go 1.23 izlai\u0161anas piez\u012bm\u0113s Go 1.24 prasa Linux kodolu versiju 3.2 vai jaun\u0101ku.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darv\u012bna<\/h3>\n<p>Go 1.24 ir jaun\u0101kais izlaidums, kas darbosies macOS 11 Big Sur. Go 1.25 pras\u012bs macOS 12 Monterey vai jaun\u0101ku.<\/p>\n<h3>WebAssembly<\/h3>\n<p>Kompil\u0101cijas direkt\u012bva go:wasmexport ir pievienota Go programm\u0101m, lai eksport\u0113tu funkcijas uz WebAssembly mitin\u0101t\u0101ju.<\/p>\n<p> <noindex><\/p>\n<p>WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) Go 1.24 atbalsta Go programmas izveidi k\u0101 <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> nor\u0101dot kompil\u0101cijas karogu -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Tagad ir at\u013cauti vair\u0101k veidu k\u0101 argumenta vai rezult\u0101ta veids go:wasmimport funkcij\u0101m. \u012apa\u0161i, bool, string, uintptr un r\u0101d\u012bt\u0101ji uz noteiktiem veidiem ir at\u013cauti (s\u012bk\u0101k skatiet <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">dokument\u0101cij\u0101<\/a>), kop\u0101 ar 32-bit un 64-bit veselo skait\u013cu un peldo\u0161\u0101 punkta veidiem, k\u0101 ar\u012b unsafe.Pointer, kas jau ir at\u013cauts. \u0160ie veidi ar\u012b ir at\u013cauti k\u0101 argumenta vai rezult\u0101ta veidi go:wasmexport funkcij\u0101m.<\/p>\n<p><\/noindex> <\/p>\n<p>WebAssembly atbalsta faili ir p\u0101rvietoti uz lib\/wasm no misc\/wasm.<\/p>\n<p>S\u0101kotn\u0113j\u0101 atmi\u0146as izm\u0113rs ir iev\u0113rojami samazin\u0101ts, \u012bpa\u0161i maziem WebAssembly lietojumiem.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>32-bit windows\/arm ports (GOOS=windows GOARCH=arm) ir atz\u012bts par boj\u0101tu. S\u012bk\u0101ka inform\u0101cija atrodama <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Avots: <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\/lv\/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=\"lv_LV\" \/>\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\/lv\/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\/lv\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}