Go tilining yangi versiyasi, 1.24 versiyasi olti oydan keyin chiqadi 1.23-ga o'ting. O'zgarishlarning aksariyati asboblar zanjiri, ish vaqti va kutubxonalarni amalga oshirishda. Har doimgidek, nashr taqdim etadi muvofiqlik va'dasi Go 1. Til dizaynerlari deyarli barcha Go dasturlari avvalgidek kompilyatsiya va ishlashda davom etishini kutishadi.
Tildagi o'zgarishlar
Go 1.24 endi to'liq qo'llab-quvvatlaydi umumiy turdagi taxalluslar: turdagi taxallusni e'lon qilingan tur sifatida parametrlash mumkin. Tafsilotlar til xususiyatlari. Hozircha bu funksiyani GOEXPERIMENT=noaliastypeparams o‘rnatish orqali o‘chirib qo‘yish mumkin; Biroq, Go 1.25 da aliastypeparams opsiyasi o'chiriladi.
asboblar
O'tish buyrug'i
Go modullari endi go.moddagi asboblar direktivasi yordamida bajariladigan bog'liqliklarni kuzatishi mumkin. Bu, odatda, "tools.go" deb nomlangan faylga bo'sh import sifatida asboblar qo'shishning oldingi vaqtinchalik echimiga ehtiyojni yo'q qiladi. Go tool buyrug'i endi Go bilan birga kelgan asboblarga qo'shimcha ravishda ushbu vositalarni ishga tushirishi mumkin. Batafsil ma'lumotni quyidagi manzildan olishingiz mumkin hujjatlar.
Go get uchun yangi -tool bayrog'i talab direktivalarini qo'shishdan tashqari, belgilangan paketlar uchun joriy modulga asbob direktivalari qo'shilishiga olib keladi.
Yangi meta-naqsh vositasi joriy moduldagi barcha vositalarga ishora qiladi. Bu ularning barchasini go get vositasi orqali yangilash yoki ularni o'rnatish vositasi orqali GOBIN katalogingizga o'rnatish uchun ishlatilishi mumkin.
Go run orqali yaratilgan bajariladigan fayllar va yangi o'tish vositasi harakati endi Go qurish keshida keshlangan. Bu keshning ko'payishi tufayli takroriy ishga tushirishga imkon beradi. #69290.
Go Build va go install buyruqlari endi -json bayrog'ini qabul qiladi, u standart chiqishda tuzilgan JSON chiqishi sifatida tuzilgan va xatolar haqida xabar beradi. Format tafsilotlarini go help buildjson da ko'rish mumkin.
Bundan tashqari, go test -json endi JSON-da JSON-dagi test natijasi bilan aralashtirilgan natijalar va qurish xatolari haqida xabar beradi. Ular yangi Action turlari bilan ajralib turishi mumkin, ammo agar ular test integratsiyasi tizimida muammolarga olib kelsa, siz quyidagi orqali tuzilishning matn chiqishiga qaytishingiz mumkin. GODEBUG sozlamalari gotestjsonbuildtext=1.
Yangi GOAUTH muhit oʻzgaruvchisi xususiy modullarni tortib olishga ruxsat berishning moslashuvchan usulini taqdim etadi. Tafsilotlarni go help goauth sahifasida koʻrishingiz mumkin.
Go build buyrug'i endi o'rnatildi asosiy modul versiyasi Teg va/yoki versiyani boshqarish majburiyati asosida tuzilgan ikkilik faylda. Kirilmagan oʻzgarishlar boʻlsa, +kirli qoʻshimchasi qoʻshiladi. -buildvcs=false bayrog'i versiyani boshqarish ma'lumotlarini ikkilikdan olib tashlash uchun ishlatilishi mumkin.
Yangi GODEBUG sozlamalari toolchaintrace = 1 endi go buyrug'ida asboblar zanjirini tanlash jarayonini kuzatish uchun foydalanish mumkin.
Cgo
Cgo ish vaqti ish faoliyatini yaxshilash uchun C funktsiyalari uchun yangi izohlarni qo'llab-quvvatlaydi. #cgo noescape cFunctionName kompilyatorga C funksiyasiga uzatilgan xotira cFunctionName evakuatsiya qilinmaganligini aytadi. #cgo nocallback cFunctionName kompilyatorga C funksiyasi cFunctionName hech qanday Go funksiyasini chaqirmasligini aytadi. Batafsil ma'lumotni quyidagi manzildan olishingiz mumkin cgo hujjatlari.
Cgo hozirda bir nechta mos kelmaydigan deklaratsiyalarga ega bo'lgan C funksiyasiga qo'ng'iroqlarni kompilyatsiya qilishni rad etadi. Misol uchun, agar f ikkala void f(int) va void f(double) deb e'lon qilingan bo'lsa, cgo noto'g'ri f(0) chaqiruv ketma-ketligini yaratish o'rniga xato haqida xabar beradi. Ushbu nashrdagi yangilik, turli fayllarda mos kelmaydigan deklaratsiyalar paydo bo'lganda, ushbu xato holatini aniqlash yaxshilangan. #67699.
Objdump
Objdump vositasi endi 64-bitli LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) va S390X (GOARCH=s390x) da demontaj qilishni qoʻllab-quvvatlaydi.
Veterinar
Yangi testlar analizatori noto'g'ri tuzilgan nomlar, noto'g'ri imzolar yoki mavjud bo'lmagan identifikatorlarni hujjatlashtiradigan misollar kabi testlar, fuzzer, benchmark va test to'plamlari misol deklaratsiyasidagi keng tarqalgan xatolar haqida xabar beradi. Ushbu xatolarning ba'zilari testlarning muvaffaqiyatsiz bo'lishiga olib kelishi mumkin.
Mavjud printf tahlilchisi endi fmt.Printf(s) shaklidagi qo'ng'iroqlar uchun diagnostika haqida xabar beradi, bu erda s boshqa argumentlarsiz doimiy bo'lmagan formatli qatordir. Bunday qo'ng'iroqlar deyarli har doim xatodir, chunki s qiymati % belgisini o'z ichiga olishi mumkin; o'rniga fmt.Print dan foydalaning. 60529. Bu tekshirish mavjud koddagi narsalarni topishga intiladi va shuning uchun faqat til versiyasi (go.mod faylining go direktivasi yoki `//go:build` izohlarida koʻrsatilgan) kamida Go 1.24 boʻlsa, Go 1.24 asboblar zanjiriga yangilashda uzoq integratsiya tanaffuslariga olib kelmaslik uchun qoʻllaniladi.
Mavjud qurilish yorlig'i analizatori endi noto'g'ri tuzilgan yorliq mavjud bo'lganda diagnostika haqida xabar beradi eski versiyani qurish cheklovi //go:build direktivasiga o'ting. Masalan, //go:build go1.23.1 nuqta chiqarishni bildiradi; Buning o'rniga //go:build go1.23 dan foydalaning. #64127.
Mavjud copylock analizatori endi oʻzgaruvchi uchlik “for” siklida eʼlon qilinganda diagnostika haqida xabar beradi, masalan for i := iter(); bajarildi (i); i = keyingi(i) { … }, sync.Mutex kabi sinxronlash.Lockerni o'z ichiga oladi. 1.22-ga o'ting har bir iteratsiya uchun yangi o'zgaruvchini yaratish, oldingi iteratsiyadagi qiymatlarni nusxalash uchun bunday tsikllarning xatti-harakatlarini o'zgartirdi; Bu nusxalash qulflar uchun xavfsiz emas. #66387.
GOCACHEPROG
Ichki cmd/go ikkilik va test keshlash mexanizmi endi cmd/go vositasi va GOCACHEPROG muhit o‘zgaruvchisi tomonidan nomlangan bola jarayoni o‘rtasida JSON protokolini amalga oshiradigan bola jarayonlari tomonidan amalga oshirilishi mumkin. Ilgari bu GOEXPERIMENT uchun edi. Protokolning tafsilotlarini ko'rish mumkin hujjatlar.
Tugatish vaqti
Ish vaqtining bir nechta yaxshilanishi protsessorning qo'shimcha xarajatlarini bir qator vakillik ko'rsatkichlari bo'yicha o'rtacha 2-3% ga qisqartirdi. Natijalar ilovaga qarab farq qilishi mumkin. Ushbu yaxshilanishlar asosida yangi o'rnatilgan xaritani amalga oshirish kiradi Shvetsiya jadvallari, kichik ob'ekt xotirasini yanada samaraliroq taqsimlash va mutexning yangi ichki ish vaqti amalga oshirilishi.
Yangi oʻrnatilgan xarita ilovasi va yangi ichki ish vaqti mutexini mos ravishda GOEXPERIMENT=noswissmap va GOEXPERIMENT=nospinbitmutexni yaratish vaqtida sozlash orqali oʻchirib qoʻyish mumkin.
Kompilyator
Kompilyator allaqachon cgo tomonidan yaratilgan qabul qiluvchi turlari bilan yangi usullarni belgilashni taqiqlagan, ammo bu cheklovni turdagi taxallus orqali hal qilish mumkin edi. Endi Go 1.24 har doim xato haqida xabar beradi, agar qabul qiluvchi cgo tomonidan yaratilgan turni to'g'ridan-to'g'ri yoki bilvosita (turli taxallus orqali) bildirsa.
Bog'lovchi
Bog'lovchi endi sukut bo'yicha ELF platformalarida GNU qurish identifikatorini (ELF yozuvi NT_GNU_BUILD_ID) va macOS'da UUID (Mach-O yuklash buyrug'i LC_UUID) yaratadi. Qurilish identifikatori yoki UUID Go qurish identifikatoridan olingan. Buni -B none bog'lovchi bayrog'i bilan o'chirib qo'yish yoki foydalanuvchi tomonidan belgilangan o'n oltilik qiymatga ega -B 0xNNNN bog'lovchi bayrog'i bilan bekor qilish mumkin.
Rag'batlantirish
da aytilganidek Go 1.22 reliz yozuvlari, Go 1.24 endi oʻrnatilishi uchun Go 1.22.6 yoki undan keyingi versiyalarini talab qiladi. Ishlab chiquvchilar Go 1.26-ning chiqarilishi uchun Go 1.24 yoki undan keyingi versiyalarni talab qilishini kutishadi.
Standart kutubxona
Katalog bilan cheklangan fayl tizimiga kirish
Yangi tur os.root Muayyan katalog ichida fayl tizimi operatsiyalarini bajarish imkoniyatini beradi.
vazifa os.OpenRoot katalogni ochadi va qaytaradi os.root. Usullar yoqilgan os.root o'sha katalogda ishlaydi va yo'llarning katalogdan tashqaridagi joylarga, shu jumladan katalogdan tashqaridagi ramziy havolalarni kuzatib borishlariga ruxsat bermang. os.Root-dagi usullar OS paketida mavjud bo'lgan fayl tizimi operatsiyalarining aksariyatini aks ettiradi, masalan, os.Root.Ochiq, os.Root.Create, os.Root.Mkdir и os.Root.Stat.
Yangi benchmark xususiyati
Benchmarks endi tezroq, kamroq xatoga yo'l qo'yadigan usuldan foydalanishi mumkin sinov.B.Loop bN kabi bN ni o'z ichiga olgan odatiy sikl tuzilmalari o'rniga for b.Loop() { … } kabi etalonni takrorlash Bu ikkita muhim afzalliklarni taqdim etadi:
- Benchmark funktsiyasi har bir hisobda bir marta bajariladi, shuning uchun qimmat sozlash va tozalash bosqichlari faqat bir marta amalga oshiriladi.
- Funktsiyani chaqirish parametrlari va natijalari jonli bo'lib, kompilyatorning tsikl tanasini to'liq optimallashtirishiga yo'l qo'ymaydi.
Yaxshilangan yakunlovchilar
Yangi xususiyat ish vaqti.AddCleanup nisbatan moslashuvchan, samaraliroq va kamroq xatoga yo'l qo'yadigan tugatish mexanizmi ish vaqti.SetFinalizer. AddCleanup ob'ekt mavjud bo'lmaganda darhol ishga tushiriladigan ob'ektga tozalash funksiyasini biriktiradi. Biroq, SetFinalizer-dan farqli o'laroq, bir nechta tozalashlar bitta ob'ektga biriktirilishi mumkin, tozalashlar ichki ko'rsatgichlarga biriktirilishi mumkin, tozalashlar odatda ob'ektlar sikl hosil qilganda sizib chiqmaydi va tozalashlar ob'ekt yoki u ko'rsatgan ob'ektlarning joydan ajratilishini kechiktirmaydi. Yangi kod SetFinalizer o'rniga AddCleanup-ni afzal ko'rishi kerak.
Yangi zaif paket
Yangi paket zaif zaif ko'rsatkichlarni beradi.
Zaif ko'rsatkichlar xotirani tejaydigan tuzilmalarni yaratish uchun taqdim etilgan past darajadagi ibtidoiy vositadir, masalan, qiymatlarni xaritalash uchun zaif lug'atlar, paketga kirmagan narsalar uchun kanoniklashtirish lug'atlari. noyob, va har xil turdagi keshlar. Ushbu foydalanish holatlarini qo'llab-quvvatlash uchun ushbu nashr ham taqdim etadi ish vaqti.AddCleanup и maphash. solishtirish mumkin.
Yangi kripto/mlkem paketi
Yangi paket kripto/mlkem ML-KEM-768 va ML-KEM-1024 ni amalga oshiradi.
ML-KEM - bu kvantdan keyingi kalit almashish mexanizmi bo'lib, u ilgari Kyber nomi bilan tanilgan va unda ko'rsatilgan FIPS 203.
Yangi paketlar crypto/hkdf, crypto/pbkdf2 va crypto/sha3
Yangi paket kripto/hkdf HMAC-ga asoslangan “Extract-and-Expand” kalit hosil qilish funksiyasini HKDF da belgilanganidek amalga oshiradi. QRM 5869.
Yangi paket kripto/pbkdf2 da belgilanganidek, parolga asoslangan PBKDF2 kalit hosil qilish funksiyasini amalga oshiradi QRM 8018.
Yangi paket kripto/sha3 SHA-3 xesh funktsiyasini va SHAKE va cSHAKE kengaytiriladigan chiqish funktsiyalarini quyidagi maqolada belgilanganidek amalga oshiradi. FIPS 202.
Uchala paket ham mavjud golang.org/x/crypto/… paketlariga asoslangan.
FIPS 140-3 muvofiqligi
Ushbu nashr o'z ichiga oladi FIPS 140-3 muvofiqligini ta'minlash uchun yangi mexanizmlar to'plami.
Go kripto moduli FIPS 140-3 tomonidan tasdiqlangan algoritmlarni amalga oshirish uchun shaffof foydalaniladigan ichki standart kutubxona paketlari to‘plamidir. Ilovalar tasdiqlangan algoritmlar uchun Go kripto modulidan foydalanish uchun o'zgarishlarni talab qilmaydi.
Yangi muhit oʻzgaruvchisi GOFIPS140 qurilmada foydalanish uchun Go kripto modulining versiyasini tanlash uchun ishlatilishi mumkin. Yangi GODEBUG sozlamalari fips140 ish vaqtida FIPS 140-3 rejimini yoqish uchun ishlatilishi mumkin.
Go 1.24 hozirda CMVP tomonidan akkreditatsiya qilingan laboratoriyada sinovdan o'tkazilayotgan Go kripto moduli v1.0.0 ni o'z ichiga oladi.
Yangi eksperimental paket sinovi/sinktest
Yangi eksperimental paket sinov/sinktest Bir vaqtning o'zida kodni sinab ko'rish uchun yordam beradi.
- vazifa synctest.run izolyatsiya qilingan "qabariq" ichida gorutinlar guruhini boshqaradi. Paket funktsiyasi pufakchasida vaqt soxta soatlarda ishlash.
- Xususiyatlari: synctest.kuting joriy qabariqda barcha gorutinlar bloklanmaguncha kuting.
Tafsilotlarni paket hujjatlarida topish mumkin.
Sinktest paketi eksperimentaldir va uni GOEXPERIMENT=sinktest sozlamasi orqali yoqish kerak. Paket API keyingi nashrlarda o'zgarishi mumkin. IN #67434 Batafsil ma'lumotlarni ko'rishingiz va fikr bildirishingiz mumkin.
Kutubxonadagi kichik o'zgarishlar
Arxiv
Arxiv/zip va arxiv/tardagi (*Writer.AddFS) ilovalari endi bo'sh katalog uchun katalog sarlavhasini yozadi.
baytlar
Paket baytlar iteratorlar bilan ishlaydigan bir nechta funktsiyalarni qo'shadi:
- Lines Bayt bo'lagidagi yangi qatordan ajratilgan satrlar ustidan iteratorni qaytaradi.
- SplitSeq ajratuvchi bilan ajratilgan bayt tilimning barcha pastki bo'limlari ustidan iteratorni qaytaradi.
- SplitAfterSeq bayt tilimning pastki bo'limlari ustidan iteratorni qaytaradi, ajratuvchi har bir sodir bo'lgandan keyin bo'linadi.
- FieldsSeq Belgilanganidek, bo'sh joy belgilari ketma-ketligi atrofidagi bayt bo'limining pastki bo'limlari ustidan iteratorni qaytaradi unicode.IsSpace
- FieldsFuncSeq predikatni qanoatlantiradigan Unicode kod nuqtalari ketma-ketligi atrofida bayt tilimning pastki bo'limlari ustidan iteratorni qaytaradi.
kripto/aes
Qaytish qiymati NewChipher endi NewCTR, NewGCM, NewCBCEncrypter va NewCBCDecrypter usullarini qo'llamaydi. Bu usullar hujjatlashtirilmagan va barcha arxitekturalarda mavjud emas edi. Endi ma'nosi blok to'g'ridan-to'g'ri tegishli funktsiyalarga o'tkazilishi kerak kripto/shifr. Hozirda kripto/shifr hali ham ushbu usullarni blokirovka qiymatlarida tekshiradi, garchi ular standart kutubxona tomonidan qo'llab-quvvatlanmasa ham.
kripto/shifr
Yangi xususiyat NewGCMWithRandomNonce qaytadi AEAD, Seal paytida tasodifiy nonce hosil qilish va uni shifrlangan matnga qo'shish orqali AES-GCMni amalga oshiradi.
Реализация Oqim, qaytdi YangiCTR bilan foydalanilganda kripto/aes endi amd64 va arm64 da bir necha barobar tezroq.
YangiOFB, NewCFBEncrypter и NewCFBDdecrypter endi eskirgan deb e'lon qilinadi. OFB va CFB rejimlari autentifikatsiya qilinmagan, bu odatda faol hujumlarga ochiq matnni manipulyatsiya qilish va tiklash imkonini beradi. Ilovalardan foydalanish tavsiya etiladi AEAD evaziga. Agar autentifikatsiya qilinmagan rejim bo'lsa Oqim zarur, foydalanish mumkin YangiCTR evaziga.
kripto/ecdsa
PrivateKey.Sign endi ko'ra deterministik imzo hosil qiladi QRM 6979, agar tasodifiylik manbai nolga teng bo'lsa.
kripto/md5
Qaytish qiymati md5.new, endi interfeysni ham amalga oshiradi kodlash.binaryappender.
kripto/rand
vazifa o'qing endi hech qanday muvaffaqiyatsizlikka kafolat beradi. O'qish vaqtida xatoga duch kelsa o'quvchi, dastur butunlay tugatiladi. Standart Reader har doim muvaffaqiyatli ishlashi uchun hujjatlashtirilganligini unutmang, shuning uchun bu o'zgarish faqat Reader o'zgaruvchisini bekor qiladigan dasturlarga ta'sir qilishi kerak. Istisnolardan biri 3.17 dan oldingi Linux yadrolari bo'lib, u erda standart Reader hali ham /dev/urandom ochiladi va muvaffaqiyatsiz bo'lishi mumkin.
Linux 6.11 va undan keyingi versiyalarida Reader endi vDSO orqali tasodifiy tizim chaqiruvidan foydalanadi. Bu bir necha marta tezroq, odatda kichik o'qishlar uchun.
OpenBSD Reader-da endi arc4random_buf(3) dan foydalanadi.
Yangi xususiyat matn endi kriptografik xavfsiz tasodifiy matn satrlarini yaratishi mumkin.
kripto/rsa
GenerateKey endi 1024 bitdan kam kalit uzunligi so'ralganda xatolik qaytaradi. Barcha Sign, Verify, Encrypt va Decrypt usullari endi kalit o‘lchami 1024 bitdan kam bo‘lsa, xatolikni qaytaradi. Bunday kalitlar xavfli va ulardan foydalanmaslik kerak. GODEBUG sozlanmoqda rsa1024min=0 eski xatti-harakatni tiklaydi, lekin Go dasturchilari buni faqat kerak bo'lganda va faqat testlarda bajarishni tavsiya qiladi, masalan, test fayliga //go:debug rsa1024min=0 qatorini qo'shish orqali. Yangi misol GenerateKey foydalanish uchun qulay standart 2024-bit sinov kalitini taqdim etadi.
Endi qo'ng'iroq qilish xavfsizroq va samaraliroq PrivateKey.Precompute uchun PrivateKey.Validate. Oldindan hisoblash endi qisman to'ldirilgan holda tezroq bo'ladi Oldindan hisoblangan qiymatlar, masalan, JSON-dan kalitni chiqarishda.
Paket endi Validate chaqirilmaganda ham ko'proq yaroqsiz kalitlarni rad etadi va GenerateKey endi buzilgan tasodifiy manbalar uchun yangi xatolarni qaytarishi mumkin. Maydonlar Primes и Oldindan hisoblangan tuzilmalar PrivateKey Endi ba'zi qiymatlar etishmayotgan bo'lsa ham foydalaniladi va tasdiqlanadi. Quyida tavsiflangan RSA kalitlarini tahlil qilish va chiqarish uchun kripto/x509-ga o'zgartirishlar ham mavjud.
SignPKCS1v15 и VerifyPKCS1v15 endi SHA-512/224, SHA-512/256 va SHA-3-ni qo'llab-quvvatlaydi.
GenerateKey endi xususiy ko'rsatkichni yaratish uchun biroz boshqacha usuldan foydalanadi (Euler funktsiyasi o'rniga Karmaykl funktsiyasi). Kalitlarni faqat tub sonlardan tashqaridan tiklaydigan kamdan-kam ilovalar turli, ammo mos natijalar berishi mumkin.
Ochiq va shaxsiy kalitlar bo'yicha operatsiyalar endi wasm-da ikki baravar tezroq.
kripto/sha*
- kripto/sha1: qaytariladigan qiymat sha1.Yangi endi interfeysni ham amalga oshiradi kodlash.binaryappender.
- kripto/sha256: qiymatlar qaytarildi sha256.Yangi и sha256.New224 Endi interfeysni ham amalga oshiring kodlash.binaryappender.
- kripto/sha512: qiymatlar qaytarildi sha512.Yangi, sha512.New384, sha512.New512_224 и sha512.New512_256, endi interfeysni ham amalga oshiring kodlash.binaryappender.
kripto/nozik
Yangi xususiyat DataIndependentTiming bilan foydalanuvchiga ma'lumotlar qiymatining vaqtiga nisbatan ma'lum ko'rsatmalar o'zgarmasligini ta'minlaydigan arxitekturaga xos xususiyatlar yoqilgan funksiyani bajarishga imkon beradi. Bu doimiy vaqtda ishlash uchun yozilgan kod protsessor darajasidagi funktsiyalar tomonidan optimallashtirilmaganligini ta'minlash uchun ishlatilishi mumkin, shuning uchun u o'zgaruvchan vaqtda ishlaydi. Hozirda WithDataIndependentTiming arm64 da PSTATE.DIT bitidan foydalanadi va boshqa barcha arxitekturalarda hech narsa qilmaydi. GODEBUG sozlanmoqda dataindependenttiming=1 butun Go dasturi uchun DIT rejimini yoqadi.
xulosa XORBytes kiritish bilan toʻliq mos kelishi yoki umuman mos kelmasligi kerak. Ilgari xatti-harakatlar boshqacha tarzda aniqlanmagan bo'lsa, endi XORBytes vahima qiladi.
kripto/TL
TLS serveri endi shifrlangan mijoz salomini (ECH) qo'llab-quvvatlaydi. Ushbu xususiyatni maydonni to'ldirish orqali yoqish mumkin. Config.EncryptedClientHelloKeys.
Yangi post-kvant kalit almashinuvi mexanizmi X25519MLKEM768 qachon qo'llab-quvvatlanadi va sukut bo'yicha yoqilgan Config.CurvePreferences nol. GODEBUG sozlanmoqda tlsmlkem=0 standartni qaytaradi.
Eksperimental X25519Kyber768Draft00 kalit almashinuvini qo‘llab-quvvatlash olib tashlandi.
Kalit almashish buyurtmasi endi butunlay kripto/tls paketi tomonidan amalga oshiriladi. Buyurtma Config.CurvePreferences endi e'tiborga olinmaydi va tarkib faqat maydon to'ldirilganda qaysi kalit almashinuvini kiritish kerakligini aniqlash uchun ishlatiladi.
Yangi maydon ClientHelloInfo.Extensions Client Hello xabarida qabul qilingan kengaytma identifikatorlari ro'yxatini ko'rsatadi. Bu TLS mijozlari barmoq izlari uchun foydali bo'lishi mumkin.
kripto/x509
GODEBUG sozlanmoqda x509sha1 olib tashlandi. Sertifikatlash.Tasdiqlash endi SHA-1 asosidagi imzolarni qo'llab-quvvatlamaydi.
OID Endi interfeyslarni amalga oshiradi kodlash.binaryappender и kodlash.TextAppender.
Standart sertifikat siyosati maydoni dan oʻzgartirildi Sertifikat.PolicyIdentifiers haqida Sertifikat. Siyosat. Sertifikatlarni tahlil qilishda ikkala maydon ham toʻldiriladi, lekin sertifikat siyosatini yaratishda ular Certificate.PolicyIdentifiers oʻrniga Certificate.Policies maydonidan olinadi. Bu o'zgarish qaytarilishi mumkin. GODEBUG sozlamalari x509usepolicies=0.
Sertifikat yaratish endi shablon maydonidan o'tishda RFC 5280 mos usuli yordamida seriya raqamini yaratadi Sertifikat. Seriya raqami nol, qulash o'rniga.
Sertifikat. Tasdiqlash endi RFC 5280 va RFC 9618 da belgilangan siyosatni tekshirishni qo‘llab-quvvatlaydi. Yangi maydon VerifyOptions.CertificatePolicies qabul qilinadigan siyosatlar to'plamiga o'rnatilishi mumkin OIDlar. Faqat joriy siyosat grafiklari boʻlgan sertifikat zanjirlari qaytariladi Sertifikat. Tasdiqlash.
MarshalPKCS8PrivateKey endi noto'g'ri RSA kalitini olish o'rniga xatoni qaytaradi. (MarshalPKCS1PrivateKey xato qaytarilmaydi va noto'g'ri kalitlar taqdim etilganda uning harakati aniqlanmagan.)
ParsePKCS1PrivateKey и ParsePKCS8PrivateKey endi kodlangan CRT qiymatlaridan foydalaning va tasdiqlang, shuning uchun avval qabul qilingan yaroqsiz RSA kalitlarini rad etishingiz mumkin. Foydalanish GODEBUG sozlamalari x509rsacrt=0 CRT qiymatlarini qayta hisoblashga qaytadi.
disk raskadrovka/elf
Paket disk raskadrovka/elf Dinamik ELF (bajariladigan va bog'lanishi mumkin bo'lgan format) fayllarida ramz versiyalari bilan ishlashni qo'llab-quvvatlaydi. Yangi usul File.DynamicVersions ELF faylida belgilangan dinamik versiyalar roʻyxatini qaytaradi. Yangi usul File.DynamicVersionNeeds Boshqa ELF obyektlarida aniqlangan ushbu ELF fayli talab qiladigan dinamik versiyalar roʻyxatini qaytaradi. Va nihoyat, yangi maydonlar Symbol.HasVersion и Symbol.VersionIndex belgining versiyasini ko'rsating.
Kodlash
Ikki yangi interfeys TextAppender и BinaryAppender bayt tilimga ob'ektning matn yoki ikkilik tasvirini qo'shish uchun kiritilgan. Ushbu interfeyslar bir xil funksionallikni ta'minlaydi TextMarshaler и BinaryMarshaler, lekin har safar yangi bo'limni ajratish o'rniga ular to'g'ridan-to'g'ri mavjud bo'limga ma'lumotlarni qo'shadilar. Ushbu interfeyslar hozirda TextMarshaler va/yoki BinaryMarshaler-ni qo'llaydigan standart kutubxona turlari tomonidan amalga oshirilmoqda.
kodlash/json
Qurilayotganda, agar uning qiymati nolga teng bo'lsa, struktura maydoni yorlig'idagi yangi nol variantiga ega bo'lgan struktura maydoni o'tkazib yuboriladi. Agar maydon turida IsZero() bool usuli bo'lsa, u qiymatning nolga teng ekanligini aniqlash uchun ishlatiladi. Aks holda, qiymat nolga teng bo'ladi uning turi uchun null qiymati. Maqsad null qiymatlarni o'tkazib yuborishdan iborat bo'lsa, omitzero maydon yorlig'i o'chirishga qaraganda tozaroq va xatoga yo'l qo'ymaydi. Xususan, omitempty dan farqli o'laroq, omitzero nollarni qoldiradi vaqt.vaqt muammolarning umumiy manbai bo'lgan qadriyatlar.
Agar omitempty ham, nol ham ko'rsatilgan bo'lsa, qiymat bo'sh yoki nol (yoki ikkalasi) bo'lsa, maydon o'tkazib yuboriladi.
UnmarshalTypeError.Field endi batafsilroq xato xabarlarini taqdim etish uchun o'rnatilgan tuzilmalarni o'z ichiga oladi.
go/turlari
Len() int va At(int) T kabi usullar juftligi ketma-ketligini ochib beruvchi barcha go/types maʼlumotlar tuzilmalarida endi iteratorlarni qaytaruvchi usullar ham mavjud boʻlib, bu oddiyroq kodga imkon beradi:
params := fn.Type.(*types.Imzo).Params() for i := 0; i < params.Len(); i++ {foydalanish(params.At(i)) }
Bu borada:
param uchun := diapazon fn.Signature().Params().Variables() { use(param)}
Usullari: Interface.EmbeddedTypes Interface.ExplicitMethods Interfeys. Metodlar Method Set. Methods Nomlangan. Metodlar Qo'llanish doirasi. Bolalar Struktura. Maydonlar Tuple.Variables TypeList.Types TypeParamList.TypeParams Ittifoq. Shartlar
hash/*
- hash/adler32: qaytariladigan qiymat yangi, endi interfeysni ham amalga oshiradi kodlash.binaryappender
- hash/crc32: qiymatlar qaytarildi yangi и YangiIEEE, endi interfeysni ham amalga oshiring kodlash.binaryappender
- hash/crc64: qaytariladigan qiymat yangi, endi interfeysni ham amalga oshiradi kodlash.binaryappender
- hash/fnv: qiymatlar qaytarildi New32 Yangi32a New64 Yangi64a New128 и Yangi128a, endi interfeysni ham amalga oshiring kodlash.binaryappender
- hash/maphash: yangi xususiyatlar Taqqoslash mumkin и Write Comparable solishtirish mumkin bo'lgan har qanday qiymatning xeshini hisoblashi mumkin. Bu sizga Go lug'ati kaliti sifatida ishlatilishi mumkin bo'lgan har qanday narsani xeshlash imkonini beradi.
log/slog
Yangi DiscardHandler hech qachon yoqilmaydigan va har doim o'z chiqishini bekor qiladigan ishlov beruvchidir.
daraja и LevelVar Endi interfeysni amalga oshiring kodlash.TextAppender.
matematika/*
- matematika/katta: Float, Int и Kalamush Endi interfeysni amalga oshiring kodlash.TextAppender.
- matematika/rand: eskirgan yuqori darajadagi funksiya chaqiruvlari urug ' endi hech qanday ta'sir ko'rsatmaydi. Eski xatti-harakatni tiklash uchun siz foydalanishingiz mumkin GODEBUG sozlamalari randseednop = 0. Ko'proq kontekst Taklif 67273.
- matematika/rand/v2: ChaCha8 и PCG Endi interfeysni amalga oshiring kodlash.binaryappender.
to'r
ListenCondig endi MPTCP qo'llab-quvvatlanadigan tizimlarda sukut bo'yicha foydalanadi (hozirda faqat Linux).
IP Endi interfeysni amalga oshiradi kodlash.TextAppender.
net/http
Cheklov o'zgardi transport so'rovga javoban olingan 1xx ma'lumot javoblariga. Ilgari bu so'rovni to'xtatib, 5 dan ortiq 1xx javob olgandan keyin xatoni qaytarardi. Bu endi barcha 1xx javoblarining umumiy hajmi konfiguratsiya sozlamasidan oshib ketgan taqdirdagina xatolikni qaytaradi Transport.MaxResponseHeaderBytes.
Bundan tashqari, so'rovda kuzatuv kancasi mavjud bo'lganda net/http/httptrace.ClientTrace.Got1xxResponse, endi javoblarning umumiy sonida 1xx chegarasi yo'q. Got1xxResponse kancasi so'rovni to'xtatish uchun xatoni qaytarishi mumkin.
transport и Server endi HTTP/2 protokoli sozlamalarini sozlash imkonini beruvchi HTTP2 maydoni mavjud.
Yangi maydonlar Server.Protokollar и Transport. Protokollar server yoki mijoz foydalanadigan HTTP protokollarini sozlashning oddiy usulini taqdim eting.
Server va mijoz shifrlanmagan HTTP/2 ulanishlarini qo'llab-quvvatlash uchun sozlanishi mumkin.
qachon Server.Protokollar UnencrypterHTTP2 o'z ichiga oladi, server shifrlanmagan portlarda HTTP/2 ulanishlarini qabul qiladi. Server bir xil portda HTTP/1 va shifrlanmagan HTTP/2 ni ham qabul qilishi mumkin.
qachon Transport. Protokollar UnencryptedHTTP2 o‘z ichiga oladi va HTTP1ni o‘z ichiga olmaydi, transport manzillar uchun shifrlanmagan HTTP/2 dan foydalanadi http://. Agar transport HTTP/1 va shifrlanmagan HTTP/2 dan foydalanishga sozlangan bo'lsa, u HTTP/1 dan foydalanadi.
Shifrlanmagan HTTP/2-ni qo'llab-quvvatlash "Forward-Learning bilan HTTP/2" dan foydalanadi (RFC 9113, 3.3-bo'lim). Eskirgan “Upgrade: h2c” sarlavhasi qo‘llab-quvvatlanmaydi.
net/netip
Addr, AddrPort и Prefiks Endi interfeyslarni amalga oshiring kodlash.binaryappender и kodlash.TextAppender.
net/url
URL endi interfeysni ham amalga oshiradi kodlash.binaryappender.
os/foydalanuvchi
Windows tizimida hozirgi endi Windows Nano Serverda foydalanish mumkin. Nano Serverda mavjud bo'lmagan NetApi32 kutubxonasi funktsiyalaridan foydalanmaslik uchun dastur yangilandi.
Windows tizimida hozirgi, qidirish и LookupId endi quyidagi o'rnatilgan foydalanuvchi xizmati hisoblarini qo'llab-quvvatlaydi:
- NT HOKIMLIK TIZIMI
- NT AVTORITIK MAHALLIY XIZMAT
- NT AUTHORITYNETWORK XIZMATI
Windows tizimida hozirgi joriy foydalanuvchi sekin domenga qo'shilganda sezilarli darajada tezlashdi, bu ko'plab korporativ foydalanuvchilar uchun odatiy holdir. Yangi dasturning ishlashi avvalgi dasturga nisbatan millisekundlar darajasida bo'lib, uni bajarish uchun bir necha soniya, hatto daqiqalar ketishi mumkin.
Windows tizimida hozirgi joriy ish zarrachasi boshqa foydalanuvchi nomini ko'rsatayotganda, endi jarayon egasi foydalanuvchisini qaytaradi. Ilgari bu xatolikni qaytardi.
regexp
Regexp Endi interfeysni amalga oshiradi kodlash.TextAdapter.
ish vaqti
vazifa GOROOT endi eskirgan. Yangi muhitlarda "go" ikkilik faylini aniqlash uchun tizim yo'lidan foydalanishni va GOROOTni aniqlash uchun go env GOROOT dan foydalanishni afzal ko'rishingiz kerak.
thongs
Paket thongs iteratorlar bilan ishlash uchun bir nechta funktsiyalarni qo'shadi:
- Lines Satrdagi yangi satr bilan ajratilgan satrlar ustidan iteratorni qaytaradi.
- SplitSeq ajratuvchi bilan ajratilgan qatorning barcha pastki qatorlari ustidan iteratorni qaytaradi.
- SplitAfterSeq satrning pastki satrlari ustidan iteratorni qaytaradi, ajratuvchining har bir paydo bo'lishidan keyin bo'linadi.
- FieldsSeq Belgilanganidek, bo'sh joy belgilari ketma-ketligi atrofidagi satrning pastki qatorlari ustidan iteratorni qaytaradiunicode.IsSpace
- FieldsFuncSeq Predikatni qanoatlantiradigan Unicode kod nuqtalari ketma-ketligi atrofidagi satrning pastki qatorlari ustidan iteratorni qaytaradi.
Sinxronlash
Реализация sync.map ish faoliyatini yaxshilash uchun, ayniqsa lug'at o'zgarishlari uchun o'zgartirildi. Misol uchun, katta lug'atlarda ajratilgan to'plamni o'zgartirish ehtimoli kamroq va lug'at yuklanishining pastligiga erishish uchun endi yig'ish vaqtini talab qilmaydi.
Agar biron bir muammoga duch kelsangiz, eski dasturga qaytish uchun qurish vaqtida GOEXPERIMENT=nosynchashtriemap ni sozlang va iltimos muammo shaklini to'ldiring.
sinov
Yangi usullar T.Kontekst и B. Kontekst sinov tugagandan so'ng va sinovni tozalash funktsiyalari bajarilishidan oldin o'chirilgan kontekstni qaytaring.
Yangi usullar T.Chdir и B.Chdir sinov yoki benchmark muddati davomida ishchi katalogni o'zgartirish uchun ishlatilishi mumkin.
matn/shablon
Shablonlar endi funktsiyadan diapazon va diapazon-over-intni qo'llab-quvvatlaydi.
vaqt
vaqt Endi interfeyslarni amalga oshiradi kodlash.binaryappender и kodlash.TextAppender.
Portlar
Linux
Bo'lganidek e'lon qildi Go 1.23 nashri eslatmalariga ko'ra, Go 1.24 Linux yadrosining 3.2 yoki undan keyingi versiyasini talab qiladi.
Darvin
Go 1.24 – macOS 11 Big Sur’da ishlaydigan so‘nggi versiya. Go 1.25 macOS 12 Monterey yoki undan keyingi versiyasini talab qiladi.
WebAssembly
Go:wasmexport kompilyator direktivasi funksiyalarni WebAssembly xostiga eksport qilish uchun Go dasturlariga qo'shildi.
WebAssembly System Interface Preview 1 da (GOOS=wasip1 GOARCH=wasm), Go 1.24 Go dasturini yaratishni qo'llab-quvvatlaydi: reaktor/kutubxona -buildmode=c-shared qurish bayrog'ini ko'rsatish orqali.
Endi go:wasmimport funksiyalari uchun argument yoki natija turlari sifatida koʻproq turlarga ruxsat berilgan. Xususan, bool, string, uintptr va ma'lum turlarga ko'rsatgichlarga ruxsat beriladi (batafsilroq bo'limda hujjatlar), 32-bit va 64-bit butun va suzuvchi nuqta turlari bilan bir qatorda va allaqachon ruxsat etilgan unsafe.Pointer. Bu turlarga go:wasmexport funksiyalari uchun argument yoki natija turlari sifatida ham ruxsat beriladi.
WebAssembly uchun qo‘llab-quvvatlash fayllari misc/wasm-dan lib/wasm-ga ko‘chirildi.
Dastlabki xotira maydoni sezilarli darajada kamayadi, ayniqsa kichik WebAssembly ilovalari uchun.
Windows
32-bitli windows/arm porti (GOOS=windows GOARCH=arm) buzilgan deb belgilangan. Tafsilotlar #70705
Manba: linux.org.ru
