{"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\/sl\/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>Nova verzija jezika Go, verzija 1.24, izlazi \u0161est meseci nakon <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23\">Go 1.23<\/a>. Ve\u0107ina promena se odnosi na implementaciju alatnog lanca, runtime-a i biblioteka. Kao i obi\u010dno, izdanje donosi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1compat\">obe\u0107anje o kompatibilnosti<\/a> Go 1. Programeri jezika o\u010dekuju da \u0107e gotovo svi Go programi nastaviti da se kompajliraju i rade kao i do sada.<\/p>\n<p><\/noindex><\/noindex>  <\/p>\n<h2>Promene u jeziku<\/h2>\n<p> <noindex><\/p>\n<p>Go 1.24 sada potpuno podr\u017eava <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/46477\">generi\u010dke alias tipove<\/a>: alias tipa mo\u017ee biti parametizovan kao deklarisani tip. Detalji su u <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#Alias_declarations\">specifikaciji jezika<\/a>. Iako se mogu\u0107nost mo\u017ee isklju\u010diti postavljanjem GOEXPERIMENT=noaliastypeparams; me\u0111utim, opcija aliastypeparams bi\u0107e uklonjena u Go 1.25.<\/p>\n<p><\/noindex> <\/p>\n<h2>Orodja<\/h2>\n<h3>Komanda go<\/h3>\n<p> <noindex><\/p>\n<p>Moduli go sada mogu pratiti izvr\u0161ne zavisnosti koriste\u0107i direktivu tool u go.mod. Ovo elimini\u0161e potrebu za ranijim re\u0161enjem dodavanja alata kao praznih uvoza u datoteku, obi\u010dno nazvanu \u201ctools.go\u201d. Komanda go tool sada mo\u017ee pokretati ove alate pored alata koji dolaze s Go-om. Vi\u0161e informacija mo\u017ee se na\u0107i u <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/modules\/managing-dependencies#tools\">dokumenti<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Nova zastavica -tool za go get dovodi do dodavanja direktive alata u trenutni modul za navedene pakete pored dodavanja direktiva zahteva.<\/p>\n<p> <noindex><\/p>\n<p>Nova <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go#hdr-Package_lists_and_patterns\">meta obrazac alat<\/a> odnosi se na sve alate u trenutnom modulu. Mo\u017ee se koristiti za a\u017euriranje svih njih preko go get tool ili za instaliranje u va\u0161u GOBIN direktorijum preko go install tool.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Izvr\u0161ni fajlovi kreirani preko go run i novo pona\u0161anje go tool sada se ke\u0161iraju u Go-ovom ke\u0161u gradnje. Ovo pobolj\u0161ava ponovljene pokrete zahvaljuju\u0107i pove\u0107anom ke\u0161u. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/69290\">#69290<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Komande go build i go install sada prihvataju zastavicu -json, koja izve\u0161tava izlaz i gre\u0161ke gradnje kao strukturirani izlaz JSON u standardnom izlazu. Detalje formata mo\u017eete videti u go help buildjson.<\/p>\n<p> <noindex><\/p>\n<p>Osim toga, go test -json sada izve\u0161tava izlaz i gre\u0161ke gradnje u JSON-u, pome\u0161ano s JSON-om rezultata testiranja. Mogu se razlikovati po novim tipovima akcije, ali ako izazivaju probleme u sistemu integracije testova, mo\u017eete se vratiti na tekstualni izlaz gradnje preko <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">pode\u0161avanja GODEBUG<\/a> gotestjsonbuildtext=1.<\/p>\n<p><\/noindex> <\/p>\n<p>Nova promenljiva okru\u017eenja GOAUTH pru\u017ea fleksibilan na\u010din za autorizaciju privatnih povla\u010denja modula. Detalje mo\u017eete videti u go help goauth.<\/p>\n<p> <noindex><\/p>\n<p>Komanda go build sada instalira <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/debug#BuildInfo.Main\">verziju glavnog modula<\/a> \u0432 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0442\u0435\u0433\u0435 \u0438\/\u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438. \u0421\u0443\u0444\u0444\u0438\u043a\u0441 +dirty \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043d\u0435\u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 -buildvcs=false \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nova <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 GODEBUG<\/a> <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/toolchain#select\">toolchaintrace=1<\/a> \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 go.<\/p>\n<p><\/noindex> <\/p>\n<h3>Cgo<\/h3>\n<p> <noindex><\/p>\n<p>Cgo \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 C \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. #cgo noescape cFunctionName \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u0430\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e C cFunctionName \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u0443\u0441\u043a\u043e\u043b\u044c\u0437\u0430\u0435\u0442. #cgo nocallback cFunctionName \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f C cFunctionName \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Go. \u0411\u043e\u043b\u044c\u0448\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/cgo#hdr-Optimizing_calls_of_C_code\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 cgo<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Cgo \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0432\u044b\u0437\u043e\u0432\u044b \u0421 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u043a\u0430\u043a \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e void f(int) \u0438 void f(double), cgo \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u0430 f(0). \u041d\u043e\u0432\u044b\u043c \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67699\">#67699<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Objdump<\/h3>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 objdump \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 64-\u0431\u0438\u0442\u043d\u043e\u043c LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) \u0438 S390X (GOARCH=s390x).<\/p>\n<h3>Vet<\/h3>\n<p>\u041d\u043e\u0432\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 tests \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0442\u0435\u0441\u0442\u043e\u0432, \u0444\u0430\u0437\u0437\u0435\u0440\u043e\u0432, \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430, \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p> <noindex><\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 printf \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u043e\u0440\u043c\u044b fmt.Printf(s), \u0433\u0434\u0435 s \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0431\u0435\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 s \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b %; \u0432\u0437\u0430\u043c\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 fmt.Print. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/60529\">60529<\/a>. \u042d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043a\u043e\u0434\u0435, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u044f\u0437\u044b\u043a\u0430 (\u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 go \u0444\u0430\u0439\u043b\u0430 go.mod \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438 `\/\/go:build) \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0435\u0440\u0435 Go 1.24, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0441\u0431\u043e\u0435\u0432 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d Go 1.24.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Obstoje\u010di buildtag analizator sada javlja dijagnostiku kada postoji gre\u0161ka u <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/go#hdr-Build_constraints\">ograni\u010denju starije verzije<\/a> Go u direktivi \/\/go:build. Na primer, \/\/go:build go1.23.1 odnosi se na ta\u010dno izdanje; umesto toga koristite \/\/go:build go1.23. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/64127\">#64127<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Obstoje\u0107i copylock analizator sada javlja dijagnostiku kada promenljiva deklarisana u trojnoj \"for\" petlji, kao \u0161to je for i := iter(); done(i); i = next(i) { \u2026 }, sadr\u017ei sync.Locker, kao \u0161to je sync.Mutex. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#language\">Go 1.22<\/a> izmenio je pona\u0161anje takvih petlji na kreiranje nove promenljive za svaku iteraciju, kopiraju\u0107i vrednosti iz prethodne iteracije; to kopiranje nije sigurno za lokove. <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>Interni binarni fajl cmd\/go i mehanizam ke\u0161iranja testova sada mogu biti implementirani podprocesima koji implementiraju JSON protokol izme\u0111u alata cmd\/go i podprocesa nazvanog promenljiva okru\u017eenja GOCACHEPROG. Pre toga to je bila GOEXPERIMENT. Detalje protokola mo\u017eete videti u <a rel=\"nofollow\" href=\"https:\/\/go.dev\/cmd\/go\/internal\/cacheprog\">dokumenti<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h2>Vreme izvo\u0111enja<\/h2>\n<p> <noindex><\/p>\n<p>Nekoliko pobolj\u0161anja performansi u runtime-u smanjilo je tro\u0161kove CPU-a u proseku za 2-3% u skupini reprezentativnih ben\u010dmarkova. Rezultati se mogu razlikovati u zavisnosti od aplikacije. Ova pobolj\u0161anja uklju\u010duju novu ugra\u0111enu implementaciju mape zasnovanu na <a rel=\"nofollow\" href=\"https:\/\/abseil.io\/about\/design\/swisstables\">\u0160vedskim Tablama<\/a>, efikasnijem dodeljivanju memorije za male objekte i novoj unutra\u0161njoj runtime implementaciji mutexa.<\/p>\n<p><\/noindex> <\/p>\n<p>Nova ugra\u0111ena implementacija mape i nova unutra\u0161nja runtime mutex mogu se onemogu\u0107iti postavkama GOEXPERIMENT=noswissmap i GOEXPERIMENT=nospinbitmutex tokom gra\u0111enja.<\/p>\n<h2>Kompajler<\/h2>\n<p>Kompajler je ve\u0107 zabranio odre\u0111ivanje novih metoda sa tipovima primaoca koji su generisani cgo, ali je bilo mogu\u0107e zaobi\u0107i ovo ograni\u010denje putem alias tipa. Go 1.24 sada uvek javlja gre\u0161ku ako primalac ozna\u010dava generisani cgo tip, direktno ili indirektno (putem alias tipa).<\/p>\n<h2>Linker<\/h2>\n<p>Linker sada generi\u0161e GNU identifikator izgradnje (zapisa ELF NT_GNU_BUILD_ID) na ELF platformama i UUID (Mach-O LC_UUID) na macOS-u po difoltu. Identifikator izgradnje ili UUID se proizvodi iz identifikatora izgradnje Go. Ovo se mo\u017ee isklju\u010diti linker flagom -B none, ili predefinisati linker flagom -B 0xNNNN sa korisni\u010dki definisanom heksadecimalnom vredno\u0161\u0107u.<\/p>\n<h2>Osvje\u017eavanje<\/h2>\n<p> <noindex><\/p>\n<p>Kao \u0161to je navedeno u <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.22#bootstrap\">bele\u0161kama o izdanju Go 1.22<\/a>, Go 1.24 zdaj zahteva Go 1.22.6 ali novej\u0161o razli\u010dico za izvajanje. Razvijalci pri\u010dakujejo, da bo Go 1.26 za izvajanje zahteval to\u010dno razli\u010dico Go 1.24 ali novej\u0161o.<\/p>\n<p><\/noindex> <\/p>\n<h2>Standardna knji\u017enica<\/h2>\n<h3>Dostop do datote\u010dnega sistema, omejen na mapo<\/h3>\n<p> <noindex><\/p>\n<p>Nov tip <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> omogo\u010da izvajanje operacij datote\u010dnega sistema v okviru dolo\u010dene mape.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#OpenRoot\">os.OpenRoot<\/a> odpre mapo in vrne <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a>. Metode na <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root\">os.Root<\/a> delujejo v tej mapi in ne dovolijo, da poti ka\u017eejo na lokacije izven mape, vklju\u010dno s tistimi, ki sledijo simboli\u010dnim povezavam izven mape. Metode na os.Root odra\u017eajo ve\u010dino operacij datote\u010dnega sistema, ki so na voljo v paketu os, vklju\u010dno z na primer, <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> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os#Root.Stat\">os.Root.Stat<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nova funkcija benchmarka<\/h3>\n<p> <noindex><\/p>\n<p>Benchmarked zdaj lahko uporablja hitrej\u0161o in manj nagnjeno k napakam metodo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Loop\">testing.B.Loop<\/a> za izvajanje iteracij benchmarka, kot je for b.Loop() { \u2026 } namesto obi\u010dajnih zanke strukture z vklju\u010devanjem b.N, kot je for range b.N. To ponuja dve pomembni prednosti:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Benchmark funkcija se izvede natan\u010dno enkrat za vsak -count, tako da drage nastavitvene in \u010distilne korake izvajamo samo enkrat.<\/li>\n<li>Parameteri funkcijskega klica in rezultati ostajajo v \u017eivljenju, kar prepre\u010duje kompilatorju popolno optimizacijo telesa zanke.<\/li>\n<\/ul>\n<h3>Izbolj\u0161ani finalizatorji<\/h3>\n<p> <noindex><\/p>\n<p>Nova funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#AddCleanup\">runtime.AddCleanup<\/a> je mehanizem za zaklju\u010devanje, ki je bolj fleksibilen, u\u010dinkovitej\u0161i in manj nagnjen k napakam kot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime#SetFinalizer\">runtime.SetFinalizer<\/a>. AddCleanup pritrdi funkcijo \u010di\u0161\u010denja na objekt, ki se bo zagnala, ko objekt postane nedostopen. Vendar pa, za razliko od SetFinalizer, lahko ve\u010d \u010di\u0161\u010denj pripnemo enemu objektu, \u010di\u0161\u010denja se lahko pripnejo na notranje kazalce, \u010di\u0161\u010denja obi\u010dajno ne povzro\u010dajo pu\u0161\u010danja, ko objekti tvorijo cikel, in \u010di\u0161\u010denja ne odlo\u017eijo osvoboditve objekta ali objektov, na katere ta ka\u017ee. Nov koda bi morala raje izbrati AddCleanup pred SetFinalizer.<\/p>\n<p><\/noindex> <\/p>\n<h3>Nov paket weak<\/h3>\n<p> <noindex><\/p>\n<p>Nov paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/weak\/\">weak<\/a> omogo\u010da \u0161ibke kazalce.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>\u0160ibki kazalci so nizkonivojski primitiv, ki se zagotavlja za ustvarjanje struktur, ki u\u010dinkovito uporabljajo pomnilnik, kot so \u0161ibki slovarji za povezovanje vrednosti, slovarji kanonizacije za karkoli, kar ni pokrito z paketom <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/unique\/\">unique<\/a>, and various cache types. To support these use cases, this release also provides <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/runtime\/#AddCleanup\">runtime.AddCleanup<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/maphash\/#Comparable\">maphash.Comparable<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>New crypto\/mlkem package<\/h3>\n<p> <noindex><\/p>\n<p>Nov paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/mlkem\/\">crypto\/mlkem<\/a> implements ML-KEM-768 and ML-KEM-1024.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>ML-KEM is a post-quantum key exchange mechanism, previously known as Kyber and specified in <a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.6028\/NIST.FIPS.203\">FIPS 203<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h3>New packages crypto\/hkdf, crypto\/pbkdf2, and crypto\/sha3<\/h3>\n<p> <noindex><\/p>\n<p>Nov paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/hkdf\/\">crypto\/hkdf<\/a> implements the HMAC-based key derivation function \u201cExtract-and-Expand\u201d HKDF, as defined in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc5869.html\">RFC 5869<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/pbkdf2\/\">crypto\/pbkdf2<\/a> implements the password-based key derivation function PBKDF2, as defined in <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8018.html\">RFC 8018<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov paket <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/sha3\/\">crypto\/sha3<\/a> implements the SHA-3 hash function and SHAKE and cSHAKE extendable-output functions, as defined in <a rel=\"nofollow\" href=\"http:\/\/doi.org\/10.6028\/NIST.FIPS.202\">FIPS 202<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>All three packages are based on existing packages from golang.org\/x\/crypto\/\u2026<\/p>\n<h3>FIPS 140-3 compliance<\/h3>\n<p> <noindex><\/p>\n<p>This release includes <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/security\/fips140\">a new set of mechanisms for ensuring FIPS 140-3 compliance.<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<p>Go's cryptographic module is a set of internal packages from the standard library that are transparently used to implement approved FIPS 140-3 algorithms. Applications require no changes to use Go's cryptographic module for approved algorithms.<\/p>\n<p> <noindex><\/p>\n<p>A new environment variable GOFIPS140 can be used to select the version of Go's cryptographic module to use in the build. The new <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 GODEBUG<\/a> fips140 can be used to enable FIPS 140-3 mode at runtime.<\/p>\n<p><\/noindex> <\/p>\n<p>Go 1.24 includes the Go cryptographic module version v1.0.0, which is currently being tested with an accredited CMVP lab.<\/p>\n<h3>New experimental package testing\/synctest<\/h3>\n<p> <noindex><\/p>\n<p>new experimental package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/\">testing\/synctest<\/a> provides support for testing concurrent code.<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li>Funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest\/#Run\">synctest.Run<\/a> runs a group of goroutines in an isolated \u2018bubble\u2019. In the bubble, functions from the package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time\">time<\/a> operate on fake clocks.<\/li>\n<li>Functions <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing\/synctest#Wait\">synctest.Wait<\/a> waits for all goroutines to block in the current bubble.<\/li>\n<\/ul>\n<p>Details can be seen in the package documentation.<\/p>\n<p> <noindex><\/p>\n<p>The synctest package is experimental and must be enabled by setting GOEXPERIMENT=synctest. The package API may change in future releases. In <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67434\">#67434<\/a> more details can be viewed and feedback provided.<\/p>\n<p><\/noindex> <\/p>\n<h3>Minor changes in the library<\/h3>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/archive\/\">archive<\/a><\/h4>\n<p>Implementations (*Writer.AddFS) in archive\/zip and archive\/tar now write a directory header for an empty directory.<\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\/\">bytes<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes\">bytes<\/a> adds several functions that work with iterators:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#Lines\">Lines<\/a> vrne iterator za lo\u010dene vrstice prek novih vrstic v sli\u010dici bajtov.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitSeq\">SplitSeq<\/a> vrne iterator za vse podsezname sli\u010dice bajtov, lo\u010dene z lo\u010dilom.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#SplitAfterSeq\">SplitAfterSeq<\/a> vrne iterator za podsezname sli\u010dice bajtov, lo\u010dene po vsakem pojavu lo\u010dila.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/bytes#FieldsSeq\">FieldsSeq<\/a> vrne iterator za podsezname sli\u010dice bajtov okoli zaporedij znakov vrzeli, kot je dolo\u010deno <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> vrne iterator za podsezname sli\u010dice bajtov okoli zaporedij kodnih to\u010dk unicode, ki ustrezajo predikatu.<\/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>Vrednost, vrnjena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes#NewCipher\">NewChipher<\/a> ve\u010d ne implementira metod NewCTR, NewGCM, NewCBCEncrypter in NewCBCDecrypter. Te metode so bile nedokumentirane in niso bile na voljo na vseh arhitekturah. Sedaj vrednost <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Block\">Block<\/a> mora biti posredovana neposredno ustreznim funkcijam <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher\/\">crypto\/cipher<\/a>. Trenutno crypto\/cipher \u0161e vedno preverja te metode na vrednostih Block, celo \u010de jih standardna knji\u017enica ve\u010d ne podpira.<\/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>Nova funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewGCMWithRandomNonce\">NewGCMWithRandomNonce<\/a> vra\u010dajo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a>, ki implementira AES-GCM, ustvarjaju\u0107i naklju\u010dni enkratni \u0161tevilko med Seal in dodaju\u0107i ga na za\u010detek \u0161ifriranega besedila.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Implementacija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a>, vrnjena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> z uporabo s <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/aes\/\">crypto\/aes<\/a> sedaj ve\u010dkrat hitrej\u0161i na amd64 in 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> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCFBDecrypter\">NewCFBDecrypter<\/a> so zdaj razgla\u0161eni za zastarele. Na\u010dini OFB in CFB niso avtenticirani, kar na splo\u0161no dopu\u0161\u010da aktivnim napadom manipulacijo in obnavljanje odprtega besedila. Priporo\u010dljivo je, da aplikacije uporabljajo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#AEAD\">AEAD<\/a> namesto tega. \u010ce je neavtenticirani na\u010din <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#Stream\">Stream<\/a> potreben, lahko uporabi <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/cipher#NewCTR\">NewCTR<\/a> namesto tega.<\/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> zdaj ustvarja deterministi\u010dno podpisovanje v skladu z <a rel=\"nofollow\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6979.html\">RFC 6979<\/a>, \u010de je vir naklju\u010dnosti 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>Vrednost, vrnjena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/md5#New\">md5.New<\/a>, zdaj tudi implementira vmesnik <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\">\u0427\u0438\u0442\u0430\u0442\u044c<\/a> zdaj zagotavlja odsotnost neuspehov. \u010ce Read naleti na napako med branjem <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Reader\">Reader<\/a>, program se nepreklicno kon\u010da. Upo\u0161tevajte, da je privzeti Reader dokumentirano, da vedno deluje uspe\u0161no, zato bo ta sprememba vplivala le na tiste programe, ki prepisujejo spremenljivko Reader. Edina izjema so jedra Linuxa pred razli\u010dico 3.17, kjer privzeti Reader \u0161e vedno odpirajo \/dev\/urandom in lahko odpove.<\/p>\n<p><\/noindex> <\/p>\n<p>Na Linux 6.11 i kasneje Reader zdaj uporablja sistemski poziv getrandom preko vDSO. To je ve\u010dkrat hitreje, obi\u010dajno za majhne branja.<\/p>\n<p>Na OpenBSD Reader zdaj uporablja arc4random_buf(3).<\/p>\n<p> <noindex><\/p>\n<p>Nova funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rand#Text\">Tekst<\/a> zdaj lahko generira kriptografsko varne naklju\u010dne besedilne niz.<\/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> zdaj vrne napako, \u010de je zahtevan klju\u010d dol\u017eine manj kot 1024 bitov. Vse metode Sign, Verify, Encrypt in Decrypt zdaj vra\u010dajo napako, \u010de so uporabljene z klju\u010dem velikosti manj kot 1024 bitov. Tak\u0161ni klju\u010di so nevarni in jih ne smete uporabljati. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Nastavitev GODEBUG<\/a> rsa1024min=0 obnovi staro vedenje, vendar razvijalci Go priporo\u010dajo, da to delate le po potrebi in samo v testih, na primer z dodajanjem vrstice \/\/go:debug rsa1024min=0 v testno datoteko. Nov <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#example-GenerateKey-TestKey\">primer<\/a> GenerateKey zagotavlja enostavno uporabni standardni 2024-bitni testni klju\u010d.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Zdaj je varno in bolj u\u010dinkovito klicati <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 zdaj hitrej\u0161i v prisotnosti delno napolnjenih <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrecomputedValues\">PrecomputedValues<\/a>, na primer pri izvleku klju\u010da iz JSON.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Paketu zdaj zavrne ve\u010d nepravilnih klju\u010dev, tudi ko Validate ni klican, in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> zdaj lahko vrne nove napake za pokvarjene vire naklju\u010dnosti. Polja <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Primes\">Primes<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey.Precomputed\">Precomputed<\/a> struktur <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#PrivateKey\">PrivateKey<\/a> zdaj se uporabljajo in validirajo, tudi ko nekateri vrednosti manjkajo. Tudi spremembe so bile narejene v crypto\/x509 glede raz\u010dlenjevanja in pridobivanja RSA klju\u010dev, opisane spodaj.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#SignPKCS1v15\">SignPKCS1v15<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#VerifyPKCS1v15\">VerifyPKCS1v15<\/a> zdaj podpirata SHA-512\/224, SHA-512\/256 in SHA-3.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/rsa#GenerateKey\">GenerateKey<\/a> zdaj uporablja nekoliko druga\u010dno metodo za generacijo privatne eksponente (Karmichlova funkcija namesto Eulerjeve funkcije). Redke aplikacije, ki zunaj ustvarjajo klju\u010de le iz pra\u0161tevil, lahko ustvarijo razli\u010dne, vendar zdru\u017eljive rezultate.<\/p>\n<p><\/noindex> <\/p>\n<p>Operacije nad javnimi in privatnimi klju\u010di so zdaj do dvakrat hitrej\u0161e 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>: vrednost, vrnjena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha1#New\">sha1.New<\/a> zdaj prav tako implementira vmesnik <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>: vrednosti, vrnjene <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New\">sha256.New<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha256#New224\">sha256.New224<\/a> zdaj prav tako implementirata vmesnik <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>: vrednosti, vrnjene <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> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sha512#New512_256\">sha512.New512_256<\/a>, zdaj prav tako implementira vmesnik <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>Nova funkcija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#WithDataIndependentTiming\">WithDataIndependentTiming<\/a> omogo\u010da uporabniku izvajanje funkcije z vklju\u010denimi funkcijami, specifi\u010dnimi za arhitekturo, ki zagotavljajo nespremenljivost dolo\u010denih navodil glede na \u010das vrednosti podatkov. To se lahko uporabi za zagotovitev, da koda, ustvarjena za delo v konstantnem \u010dasu, ni bila optimizirana s funkcijami procesorskega nivoja na na\u010din, da deluje v spremenljivem \u010dasu. Trenutno WithDataIndependentTiming uporablja bit PSTATE.DIT na arm64 in ne po\u010dne ni\u010desar na vseh drugih arhitekturah. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">Nastavitev GODEBUG<\/a> dataindependenttiming=1 aktivira na\u010din DIT za celotno Go aplikacijo.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Izlaz <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/subtle#XORBytes\">XORBytes<\/a> mora biti v celoti ali nikakor prekrivno z vhodom. Prej\u0161nje vedenje je bilo neodvisno v nasprotnem primeru, zdaj pa bo XORBytes spro\u017eil paniko.<\/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 stre\u017enik zdaj podpira Encrypted Client Hello (ECH). To mo\u017enost lahko omogo\u010dite z izpolnjevanjem polja <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.EncryptedClientHelloKeys\">Config.EncryptedClientHelloKeys<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nov post-kvantni mehanizem izmenjave klju\u010dev <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#X25519MLKEM768\">X25519MLKEM768<\/a> zdaj je podprt in vklju\u010den privzeto, ko <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\">Nastavitev GODEBUG<\/a> tlsmlkem=0 vrne privzeto.<\/p>\n<p><\/noindex> <\/p>\n<p>Podpora za eksperimentalno izmenjavo klju\u010dev X25519Kyber768Draft00 je bila odstranjena.<\/p>\n<p> <noindex><\/p>\n<p>Zaporedje izmenjave klju\u010dev se zdaj obravnava v celoti s paketom crypto\/tls. Zaporedje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#Config.CurvePreferences\">Config.CurvePreferences<\/a> zdaj je ignorirano, vsebina pa se uporablja le za dolo\u010ditev, katere izmenjave klju\u010dev vklju\u010diti, ko je polje izpolnjeno.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Novo polje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/tls#ClientHelloInfo.Extensions\">ClientHelloInfo.Extensions<\/a> na\u0161teje seznam identifikatorjev raz\u0161iritev, prejetih v sporo\u010dilu Client Hello. To je lahko koristno za sledenje prstnim odtisom TLS strank.<\/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\">Nastavitev GODEBUG<\/a> x509sha1 je bil odstranjen. <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certficicate.Verify<\/a> ve\u010d ne podpira podpisov, temelje\u010dih na SHA-1.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OID<\/a> zdaj implementira vmesnike <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">encoding.TextAppender<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Privzeto polje politik certifikatov je bilo spremenjeno iz <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 raz\u010dlenjevanju certifikatov bosta obe polji izpolnjeni, vendar se bodo pri ustvarjanju politike certifikatov upo\u0161tevala iz polja Certificate.Policies namesto Certificate.PolicyIdentifiers. Ta sprememba se lahko vrne <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">z nastavitvijo 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> zdaj bo generiral serijsko \u0161tevilko z uporabo metode, skladne z RFC 5280, pri posredovanju predloge s poljem <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.SerialNumber\">Certificate.SerialNumber<\/a> nil, namesto, da bi se ustavil.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#Certificate.Verify\">Certificate.Verify<\/a> zdaj podpira potrjevanje politike, kot je dolo\u010deno v RFC 5280 in RFC 9618. Novo polje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#VerifyOptions.CertificatePolicies\">VerifyOptions.CertificatePolicies<\/a> lahko je nastavljeno na sprejemljiv nabor politik <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#OID\">OIDs<\/a>. Samo verige certifikatov z veljavnimi politikami bodo vrnjenje iz <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> sedaj vrne napako namesto nepravilne ekstrakcije RSA klju\u010da. (<a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#MarshalPKCS1PrivateKey\">MarshalPKCS1PrivateKey<\/a> ni vrnil napake in njegovo vedenje pri nepravilnih klju\u010dih ostaja nedolo\u010deno.)<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS1PrivateKey\">ParsePKCS1PrivateKey<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/crypto\/x509#ParsePKCS8PrivateKey\">ParsePKCS8PrivateKey<\/a> sedaj uporablja in validira kodirane vrednosti CRT, zato lahko zavrnejo nepravilne RSA klju\u010de, ki so bili prej sprejeti. Uporaba <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">nastavitve GODEBUG<\/a> x509rsacrt=0 se vrne na ponovno izra\u010dunavanje vrednosti CRT.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\/\">debug\/elf<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf\">debug\/elf<\/a> dodaja podporo za obdelavo dinami\u010dnih razli\u010dic simbolov v dinami\u010dnih ELF datotekah (Executable and Linkable Format). Nova metoda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersions\">File.DynamicVersions<\/a> vrne seznam dinami\u010dnih razli\u010dic, opredeljenih v ELF datoteki. Nova metoda <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#File.DynamicVersionNeeds\">File.DynamicVersionNeeds<\/a> vrne seznam dinami\u010dnih razli\u010dic, potrebnih za to ELF datoteko, ki so opredeljene v drugih ELF objektih. Nazadnje, nova polja <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.HasVersion<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/debug\/elf#Symbol\">Symbol.VersionIndex<\/a> nakazujejo razli\u010dico simbola.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/\">encoding<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Dva nova vmesnika <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextAppender\">TextAppender<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">BinaryAppender<\/a> sta bila uvedena za dodajanje besedilne ali binarne predstavitve objekta v rezino bajtov. Ta vmesnika zagotavljata enako funkcionalnost kot <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#TextMarshaler\">TextMarshaler<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryMarshaler\">BinaryMarshaler<\/a>, vendar namesto da bi vsakokrat dodelila novo rezino, dodajata podatke neposredno v obstoje\u010do rezino. Ta vmesnika sta zdaj implementirana z vrstami standardne knji\u017enice, ki \u017ee implementirajo TextMarshaler in\/ali 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 gradnji polja strukture z novo mo\u017enostjo omitzero bo polje v strukturi izpu\u0161\u010deno, \u010de je njegova vrednost ni\u010d. \u010ce ima tip polja metodo IsZero() bool, se bo ta uporabila za dolo\u010ditev, ali je vrednost ni\u010d. Druga\u010de bo vrednost ni\u010d, \u010de je <a rel=\"nofollow\" href=\"https:\/\/go.dev\/ref\/spec#The_zero_value\">ni\u010delna vrednost za njegov tip<\/a>. Oznaka polja omitzero je bolj \u010dista in manj nagnjena k napakam kot omitempty, kadar je namen izpustiti ni\u010delne vrednosti. Zlasti, v nasprotju z omitempty, omitzero izpu\u0161\u010da ni\u010delne <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/time#Time\">time.Time<\/a> vrednosti, kar je pogost vir te\u017eav.<\/p>\n<p><\/noindex> <\/p>\n<p>\u010ce sta oboje omitempty in omitzero navedena, bo polje izpu\u0161\u010deno, \u010de je vrednost prazna ali ni\u010delna (ali takoj skupaj).<\/p>\n<p> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding\/json#UnmarshalTypeError.Field\">UnmarshalTypeError.Field<\/a> sedaj vklju\u010duje vgrajene strukture za zagotavljanje bolj podrobnih sporo\u010dil o napakah.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/go\/types\/\">go\/types<\/a><\/h4>\n<p>Vse strukture podatkov go\/types, ki razkrivajo zaporedja pare metod, kot sta Len() int in At(int) T, zdaj vklju\u010dujejo tudi metode, ki vra\u010dajo iteracije, kar poenostavi kodo, podobno temu:<\/p>\n<p> params := fn.Type.(*types.Signature).Params() for i := 0; i &lt; params.Len(); i++ {   use(params.At(i)) }   <\/p>\n<p>Za to:<\/p>\n<p> for param := range fn.Signature().Params().Variables() {   use(param) }   <noindex><\/p>\n<p>Metode: <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>: vrednost, vrnjena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/adler32#New\">Nov<\/a>, zdaj tudi implementira vmesnik <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>: vrednosti, vrnjene <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#New\">Nov<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc32#NewIEEE\">NewIEEE<\/a>, zdaj prav tako implementira vmesnik <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>: vrednost, vrnjena <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/crc64#New\">Nov<\/a>, zdaj tudi implementira vmesnik <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>: vrednosti, vrnjene <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> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/fnv#New128a\">New128a<\/a>, zdaj prav tako implementira vmesnik <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>: nove funkcije <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#Comparable\">Comparable<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/hash\/maphash#WriteComparable\">WriteComparable<\/a> lahko izra\u010dunajo hash katere koli vrednosti, ki jo je mogo\u010de primerjati. To omogo\u010da hashiranje \u010desarkoli, kar se lahko uporablja kot klju\u010d slovarja 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>Nova <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#DiscardHandler\">DiscardHandler<\/a> je obdelovalec, ki nikoli ni vklju\u010den in vedno zavr\u017ee svoj izhod.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#Level\">Level<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/log\/slog#LevelVar\">LevelVar<\/a> zdaj uresni\u010dujejo vmesnik <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> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/big#Rat\">Rat<\/a> zdaj uresni\u010dujejo vmesnik <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>: pozivi k zastareli vrhnji funkciji <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand#Seed\">Seed<\/a> nimajo ve\u010d nobenega u\u010dinka. Za obnovitev starega vedenja lahko uporabite <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/godebug\">pode\u0161avanja GODEBUG<\/a> randseednop=0. Ve\u010d konteksta v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/67273\">predlogu 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> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/math\/rand\/v2#PCG\">PCG<\/a> zdaj uresni\u010dujejo vmesnik <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> zdaj privzeto uporablja MPTCP na sistemih, kjer je to podprto (zaenkrat samo Linux).<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net#IP\">IP<\/a> zdaj uresni\u010duje vmesnik <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>Spremenila se je omejitev <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> na prejeti informacijski odziv 1xx kot odgovor na zahtevo. Prej je to ustavilo zahtevo in vrnilo napako po prejemu ve\u010d kot 5 odzivov 1xx. Zdaj to vrne napako le, \u010de je skupna velikost vseh odzivov 1xx ve\u010dja od nastavitve konfiguracije <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.MaxResponseHeaderBytes\">Transport.MaxResponseHeaderBytes<\/a>.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Poleg tega, ko ima zahteva priklju\u010dek za sledenje <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http\/httptrace#ClientTrace.Got1xxResponse\">net\/http\/httptrace.ClientTrace.Got1xxResponse<\/a>, zdaj ni omejitve na skupno \u0161tevilo odzivov 1xx. Priklju\u010dek Got1xxResponse lahko vrne napako za ustavitev zahteve.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport\">Transport<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server\">Stre\u017enik<\/a> zdaj imajo polje HTTP2, ki omogo\u010da konfiguracijo nastavitev protokola HTTP\/2.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Nova polja <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> ponujajo preprost na\u010din za konfiguracijo, katere protokole HTTP stre\u017enik ali odjemalec uporablja.<\/p>\n<p><\/noindex> <\/p>\n<p>Stre\u017enik in odjemalec lahko postavita podporo za ne\u0161ifrirane povezave HTTP\/2.<\/p>\n<p> <noindex><\/p>\n<p>Ko <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Server.Protocols\">Server.Protocols<\/a> vsebuje UnencrypterHTTP2; stre\u017enik bo sprejel povezave HTTP\/2 na ne\u0161ifriranih vratih. Stre\u017enik lahko sprejme tako HTTP\/1 kot ne\u0161ifrirani HTTP\/2 na istem pristani\u0161\u010du.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ko <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/http#Transport.Protocols\">Transport.Protocols<\/a> vsebuje UnencryptedHTTP2 in ne vsebuje HTTP1, transport bo uporabljal ne\u0161ifriran HTTP\/2 za naslove <a rel=\"nofollow\" href=\"http:\/\/.\">http:\/\/.<\/a> \u010ce je transport konfiguriran za uporabo tako HTTP\/1 kot nezakryptiranega HTTP\/2, bo uporabljal HTTP\/1.<\/p>\n<p><\/noindex> <\/p>\n<p>Podpora nezakryptiranemu HTTP\/2 uporablja 'HTTP\/2 s predznanjem' (RFC 9113, oddelek 3.3). Zastareli naslov 'Upgrade: h2c' ni podprt.<\/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\">Naslov<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#AddrPort\">Naslov in vrata<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/net\/netip#Prefix\">Prefiks<\/a> sedaj implementirajo vmesnike <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> in <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> zdaj prav tako implementira vmesnik <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a>.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user\/\">os\/user<\/a><\/h4>\n<p> <noindex><\/p>\n<p>V sistemu Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Trenutni<\/a> sedaj lahko uporabimo v Windows Nano Serverju. Implementacija je bila posodobljena, da se izogne uporabi funkcij iz knji\u017enice NetApi32, ki v Nano Serverju ni na voljo.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V sistemu Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Trenutni<\/a>, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Lookup\">Iskanje<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#LookupId\">IskId<\/a> sedaj podpirajo naslednje vgrajene uporabni\u0161ke storitvene ra\u010dune:<\/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>V sistemu Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Trenutni<\/a> je bila znatno hitrej\u0161a, ko je trenutni uporabnik povezan z po\u010dasnim domenom, kar je pogost primer za mnoge podjetni\u0161ke uporabnike. Nova hitrost implementacije je zdaj v okviru milisekund, v primerjavi s prej\u0161njo, ki je lahko trajala ve\u010d sekund, celo minut, do zaklju\u010dka.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>V sistemu Windows <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/os\/user#Current\">Trenutni<\/a> sedaj vra\u010da uporabnika lastnika procesa, ko trenutni niti predstavlja drugega uporabnika. Prej je to vra\u010dalo napako.<\/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> zdaj uresni\u010duje vmesnik <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> je zdaj razgla\u0161ena za zastarelo. V novem kodeksu se priporo\u010da uporabo sistemske poti za dolo\u010ditev binarne datoteke 'go', ter uporabo 'go env GOROOT' za dolo\u010ditev GOROOT.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\/\">strings<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Package <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings\">strings<\/a> doda ve\u010d funkcij za delo z iteratorji:<\/p>\n<p><\/noindex> <\/p>\n<ul>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#Lines\">Lines<\/a> vra\u010da iterator, ki je razdeljen po novih vrsticah v nizu.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitSeq\">SplitSeq<\/a> vra\u010da iterator po vseh podnizih niza, lo\u010denih s separatorjem.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#SplitAfterSeq\">SplitAfterSeq<\/a> vra\u010da iterator po podnizih niza, razdeljenih po vsakem pojavu separatorja.<\/li>\n<li><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/strings#FieldsSeq\">FieldsSeq<\/a> vra\u010da iterator po podnizih niza okoli zaporedij presledkov, kot je opredeljeno.<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> vra\u010da iterator po podnizih niza okoli zaporedij kodnih to\u010dk unicode, ki izpolnjujejo predikat.<\/li>\n<\/ul>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync\/\">sync<\/a><\/h4>\n<p> <noindex><\/p>\n<p>Implementacija <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/sync#Map\">sync.Map<\/a> je bila spremenjena, kar izbolj\u0161uje zmogljivost, zlasti pri spremembah slovarja. Na primer, manj verjetno je, da pride do konkurence med spremembami nepovezanih mno\u017eic v velikih slovarjih, in ni ve\u010d potrebno \u010dasovno obdobje za dosego nizke konkurence pri obremenitvi slovarja.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>\u010ce naletite na kakr\u0161ne koli te\u017eave, med gradnjo nastavite GOEXPERIMENT=nosynchashtriemap, da se vrnete na staro implementacijo, in prosim, <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/new\">izpolnite obrazec za te\u017eavo<\/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>Novi na\u010dini <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Context\">T.Context<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Context\">B.Context<\/a> vrne kontekst, ki se prekli\u010de po zaklju\u010dku testa in pred izvajanjem funkcij za \u010di\u0161\u010denje testa.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Novi na\u010dini <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#T.Chdir\">T.Chdir<\/a> in <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/testing#B.Chdir\">B.Chdir<\/a> lahko se uporablja za spremembo delovne mape za \u010das trajanja testa ali merjenja.<\/p>\n<p><\/noindex> <\/p>\n<h4><a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/text\/template\/\">text\/template<\/a><\/h4>\n<p>Predloge zdaj podpirajo range-over-func in 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\">Vreme<\/a> zdaj implementira vmesnike <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/encoding#BinaryAppender\">encoding.BinaryAppender<\/a> in <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>Kot je bilo <a rel=\"nofollow\" href=\"https:\/\/go.dev\/doc\/go1.23#linux\">obve\u0161\u010deno<\/a> v opombah o izpustu Go 1.23, Go 1.24 zahteva jedro Linuxa razli\u010dice 3.2 ali novej\u0161o.<\/p>\n<p><\/noindex> <\/p>\n<h3>Darwin<\/h3>\n<p>Go 1.24 je zadnji izid, ki bo deloval na macOS 11 Big Sur. Go 1.25 bo zahteval macOS 12 Monterey ali novej\u0161i.<\/p>\n<h3>WebAssembly<\/h3>\n<p>Direktiva prevajalnika go:wasmexport je bila dodana programom Go za izvoz funkcij v gostitelja WebAssembly.<\/p>\n<p> <noindex><\/p>\n<p>V WebAssembly System Interface Preview 1 (GOOS=wasip1 GOARCH=wasm) Go 1.24 podpira sestavljanje programa Go kot <a rel=\"nofollow\" href=\"https:\/\/github.com\/WebAssembly\/WASI\/blob\/63a46f61052a21bfab75a76558485cf097c0dbba\/legacy\/application-abi.md#current-unstable-abi\">reactor\/library<\/a> z navedbo zastavice za sestavljanje -buildmode=c-shared.<\/p>\n<p><\/noindex> <noindex><\/p>\n<p>Ve\u010d tipov je zdaj dovoljeno kot tip argumenta ali rezultata za funkcije go:wasmimport. Zlasti so dovoljeni bool, string, uintptr in kazalci na dolo\u010dene tipe (podrobnosti so na voljo v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/pkg\/cmd\/compile#hdr-WebAssembly_Directives\">dokumenti<\/a>), skupaj s 32-bitnimi in 64-bitnimi tipi celih \u0161tevil in plavajo\u010dih \u0161tevil, ter unsafe.Pointer, ki so \u017ee dovoljeni. Ti tipi so prav tako dovoljeni kot tipi argumenta ali rezultata za funkcije go:wasmexport.<\/p>\n<p><\/noindex> <\/p>\n<p>Podporne datoteke za WebAssembly so bile premaknjene v lib\/wasm iz misc\/wasm.<\/p>\n<p>Izvirna velikost pomnilnika je bila znatno zmanj\u0161ana, zlasti za majhne aplikacije WebAssembly.<\/p>\n<h3>Windows<\/h3>\n<p> <noindex><\/p>\n<p>32-bitna razli\u010dica za windows\/arm (GOOS=windows GOARCH=arm) je bila ozna\u010dena kot pokvarjena. Podrobnosti v <a rel=\"nofollow\" href=\"https:\/\/go.dev\/issue\/70705\">#70705<\/a><\/p>\n<p><\/noindex><\/p>\n<p>Izvor: <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\/sl\/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=\"sl_SI\" \/>\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\/sl\/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\/sl\/blog\/news\/go-1-24","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/121950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=121950"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/121950\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/121951"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=121950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=121950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=121950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}