Go тілінің жаңа шығарылымы, 1.24 нұсқасы алты айдан кейін шығады 1.23 өтіңіз. Өзгерістердің көпшілігі құралдар тізбегін, орындау уақытын және кітапханаларды жүзеге асыруда. Әдеттегідей, шығарылым қамтамасыз етеді үйлесімділік туралы уәде Go 1. Тіл дизайнерлері барлық дерлік Go бағдарламалары бұрынғыдай компиляциялауды және іске қосуды жалғастырады деп күтеді.
Тілдегі өзгерістер
Go 1.24 енді толығымен қолдайды жалпы түрдегі бүркеншік аттар: түрдің бүркеншік атын жарияланған түр ретінде параметрлеуге болады. Толығырақ тіл ерекшеліктері. Әзірге бұл мүмкіндікті GOEXPERIMENT=noaliastypeparams орнату арқылы өшіруге болады; Дегенмен, aliastypeparams опциясы Go 1.25 нұсқасында жойылады.
Құралдар
Өту командасы
Go модульдері енді go.mod ішіндегі құрал директивасын пайдаланып орындалатын тәуелділіктерді бақылай алады. Бұл әдетте “tools.go” деп аталатын файлға бос импорт ретінде құралдарды қосудың алдыңғы уақытша шешімі қажеттілігін жояды. Go құралы пәрмені енді Go бағдарламасымен бірге келетін құралдарға қосымша осы құралдарды іске қоса алады. Қосымша ақпаратты мына жерден табуға болады құжаттама.
Go get үшін жаңа -tool жалауы талап директиваларды қосумен қатар көрсетілген бумалар үшін ағымдағы модульге құрал директиваларын қосуды тудырады.
жаңа мета-үлгі құралы ағымдағы модульдегі барлық құралдарға сілтеме жасайды. Бұл олардың барлығын go get құралы арқылы жаңарту немесе go install құралы арқылы GOBIN каталогына орнату үшін пайдаланылуы мүмкін.
Go run арқылы жасалған орындалатын файлдар және жаңа go құралы әрекеті енді Go құрастыру кэшінде кэштеледі. Бұл кэштің ұлғаюына байланысты қайталанатын іске қосуға мүмкіндік береді. #69290.
Go build and go install пәрмендері енді стандартты шығыста құрылымдық JSON шығысы ретінде құрастыру шығысы мен қателерді есептейтін -json жалауын қабылдайды. Пішім мәліметтерін go help buildjson бөлімінде көруге болады.
Сонымен қатар, go test -json енді JSON сынақ нәтижесімен араласқан JSON ішіндегі нәтижені және құрастыру қателерін хабарлайды. Оларды жаңа Әрекет түрлерімен ажыратуға болады, бірақ егер олар тестілік интеграция жүйесінде ақаулық тудырса, құрастырудың мәтіндік шығысына қайта оралуға болады: GODEBUG орнату gotestjsonbuildtext=1.
Жаңа GOAUTH орта айнымалысы жеке модульді тартуға рұқсат берудің икемді жолын қамтамасыз етеді. Мәліметтерді go help goauth бөлімінен көре аласыз.
go build пәрмені енді орнатылды негізгі модуль нұсқасы тегке және/немесе нұсқаны басқару міндеттемесіне негізделген құрастырылған екілік файлда. Қабылданбаған өзгерістер болса, +dirty жұрнағы қосылады. -buildvcs=false жалауын екілік жүйеден нұсқаны басқару ақпаратын алып тастау үшін пайдалануға болады.
Жаңа GODEBUG орнату toolchaintrace=1 енді go пәрменінде құралдар тізбегін таңдау процесін қадағалау үшін пайдалануға болады.
Cgo
Cgo жұмыс уақыты өнімділігін жақсарту үшін C функцияларына арналған жаңа аннотацияларды қолдайды. #cgo noescape cFunctionName компиляторға C функциясына берілген жадтың cFunctionName бос емес екенін айтады. #cgo nocallback cFunctionName компиляторға C функциясы cFunctionName ешбір Go функцияларын кері шақырмайтынын айтады. Қосымша ақпаратты мына жерден табуға болады cgo құжаттамасы.
Cgo қазіргі уақытта бірнеше үйлесімсіз мәлімдемелері бар C функциясына шақыруларды құрастырудан бас тартады. Мысалы, егер f void f(int) және void f(double) ретінде жарияланса, cgo жарамсыз шақыру ретін f(0) жасаудың орнына қате туралы хабарлайды. Бұл шығарылымдағы жаңалық әртүрлі файлдарда үйлеспейтін мәлімдемелер пайда болған кезде осы қате жағдайын анықтау жақсартылған. #67699.
Objdump
Objdump құралы енді 64 биттік LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) және S390X (GOARCH=s390x) жүйелерінде бөлшектеуге қолдау көрсетеді.
Vet
Жаңа сынақтар анализаторы қате аттар, жарамсыз қолтаңбалар немесе жоқ идентификаторларды құжаттайтын мысалдар сияқты сынақ жиынтықтарындағы сынақ, fuzzer, эталондық және мысал мәлімдемелеріндегі жалпы қателерді хабарлайды. Осы қателердің кейбірі сынақтардың сәтсіз аяқталуына әкелуі мүмкін.
Бар printf талдаушысы енді fmt.Printf(s) пішімінің шақырулары үшін диагностиканы хабарлайды, мұнда s басқа аргументтері жоқ тұрақты емес пішім жолы болып табылады. Мұндай шақырулар әрдайым дерлік қате болып табылады, өйткені s мәні % таңбасын қамтуы мүмкін; орнына fmt.Print пайдаланыңыз. 60529. Бұл тексеру бұрыннан бар кодтағы нәрселерді табуға бейім, сондықтан Go 1.24 құралдар тізбегін жаңарту кезінде ұзақ интеграциялық үзілістерді тудырмау үшін тіл нұсқасы (go.mod файлының go директивасында немесе `//go:build` түсініктемелерінде көрсетілген) кем дегенде Go 1.24 болғанда ғана қолданылады.
Бар құрастыру тегі анализаторы енді қате құрастыру тегі болған кезде диагностиканы хабарлайды ескі нұсқаны құру шектеуі //go:build директивасына өтіңіз. Мысалы, //go:build go1.23.1 нүктенің шығарылымына сілтеме жасайды; орнына //go:build go1.23 пайдаланыңыз. #64127.
Қолданыстағы көшірме құлыптау анализаторы енді айнымалы үштік «for» циклінде жарияланған кезде диагностиканы хабарлайды, мысалы for i := iter(); орындалды(i); i = келесі(i) { … }, синхрондау.Мутекс сияқты синхрондау.Құлыптауды қамтиды. 1.22 өтіңіз алдыңғы итерацияның мәндерін көшіре отырып, әрбір итерация үшін жаңа айнымалы жасау үшін осындай циклдардың әрекетін өзгертті; Бұл көшіру құлыптар үшін қауіпсіз емес. #66387.
GOCACHEPROG
Ішкі cmd/go екілік және сынақ кэштеу механизмін енді cmd/go құралы мен GOCACHEPROG ортасының айнымалысы арқылы аталған еншілес процесс арасында JSON протоколын іске асыратын еншілес процестер арқылы жүзеге асыруға болады. Бұрын бұл GOEXPERIMENT үшін болатын. Хаттаманың егжей-тегжейлерін мына жерден көруге болады құжаттама.
Аяқтау уақыты
Орындау уақытының өнімділігін арттырудың бірнеше нұсқасы орталық процессордың үстеме шығынын репрезентативті эталондар жинағында 2-3%-ға азайтты. Нәтижелер қолданбаға байланысты өзгеруі мүмкін. Бұл жақсартуларға негізделген жаңа кірістірілген картаны енгізу кіреді Швед үстелдері, кішігірім нысан жадының тиімдірек бөлінуі және мутекстің жаңа ішкі орындау уақыты.
Жаңа кірістірілген картаны іске асыруды және жаңа ішкі орындау уақытының мутексін сәйкесінше құрастыру уақытында GOEXPERIMENT=noswissmap және GOEXPERIMENT=nospinbitmutex орнату арқылы өшіруге болады.
Құрастырушы
Компилятор cgo арқылы жасалған қабылдағыш түрлерімен жаңа әдістерді анықтауға қазірдің өзінде тыйым салған, бірақ түр бүркеншік аты арқылы бұл шектеуді айналып өтуге болады. Go 1.24 енді қабылдағышы тікелей немесе жанама түрде (түр бүркеншік аты арқылы) cgo-генерацияланған түрін белгілесе, қате туралы хабарлайды.
Сілтемеші
Байланыстырушы енді әдепкі бойынша ELF платформаларында GNU құрастыру идентификаторын (ELF жазбасы NT_GNU_BUILD_ID) және macOS жүйесінде UUID (Mach-O жүктеу пәрмені LC_UUID) жасайды. Құрастыру идентификаторы немесе UUID Go құрастыру идентификаторынан алынған. Мұны -B none сілтеме жалаушасымен өшіруге немесе пайдаланушы көрсеткен он алтылық мәні бар -B 0xNNNN сілтеме жалаушасымен қайта анықтауға болады.
Науқан
Айтылғандай Go 1.22 шығарылым жазбалары, Go 1.24 енді орнату үшін Go 1.22.6 немесе одан кейінгі нұсқасын қажет етеді. Әзірлеушілер Go 1.26 нұсқасын шығару үшін Go 1.24 немесе одан кейінгі нұсқасының нүктелік шығарылымын қажет етеді деп күтеді.
Стандартты кітапхана
Каталогпен шектелген файлдық жүйеге кіру
Жаңа түрі os.root Белгілі бір каталог ішінде файлдық жүйе операцияларын орындау мүмкіндігін береді.
функция os.OpenRoot каталогты ашады және қайтарады os.root. Әдістері қосулы os.root сол каталогта жұмыс істейді және жолдарға каталогтан тыс орындарға, соның ішінде каталогтан тыс символдық сілтемелерден кейін келетіндерге сілтеме жасауға рұқсат бермеңіз. os.Root жүйесіндегі әдістер OS бумасында қолжетімді файлдық жүйе операцияларының көпшілігін көрсетеді, соның ішінде, мысалы, os.Root.Open, os.Root.Жасау, os.Root.Mkdir и os.Root.Stat.
Жаңа эталондық мүмкіндік
Эталондар енді жылдамырақ, қатеге бейім әдісті пайдалана алады тестілеу.B.Loop bN сияқты диапазон үшін bN қатысты типтік цикл құрылымдарының орнына for b.Loop() { … } сияқты эталонды қайталау Бұл екі маңызды артықшылықты ұсынады:
- Эталондық функция әр -count үшін дәл бір рет орындалады, сондықтан қымбат орнату және тазалау қадамдары тек бір рет орындалады.
- Функцияны шақыру параметрлері мен нәтижелері компилятордың цикл денесін толығымен оңтайландыруына жол бермей, әрекет етеді.
Жақсартылған аяқтаушылар
Жаңа мүмкіндік орындау уақыты.AddCleanup қарағанда икемді, тиімдірек және қателікке бейімді аяқтау механизмі болып табылады орындау уақыты.SetFinalizer. AddCleanup тазалау функциясын нысан қолжетімсіз болған кезде іске қосылатын нысанға қосады. Дегенмен, SetFinalizer-тен айырмашылығы, бірнеше тазалауды бір нысанға қосуға болады, тазалауды ішкі көрсеткіштерге қосуға болады, тазалау әдетте нысандар цикл жасаған кезде ағып кетуді тудырмайды және тазалаулар нысанның немесе ол көрсететін нысандардың орнын ауыстыруды кешіктірмейді. Жаңа код SetFinalizer орнына AddCleanup таңдауы керек.
Жаңа әлсіз пакет
Жаңа пакет әлсіз әлсіз көрсеткіштерді береді.
Әлсіз көрсеткіштер - мәндерді салыстыруға арналған әлсіз сөздіктер, бумамен қамтылмаған кез келген нәрсе үшін канонизациялау сөздіктері сияқты жадты үнемдейтін құрылымдарды жасауға арналған төмен деңгейлі примитив. Бірегей, және кэштердің әртүрлі түрлері. Осы пайдалану жағдайларын қолдау үшін бұл шығарылым да қамтамасыз етеді орындау уақыты.AddCleanup и maphash.Салыстырмалы.
Жаңа крипто/mlkem пакеті
Жаңа пакет крипто/млкем ML-KEM-768 және ML-KEM-1024 жүзеге асырады.
ML-KEM — бұрын Kyber ретінде белгілі және көрсетілген кванттық кілт алмасу механизмі FIPS 203.
Жаңа пакеттер crypto/hkdf, crypto/pbkdf2 және crypto/sha3
Жаңа пакет крипто/hkdf тармағында анықталғандай HMAC негізіндегі «Шығару және кеңейту» кілтті шығару функциясын HKDF жүзеге асырады. RFC 5869.
Жаңа пакет crypto/pbkdf2 тармағында анықталғандай PBKDF2 құпия сөзге негізделген кілт шығару функциясын жүзеге асырады RFC 8018.
Жаңа пакет крипто/sha3 тармағында анықталғандай SHA-3 хэш функциясын және SHAKE және cSHAKE кеңейтілетін шығыс функцияларын жүзеге асырады. FIPS 202.
Барлық үш пакет бұрыннан бар golang.org/x/crypto/… пакеттеріне негізделген.
FIPS 140-3 сәйкестігі
Бұл шығарылым кіреді FIPS 140-3 сәйкестігін қамтамасыз ететін механизмдердің жаңа жиынтығы.
Go криптографиялық модулі - FIPS 140-3 бекітілген алгоритмдерді енгізу үшін мөлдір түрде пайдаланылатын ішкі стандартты кітапхана бумаларының жиынтығы. Қолданбалар бекітілген алгоритмдер үшін Go криптографиялық модулін пайдалану үшін өзгертулерді қажет етпейді.
Жаңа орта айнымалысы GOFIPS140 құрастыруда пайдалану үшін Go криптографиялық модулінің нұсқасын таңдау үшін пайдаланылуы мүмкін. Жаңа GODEBUG орнату fips140 FIPS 140-3 режимін орындау уақытында қосу үшін пайдаланылуы мүмкін.
Go 1.24 қазіргі уақытта CMVP аккредиттелген зертханамен сыналған Go криптографиялық модулінің v1.0.0 нұсқасын қамтиды.
Жаңа эксперименттік пакетті сынау/синктест
Жаңа эксперименттік пакет сынау/синктест Бір мезгілде кодты сынауға қолдау көрсетеді.
- функция synctest.run оқшауланған «көпіршікте» горутиндер тобын басқарады. Пакет функциясының көпіршігінде уақыт жалған сағаттармен жұмыс істейді.
- Функциялар synctest.күтіңіз барлық горутиндер ағымдағы көпіршікте блокталғанша күтіңіз.
Толық ақпаратты пакеттік құжаттамадан табуға болады.
Synctest бумасы эксперименттік болып табылады және GOEXPERIMENT=synctest параметрін орнату арқылы қосылуы керек. API пакеті болашақ шығарылымдарда өзгеруі мүмкін. IN #67434 Толық мәліметтерді көріп, кері байланыс бере аласыз.
Кітапханадағы шағын өзгерістер
мұрағаты
Archive/zip және archive/tar ішіндегі (*Writer.AddFS) іске асырулары енді бос каталог үшін каталог тақырыбын жазады.
байттар
Пакет байттар итераторлармен жұмыс істейтін бірнеше функцияларды қосады:
- Сызықтар Итераторды байт бөлігіндегі жаңа жолдан бөлінген жолдар арқылы қайтарады.
- SplitSeq бөлгішпен бөлінген байт кесіндісінің барлық ішкі бөліктеріне иераторды қайтарады.
- SplitAfterSeq бөлгішті әрбір пайда болғаннан кейін бөлінген байт кесіндісінің ішкі бөліктерінің үстінен итераторды қайтарады.
- FieldsSeq анықталғандай бос таңбалар тізбегі айналасындағы байт кесіндісінің ішкі бөліктерінің үстінен итераторды қайтарады unicode.IsSpace
- FieldsFuncSeq предикатты қанағаттандыратын Юникод код нүктелерінің тізбегі айналасындағы байт кесіндісінің ішкі бөліктерінің үстінен итераторды қайтарады.
крипто/aes
Қайтарылатын мән NewChipher енді NewCTR, NewGCM, NewCBCEncrypter және NewCBCDecrypter әдістерін қолданбайды. Бұл әдістер құжатталмаған және барлық архитектурада қол жетімді емес. Енді мағынасы Блок сәйкес функцияларға тікелей берілуі керек крипто/шифр. Қазіргі уақытта крипто/шифр бұл әдістерді стандартты кітапхана қолдамаса да, Блок мәндерінде әлі де тексереді.
крипто/шифр
Жаңа мүмкіндік NewGCMWithRandomNonce қайтарады AEAD, ол Seal кезінде кездейсоқ бір ретті генерациялау және оны шифр мәтініне қосу арқылы AES-GCM іске асырады.
Реализация Stream, қайтарылды ЖаңаCTR бірге қолданғанда крипто/aes енді amd64 және arm64-те бірнеше есе жылдамырақ.
ЖаңаOFB, NewCFBEncrypter и NewCFBDdecrypter қазір ескірген деп жарияланды. OFB және CFB режимдері аутентификацияланбаған, бұл әдетте белсенді шабуылдарға ашық мәтінді өңдеуге және қалпына келтіруге мүмкіндік береді. Қолданбаларды пайдалану ұсынылады AEAD орнына. Аутентификацияланбаған режим болса Stream қажет, қолдануға болады ЖаңаCTR орнына.
крипто/ecdsa
PrivateKey.Sign сәйкес енді детерминирленген қолтаңбаны жасайды RFC 6979, егер кездейсоқтық көзі нөл болса.
крипто/md5
Қайтарылатын мән md5.new, енді интерфейсті де жүзеге асырады кодтау.binaryappender.
крипто/ранд
функция оқу енді сәтсіздікке кепілдік береді. Егер Read оқу кезінде қатеге тап болса оқырман, бағдарлама біржола тоқтатылады. Әдепкі Reader бағдарламасы әрқашан сәтті жұмыс істеу үшін құжатталғанын ескеріңіз, сондықтан бұл өзгеріс тек Reader айнымалысын қайта анықтайтын бағдарламаларға әсер етуі керек. Бір ерекшелік 3.17 нұсқасына дейінгі Linux ядролары болып табылады, мұнда әдепкі Reader әлі де /dev/urandom ашады және сәтсіздікке ұшырауы мүмкін.
Linux 6.11 және одан кейінгі нұсқаларында Reader енді vDSO арқылы get кездейсоқ жүйелік қоңырауды пайдаланады. Бұл әдетте шағын оқулар үшін бірнеше есе жылдамырақ.
OpenBSD Reader бағдарламасында енді arc4random_buf(3) пайдаланады.
Жаңа мүмкіндік мәтін енді криптографиялық қауіпсіз кездейсоқ мәтін жолдарын жасай алады.
крипто/rsa
GenerateKey енді 1024 биттен аз кілт ұзындығы сұралса, қатені қайтарады. Барлық Қол қою, Тексеру, Шифрлау және Шифрды шешу әдістері енді кілт өлшемі 1024 биттен аз болса, қатені қайтарады. Мұндай кілттер қауіпті және оларды пайдалануға болмайды. GODEBUG орнату rsa1024min=0 ескі әрекетті қалпына келтіреді, бірақ Go әзірлеушілері мұны тек қажет болғанда және тек сынақтарда орындауды ұсынады, мысалы, сынақ файлына //go:debug rsa1024min=0 жолын қосу арқылы. Жаңа мысал GenerateKey стандартты 2024 биттік сынақ кілтін пайдалану оңай.
Енді қоңырау шалу қауіпсіз және тиімдірек PrivateKey.Precompute қарай PrivateKey.Validate. Алдын ала есептеу енді жартылай толтырылған жағдайда жылдамырақ Алдын ала есептелген мәндер, мысалы, JSON ішінен кілтті шығару кезінде.
Пакет енді Validate шақырылмаған кезде де жарамсыз кілттерді қабылдамайды және GenerateKey енді бұзылған кездейсоқтық көздері үшін жаңа қателерді қайтара алады. Өрістер Шамалар и Алдын ала есептелген құрылымдар PrivateKey енді кейбір мәндер жоқ болса да пайдаланылады және расталады. Сондай-ақ төменде сипатталған RSA кілттерін талдау және шығару үшін crypto/x509 өзгертулері бар.
SignPKCS1v15 и VerifyPKCS1v15 енді SHA-512/224, SHA-512/256 және SHA-3-ті қолдайды.
GenerateKey енді жеке көрсеткішті жасау үшін сәл басқа әдісті қолданады (Эйлер функциясының орнына Кармайкл функциясы). Кілттерді тек жай сандардан сырттай қалпына келтіретін сирек қолданбалар әртүрлі, бірақ үйлесімді нәтижелерді шығаруы мүмкін.
Ашық және жабық кілттердегі операциялар енді wasm-де екі есеге дейін жылдамырақ.
крипто/ша*
- крипто/sha1: қайтарылатын мән sha1.Жаңа енді интерфейсті де жүзеге асырады кодтау.binaryappender.
- крипто/sha256: мәндер қайтарылды sha256.Жаңа и sha256.New224 енді интерфейсті іске қосыңыз кодтау.binaryappender.
- крипто/sha512: мәндер қайтарылды sha512.Жаңа, sha512.New384, sha512.New512_224 и sha512.New512_256, енді интерфейсті де іске қосыңыз кодтау.binaryappender.
крипто/жұқа
Жаңа мүмкіндік WithDataIndependentTiming пайдаланушыға белгілі бір нұсқаулардың деректер мәнінің уақытына қатысты өзгертілмейтінін қамтамасыз ететін сәулетке тән мүмкіндіктері қосылған функцияны орындауға мүмкіндік береді. Бұл тұрақты уақытта іске қосу үшін жазылған кодтың айнымалы уақытта жұмыс істеуі үшін процессор деңгейіндегі функциялар арқылы оңтайландырылмағанына көз жеткізу үшін пайдаланылуы мүмкін. Қазіргі уақытта WithDataIndependentTiming arm64 жүйесінде PSTATE.DIT битін пайдаланады және барлық басқа архитектураларда ештеңе жасамайды. GODEBUG орнату dataindependenttiming=1 бүкіл Go бағдарламасы үшін DIT режимін қосады.
қорытынды XORBytes кіріспен толығымен немесе мүлдем қабаттасуы керек. Бұрын мінез-құлық басқаша анықталмаған, ал қазір XORBytes дүрбелең тудырады.
крипто/тлс
TLS сервері енді шифрланған клиенттік сәлемдемені (ECH) қолдайды. Бұл мүмкіндікті өрісті толтыру арқылы қосуға болады. Config.EncryptedClientHelloKeys.
Жаңа посткванттық кілт алмасу механизмі X25519MLKEM768 енді қолдау көрсетіледі және әдепкі бойынша қосылған кезде Config.CurvePreferences нөл. GODEBUG орнату tlsmlkem=0 әдепкі мәнді қайтарады.
Эксперименттік X25519Kyber768Draft00 кілт алмасуына қолдау жойылды.
Кілттерді айырбастау тапсырысы енді толығымен crypto/tls пакетімен өңделеді. Тапсырыс беру Config.CurvePreferences енді еленбейді және мазмұн өріс толтырылған кезде қандай кілт алмасуларды қосу керектігін анықтау үшін ғана пайдаланылады.
Жаңа өріс ClientHelloInfo.Extensions Client Hello хабарында алынған кеңейтім идентификаторларының тізімін көрсетеді. Бұл TLS клиенттерінің саусақ ізін алу үшін пайдалы болуы мүмкін.
крипто/x509
GODEBUG орнату x509sha1 жойылды. Сертификаттау. Тексеру енді SHA-1 негізіндегі қолтаңбаларды қолдамайды.
OID енді интерфейстерді жүзеге асырады кодтау.binaryappender и кодтау.TextAppender.
Әдепкі сертификат саясаты өрісі келесіден өзгертілді Certificate.PolicyIdentifiers туралы Сертификат. Саясат. Куәліктерді талдау кезінде екі өріс те толтырылады, бірақ сертификат саясатын жасау кезінде олар Certificate.PolicyIdentifiers орнына Certificate.Policies өрісінен алынады. Бұл өзгерісті қайтаруға болады. GODEBUG орнату x509usepolicies=0.
Сертификат жасау енді үлгі өрісін өту кезінде RFC 5280 үйлесімді әдісін пайдаланып сериялық нөмірді жасайды Сертификаттау. Сериялық нөмір нөл, бұзылудың орнына.
Certificate.Verify енді RFC 5280 және RFC 9618 нұсқаларында анықталғандай саясатты тексеруді қолдайды. Жаңа өріс VerifyOptions.CertificatePolicies саясаттардың қолайлы жинағына орнатуға болады OIDs. Жарамды саясат графиктері бар сертификат тізбектері ғана қайтарылады Certificate.Verify.
MarshalPKCS8PrivateKey енді жарамсыз RSA кілтін шығарып алудың орнына қатені қайтарады. (MarshalPKCS1PrivateKey қате қайтарылмайды және жарамсыз кілттер берілген кезде оның әрекеті анықталмаған болып қалады.)
ParsePKCS1PrivateKey и ParsePKCS8PrivateKey енді кодталған CRT мәндерін пайдаланыңыз және растаңыз, осылайша бұрын қабылданған жарамсыз RSA кілттерін қабылдамауға болады. Қолданылуы GODEBUG параметрлері x509rsacrt=0 CRT мәндерін қайта есептеуге қайтарады.
жөндеу/элф
Пакет жөндеу/элф Динамикалық ELF (Орындалатын және байланыстырылатын пішім) файлдарындағы таңба нұсқаларын өңдеуге қолдауды қосады. Жаңа әдіс File.DynamicVersions ELF файлында анықталған динамикалық нұсқалардың тізімін қайтарады. Жаңа әдіс File.DynamicVersionNeeds Басқа ELF нысандарында анықталған осы ELF файлына қажетті динамикалық нұсқалардың тізімін қайтарады. Соңында, жаңа өрістер Symbol.HasVersion и Symbol.VersionIndex таңбаның нұсқасын көрсетіңіз.
кодтау
Екі жаңа интерфейс TextAppender и BinaryAppender байт кесіндісіне нысанның мәтінін немесе екілік көрінісін қосу үшін енгізілді. Бұл интерфейстер бірдей функционалдылықты қамтамасыз етеді TextMarshaler и BinaryMarshaler, бірақ әр уақытта жаңа бөлікті бөлудің орнына олар деректерді бұрыннан бар кесіндіге тікелей қосады. Бұл интерфейстер қазіргі уақытта TextMarshaler және/немесе BinaryMarshaler іске асыратын стандартты кітапхана түрлерімен жүзеге асырылады.
кодтау/json
Құру кезінде, егер оның мәні нөлге тең болса, құрылым өрісінің тегінде нөлге тең жаңа параметрі бар құрылым өрісі өткізілмейді. Егер өріс түрінде IsZero() bool әдісі болса, ол мәннің нөл екенін анықтау үшін пайдаланылады. Әйтпесе, мән нөлге тең болады оның түрі үшін нөлдік мән. Нөлдік мәндерді өткізбеу ниеті болған кезде, өткізіп жіберу өрісінің тегі тазарақ және қатеге бейім емес. Атап айтқанда, omitempty-ден айырмашылығы, нөл нөлдерді өткізбейді уақыт.уақыт проблемалардың ортақ көзі болып табылатын құндылықтар.
Егер omitempty және нөлдің екеуі де көрсетілсе, мән бос немесе нөл (немесе екеуі де) болса, өріс өткізілмейді.
UnmarshalTypeError.Field енді толығырақ қате туралы хабарларды қамтамасыз ету үшін кірістірілген құрылымдарды қамтиды.
өту/түрлері
Len() int және At(int) T сияқты әдіс жұптарының тізбегін ашатын барлық go/types деректер құрылымдарында енді итераторларды қайтаратын әдістер бар, бұл қарапайым кодқа мүмкіндік береді:
params := fn.Type.(*types.Signature).Params() for i := 0; i < params.Len(); i++ {пайдалану(params.At(i)) }
Бұл туралы:
параметр үшін := диапазон fn.Signature().Params().Variables() { use(param)}
Әдістері: Interface.EmbeddedTypes Interface.ExplicitMethods Интерфейс. Methods MethodSet.Methods Әдістері Қолдану аймағы. Балалар Құрылым. Өрістер Кортеж.Айнымалылар TypeList.Types TypeParamList.TypeParams Одақ. Шарттары
хэш/*
- хэш/adler32: қайтарылатын мән жаңа, енді интерфейсті де жүзеге асырады кодтау.binaryappender
- hash/crc32: мәндер қайтарылды жаңа и ЖаңаIEEE, енді интерфейсті де іске қосыңыз кодтау.binaryappender
- hash/crc64: қайтарылатын мән жаңа, енді интерфейсті де жүзеге асырады кодтау.binaryappender
- хэш/fnv: мәндер қайтарылды New32 Жаңа32а New64 Жаңа64а New128 и Жаңа128а, енді интерфейсті де іске қосыңыз кодтау.binaryappender
- хэш/мапаш: жаңа мүмкіндіктер Салыстырмалы и Салыстырмалы жазу салыстыруға болатын кез келген мәннің хэшін есептей алады. Бұл Go сөздік кілті ретінде пайдалануға болатын кез келген нәрсені хэштеуге мүмкіндік береді.
журнал/слог
жаңа DiscardHandler ешқашан қосылмайтын өңдеуші болып табылады және әрқашан өз шығысын алып тастайды.
деңгей и LevelVar енді интерфейсті іске қосыңыз кодтау.TextAppender.
математика/*
- математика/үлкен: Флоат, Int и Rat енді интерфейсті іске қосыңыз кодтау.TextAppender.
- математика/ранд: ескірген жоғарғы деңгейлі функция шақырулары тұқым енді ешқандай әсер етпейді. Ескі әрекетті қалпына келтіру үшін пайдалануға болады GODEBUG орнату randseednop=0. Қосымша контекст ішінде Ұсыныс 67273.
- математика/ранд/v2: ChaCha8 и PCG енді интерфейсті іске қосыңыз кодтау.binaryappender.
тор
ListenCondig енді MPTCP қолдау көрсетілетін жүйелерде әдепкі бойынша пайдаланады (қазіргі уақытта тек Linux).
IP енді интерфейсті жүзеге асырады кодтау.TextAppender.
net/http
Шектеу өзгерді Көлік сұрауға жауап ретінде алынған 1xx ақпараттық жауаптарға. Бұрын бұл сұрауды тоқтатып, 5-тен астам 1xx жауап алғаннан кейін қатені қайтаратын еді. Бұл енді барлық 1xx жауаптарының жалпы өлшемі конфигурация параметрінен асып кетсе ғана қатені қайтарады Transport.MaxResponseHeaderBytes.
Сондай-ақ, сұрауда бақылау ілгегі болған кезде net/http/httptrace.ClientTrace.Got1xxResponse, енді жауаптардың жалпы санына 1xx шектеуі жоқ. Got1xxResponse ілгегі сұрауды тоқтату үшін қатені қайтара алады.
Көлік и Сервер енді HTTP/2 протоколының параметрлерін конфигурациялауға мүмкіндік беретін HTTP2 өрісі бар.
Жаңа өрістер Server.Protocols и Тасымалдау. Протоколдар сервер немесе клиент қандай HTTP протоколдарын пайдаланатынын конфигурациялаудың қарапайым жолын қамтамасыз етеді.
Сервер мен клиент шифрланбаған HTTP/2 қосылымдарын қолдау үшін конфигурациялануы мүмкін.
Қашан Server.Protocols құрамында UnencrypterHTTP2, сервер шифрланбаған порттардағы HTTP/2 қосылымдарын қабылдайды. Сервер бір портта HTTP/1 және шифрланбаған HTTP/2 екеуін де қабылдай алады.
Қашан Тасымалдау. Протоколдар құрамында UnencryptedHTTP2 және HTTP1 жоқ, тасымалдау мекенжайлар үшін шифрланбаған HTTP/2 пайдаланады http://. Егер тасымалдау HTTP/1 және шифрланбаған HTTP/2 екеуін де пайдалану үшін конфигурацияланса, ол HTTP/1 пайдаланады.
Шифрланбаған HTTP/2 үшін қолдау «Forward-Learning бар HTTP/2» (RFC 9113, 3.3 бөлімі) пайдаланады. «Жаңарту: h2c» ескірген тақырыбына қолдау көрсетілмейді.
net/netip
Addr, AdrPort и Префикс енді интерфейстерді енгізіңіз кодтау.binaryappender и кодтау.TextAppender.
net/url
URL енді интерфейсті де жүзеге асырады кодтау.binaryappender.
os/пайдаланушы
Windows жүйесінде ағымдағы енді Windows Nano серверінде пайдалануға болады. Nano серверінде жоқ NetApi32 кітапханасының функцияларын пайдаланбау үшін іске асыру жаңартылды.
Windows жүйесінде ағымдағы, Іздеу и LookupId енді келесі кірістірілген пайдаланушы қызметі тіркелгілеріне қолдау көрсетеді:
- NT ХАЛЫҚАРАЛЫҚ ЖҮЙЕСІ
- NT АТОРИТАЛЫҚ ҚЫЗМЕТІ
- NT AUTHORITYNETWORK ҚЫЗМЕТІ
Windows жүйесінде ағымдағы ағымдағы пайдаланушы баяу доменге қосылғанда айтарлықтай жылдамдады, бұл көптеген корпоративтік пайдаланушылар үшін жиі кездесетін жағдай. Жаңа енгізудің өнімділігі енді алдыңғы енгізумен салыстырғанда миллисекундтар тәртібінде, оны аяқтау үшін бірнеше секунд, тіпті минут кетуі мүмкін.
Windows жүйесінде ағымдағы енді ағымдағы ағын басқа пайдаланушының имитациясын жасаған кезде процесс иесі пайдаланушысын қайтарады. Бұрын бұл қатені қайтарды.
regexp
Regexp енді интерфейсті жүзеге асырады кодтау.Мәтіндік адаптер.
жұмыс уақыты
функция ГОРУТ қазір ескірген. Жаңа орталарда "go" екілік мәнін анықтау үшін жүйелік жолды, ал GOROOT анықтау үшін go env GOROOT пайдалануды жөн көру керек.
жолдар
Пакет жолдар итераторлармен жұмыс істеу үшін бірнеше функцияларды қосады:
- Сызықтар Жолдағы жаңа жолдан бөлінген жолдар үстінен итераторды қайтарады.
- SplitSeq бөлгішпен бөлінген жолдың барлық ішкі жолдарына иераторды қайтарады.
- SplitAfterSeq итераторды жолдың ішкі жолдарына қайтарады, бөлгіштің әрбір пайда болуынан кейін бөлінген.
- FieldsSeq анықталғандай бос орын таңбаларының тізбегі айналасындағы жолдың ішкі жолдарына иераторды қайтарадыunicode.IsSpace
- FieldsFuncSeq Предикатты қанағаттандыратын Юникод код нүктелерінің тізбегі айналасындағы жолдың ішкі жолдарының үстінен итераторды қайтарады.
синхрондау
Реализация sync.map өнімділікті жақсарту үшін, әсіресе сөздік өзгерістері үшін өзгертілді. Мысалы, үлкен сөздіктерде бөлек жиынды өзгерту дауының ықтималдығы аз және ол енді аз сөздік жүктемесіне қол жеткізу үшін жинақтау уақытын қажет етпейді.
Егер сізде қандай да бір мәселе туындаса, ескі енгізуге қайта оралу үшін құрастыру кезінде GOEXPERIMENT=nosynchashtriemap параметрін орнатыңыз. проблемалық пішінді толтырыңыз.
тестілеу
Жаңа әдістер T. Контекст и B. Контекст сынақ аяқталғаннан кейін және сынақты тазалау функциялары орындалмай тұрып жойылған мәтінмәнді қайтарыңыз.
Жаңа әдістер Т.Чдир и Б.Чдир сынақ немесе эталон ұзақтығы үшін жұмыс каталогын өзгерту үшін пайдалануға болады.
мәтін/үлгі
Үлгілер енді функцияның ауқымы мен диапазон үстіндегі функциясын қолдайды.
уақыт
уақыт енді интерфейстерді жүзеге асырады кодтау.binaryappender и кодтау.TextAppender.
Порттар
Linux
Қалай болды жариялады Go 1.23 шығарылым жазбаларына сәйкес, Go 1.24 Linux ядросының 3.2 немесе одан кейінгі нұсқасын қажет етеді.
Дарвин
Go 1.24 - macOS 11 Big Sur жүйесінде жұмыс істейтін соңғы шығарылым. Go 1.25 үшін macOS 12 Monterey немесе одан кейінгі нұсқасы қажет.
webassembly
Go:wasmexport компилятор директивасы функцияларды WebAssembly хостына экспорттау үшін Go бағдарламаларына қосылды.
WebAssembly жүйесінің интерфейсін алдын ала қарау 1 (GOOS=wasip1 GOARCH=wasm) ішінде Go 1.24 Go бағдарламасын келесідей құруды қолдайды. реактор/кітапхана құрастыру жалауын көрсету арқылы -buildmode=c-shared.
Енді go:wasmimport функциялары үшін аргумент немесе нәтиже түрлері ретінде көбірек түрлерге рұқсат етілген. Атап айтқанда, bool, string, uintptr және белгілі бір түрлерге көрсеткіштерге рұқсат етіледі (толығырақ құжаттама), рұқсат етілген 32 биттік және 64 биттік бүтін және өзгермелі нүкте түрлерімен және қауіпсіз. Көрсеткішпен бірге. Бұл түрлерге go:wasmexport функциялары үшін дәлел немесе нәтиже түрлері ретінде де рұқсат етіледі.
WebAssembly үшін қолдау файлдары misc/wasm ішінен lib/wasm файлына жылжытылды.
Бастапқы жад көлемі айтарлықтай азаяды, әсіресе шағын WebAssembly қолданбалары үшін.
Windows
32-биттік терезелер/арм порты (GOOS=windows GOARCH=arm) сынған деп белгіленді. Толығырақ #70705
Ақпарат көзі: linux.org.ru
