Go хэлний шинэ хувилбар болох 1.24 хувилбар зургаан сарын дараа гарах болно 1.23 руу оч. Ихэнх өөрчлөлтүүд нь багажийн хэлхээ, ажиллах цаг, номын сангуудын хэрэгжилтэд оршдог. Ердийнх шиг, хувилбар нь өгдөг нийцтэй байх амлалт Go 1. Хэлний зохион бүтээгчид бараг бүх Go программуудыг урьдын адил эмхэтгэн ажиллуулна гэж найдаж байна.
Хэлний өөрчлөлт
Go 1.24 одоо бүрэн дэмждэг ерөнхий төрлийн нэрс: төрлийн бусад нэрийг зарласан төрөл болгон параметрчилж болно. Дэлгэрэнгүйг дотор хэлний үзүүлэлтүүд. Одоогоор энэ функцийг GOEXPERIMENT=noaliastypeparams; Гэхдээ Go 1.25 дээр aliastypeparams сонголтыг хасна.
Хэрэгсэл
Явах тушаал
Go модулиуд нь go.mod дээрх хэрэгслийн удирдамжийг ашиглан гүйцэтгэгдэх хамаарлыг хянах боломжтой болсон. Энэ нь ихэвчлэн "tools.go" гэж нэрлэгддэг файлд хоосон импортын хэрэгсэл болгон нэмэх өмнөх түр зуурын шийдлийг арилгадаг. Go tool команд нь Go-д ирдэг хэрэгслүүдээс гадна эдгээр хэрэгслийг ажиллуулах боломжтой болсон. Дэлгэрэнгүй мэдээллийг эндээс авах боломжтой баримт бичиг.
Go get-д зориулсан шинэ -tool туг нь шаардлагатай зааврыг нэмэхээс гадна заасан багцуудын одоогийн модульд хэрэглүүрийн удирдамжийг нэмэхэд хүргэдэг.
шинэ мета-загварын хэрэгсэл одоогийн модулийн бүх хэрэгслийг хэлнэ. Үүнийг бүгдийг нь go get хэрэгслээр шинэчлэх, эсвэл go install хэрэгслээр дамжуулан GOBIN лавлахдаа суулгахад ашиглаж болно.
Go run-аар үүсгэгдсэн гүйцэтгэх файлууд болон шинэ go хэрэгслийн үйлдлийг одоо Go build кэшэд хадгалсан. Энэ нь кэш нэмэгдсэний улмаас дахин дахин хөөргөх боломжтой болгодог. #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 командыг суулгасан үндсэн модулийн хувилбар эмхэтгэсэн хоёртын файлд шошго ба/эсвэл хувилбарын хяналтын үүрэг дээр тулгуурлан. Өөрчлөлт хийгдээгүй тохиолдолд + бохир дагавар нэмэгдэнэ. -buildvcs=false тугийг хоёртын хувилбараас хувилбарын хяналтын мэдээллийг орхигдуулахад ашиглаж болно.
Шинэ GODEBUG тохиргоо toolchaintrace=1 Одоо go командын гинж сонгох үйл явцыг хянахад ашиглаж болно.
Cgo
Cgo нь ажлын цагийн гүйцэтгэлийг сайжруулахын тулд C функцүүдийн шинэ тэмдэглэгээг дэмждэг. #cgo noescape cFunctionName нь хөрвүүлэгчид C функцэд дамжуулсан санах ойг cFunctionName-ээс зугтаагүй гэдгийг хэлдэг. #cgo nocallback cFunctionName нь C функц cFunctionName ямар ч Go функцийг буцааж дууддаггүй гэдгийг хөрвүүлэгчид хэлдэг. Дэлгэрэнгүй мэдээллийг эндээс авах боломжтой cgo баримт бичиг.
Cgo одоогоор олон таарахгүй мэдэгдлүүдтэй C функцийн дуудлагыг эмхэтгэхээс татгалзаж байна. Жишээлбэл, хэрэв f-г хүчингүй f(int) болон хүчингүй f(давхар) гэж зарласан бол cgo нь хүчингүй дуудлагын дараалал f(0) үүсгэхийн оронд алдааг мэдээлэх болно. Энэ хувилбарт гарсан шинэ зүйл нь өөр файлд үл нийцэх мэдэгдлүүд гарч ирэх үед энэ алдааны нөхцөл байдлыг илүү сайн илрүүлэх явдал юм. #67699.
Objdump
Objdump хэрэгсэл нь одоо 64 битийн LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) болон S390X (GOARCH=s390x) дээр задлахыг дэмждэг.
Эмч нар
Шинэ туршилтын анализатор нь алдаатай нэр, хүчингүй гарын үсэг, эсвэл байхгүй танигчийг баримтжуулсан жишээ гэх мэт тест, fuzzer, benchmark болон туршилтын багц дахь жишээ мэдэгдлийн нийтлэг алдааг мэдээлдэг. Эдгээр алдаануудын зарим нь туршилт амжилтгүй болоход хүргэж болзошгүй.
Одоо байгаа printf задлагч нь fmt.Printf(s) хэлбэрийн дуудлагын оношилгоог мэдээлдэг бөгөөд s нь өөр аргументгүй тогтмол бус форматын мөр юм. Ийм дуудлага нь бараг үргэлж алдаа байдаг, учир нь s-ийн утга нь % тэмдэгтийг агуулж болно; оронд нь fmt.Print ашиглана уу. 60529. Энэхүү шалгалт нь одоо байгаа код доторх зүйлсийг хайж олох хандлагатай байдаг тул Go 1.24 хэрэгслийн сүлжээг шинэчлэх үед интеграцийн урт тасалдал үүсгэхгүйн тулд хэлний хувилбар нь (go.mod файлын go заавар эсвэл `//go:build` тайлбарт заасан) хамгийн багадаа Go 1.24 байх үед л хэрэгжинэ.
Одоо байгаа buildtag анализатор нь буруу барилгын тэмдэглэгээ байгаа тохиолдолд оношилгоог мэдээлдэг хуучин хувилбар бүтээх хязгаарлалт //go:build удирдамж руу орно уу. Жишээлбэл, //go:build go1.23.1 нь цэгийн хувилбарыг хэлнэ; оронд нь //go:build go1.23 ашиглана уу. #64127.
Одоо байгаа copylock анализатор нь хувьсагчийг гурвалсан “for” гогцоонд зарласан тохиолдолд оношилгоог мэдээлдэг, тухайлбал for i := iter(); хийсэн (i); i = next(i) { … }, sync.Mutex гэх мэт sync.Locker-г агуулна. 1.22 руу оч өмнөх давталтаас утгыг хуулж давталт бүрт шинэ хувьсагч үүсгэхийн тулд ийм гогцоонуудын үйлдлийг өөрчилсөн; Энэ хуулбарлах нь цоожны хувьд аюулгүй биш юм. #66387.
GOCACHEPROG
Дотоод cmd/go хоёртын болон тестийн кэшлэх механизмыг одоо cmd/go хэрэгсэл болон GOCACHEPROG орчны хувьсагчаар нэрлэгдсэн хүүхэд процессын хооронд JSON протоколыг хэрэгжүүлдэг хүүхэд процессууд хэрэгжүүлж болно. Өмнө нь GOEXPERIMENT-д зориулагдсан байсан. Протоколын дэлгэрэнгүй мэдээллийг эндээс харж болно баримт бичиг.
Дуусгах хугацаа
Ажиллах үеийн гүйцэтгэлийн хэд хэдэн сайжруулалт нь CPU-ийн нэмэлт ачааллыг хэд хэдэн төлөөллийн жишиг үзүүлэлтээр дунджаар 2-3%-иар бууруулсан. Үр дүн нь програмаас хамаарч өөр өөр байж болно. Эдгээр сайжруулалтууд дээр суурилсан шинэ бүтээгдсэн газрын зургийн хэрэгжилт орно Шведийн ширээ, жижиг объектын санах ойг илүү үр дүнтэй хуваарилах, mutex-ийн дотоод ажиллах цагийн шинэ хэрэгжилт.
Шинэ суурилагдсан газрын зургийн хэрэгжилт болон шинэ дотоод ажиллах цагийн мутексийг бүтээх үед GOEXPERIMENT=noswissmap болон GOEXPERIMENT=nospinbitmutex-ийг тус тус тохируулснаар идэвхгүй болгож болно.
Хөрвүүлэгч
Хөрвүүлэгч нь cgo-ийн үүсгэсэн хүлээн авагчийн төрлүүдтэй шинэ аргуудыг тодорхойлохыг аль хэдийн хориглосон боловч төрлийн нэрээр энэ хязгаарлалтыг тойрон гарах боломжтой байв. Go 1.24 одоо хүлээн авагч нь cgo-ээр үүсгэгдсэн төрлийг шууд болон шууд бусаар (төрлийн өөр нэрээр) илэрхийлдэг бол алдааг байнга мэдээлдэг.
Холбогч
Холбогч нь өгөгдмөлөөр ELF платформ дээр GNU бүтээх танигч (ELF оруулга NT_GNU_BUILD_ID) болон macOS дээр UUID (Mach-O ачаалах тушаал LC_UUID) үүсгэдэг. Барих ID эсвэл UUID нь Go бүтээх ID-аас гаралтай. Үүнийг -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.Create, os.Root.Mkdir и os.Root.Stat.
Шинэ жишиг онцлог
Бенчмаркууд одоо илүү хурдан, алдаа багатай аргыг ашиглах боломжтой болсон тест хийх.Б.Гогц bN like for мужид хамаарах ердийн давталтын бүтцүүдийн оронд b.Loop() { … } шиг жишиг дээр давтах. Энэ нь хоёр чухал давуу талтай:
- Жишиг функц нь -count бүрт яг нэг удаа хийгддэг тул үнэтэй тохируулга, цэвэрлэх алхмуудыг зөвхөн нэг удаа гүйцэтгэдэг.
- Функцийн дуудлагын параметрүүд болон үр дүн нь үргэлжлүүлэн ажиллаж, хөрвүүлэгч нь давталтын биеийг бүрэн оновчтой болгохоос сэргийлдэг.
Сайжруулсан эцсийн боловсруулагчид
Шинэ шинж тэмдэг runtime.AddCleanup -аас илүү уян хатан, илүү үр ашигтай, алдаа бага гаргадаг дуусгах механизм юм runtime.SetFinalizer. AddCleanup нь цэвэрлэх функцийг объектод ашиглах боломжгүй болсон даруйд ажиллуулдаг. Гэсэн хэдий ч SetFinalizer-аас ялгаатай нь олон цэвэрлэгээг нэг объектод хавсаргаж, цэвэрлэгээг дотоод заагчтай холбож болно, цэвэрлэгээ нь объектууд цикл үүсгэх үед гоожих шалтгаан болдоггүй, цэвэрлэгээ нь объект эсвэл түүний зааж буй объектыг задлахыг хойшлуулдаггүй. Шинэ код нь SetFinalizer-ээс AddCleanup-ийг илүүд үзэх ёстой.
Шинэ сул багц
Шинэ багц сул дорой сул үзүүлэлтүүдийг өгдөг.
Сул заагч нь санах ойн хэмнэлттэй бүтцийг бий болгоход зориулагдсан доод түвшний команд юм, тухайлбал утгыг буулгах сул толь бичиг, багцад хамрагдаагүй аливаа зүйлийг каноникжуулах толь бичиг. өвөрмөц, мөн төрөл бүрийн кэшүүд. Эдгээр хэрэглээний тохиолдлуудыг дэмжихийн тулд энэ хувилбарыг бас өгдөг runtime.AddCleanup и mapphash.Харьцуулах боломжтой.
Шинэ крипто/mlkem багц
Шинэ багц крипто/mlkem ML-KEM-768 ба ML-KEM-1024-ийг хэрэгжүүлдэг.
ML-KEM бол өмнө нь Kyber гэж нэрлэгддэг байсан ба квантын дараах түлхүүр солилцооны механизм юм FIPS 203.
crypto/hkdf, crypto/pbkdf2 болон crypto/sha3 шинэ багцууд
Шинэ багц крипто/hkdf -д тодорхойлсон HMAC-д суурилсан "Задлах ба Өргөтгөх" түлхүүр гарган авах функцийг HKDF хэрэгжүүлдэг. RFC 5869.
Шинэ багц крипто/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 нь Go crypto module v1.0.0-г агуулдаг бөгөөд одоогоор CMVP-ээр магадлан итгэмжлэгдсэн лабораторид туршиж байна.
Шинэ туршилтын багцын туршилт/синк тест
Шинэ туршилтын багц туршилт/синктур Зэрэгцээ кодыг туршихад дэмжлэг үзүүлдэг.
- үйл ажиллагаа synctest.run тусгаарлагдсан "хөөс" дотор горутинуудын бүлгийг ажиллуулдаг. Багц функцийн хөөс дотор цаг хугацаа хуурамч цаг дээр ажиллах.
- Чиг үүрэг synctest. Хүлээгээрэй Одоогийн бөмбөлөг дотор бүх gooutines хаагдах хүртэл хүлээнэ үү.
Дэлгэрэнгүй мэдээллийг багцын баримтаас олж болно.
Synctest багц нь туршилтынх бөгөөд GOEXPERIMENT=synctest-ыг тохируулснаар идэвхжүүлэх шаардлагатай. Багцын API нь дараагийн хувилбаруудад өөрчлөгдөж магадгүй. IN #67434 Та дэлгэрэнгүй мэдээллийг харж, санал хүсэлтээ өгөх боломжтой.
Номын сангийн жижиг өөрчлөлтүүд
архив
Архив/зип болон архив/tar дахь (*Writer.AddFS) хэрэглүүрүүд одоо хоосон лавлахын лавлах толгойг бичиж байна.
байт
Багц байт давталттай ажилладаг хэд хэдэн функцийг нэмдэг:
- Lines Байтын зүсмэл дэх шинэ мөрөөр тусгаарлагдсан мөрүүдийн давталтыг буцаана.
- SplitSeq нь ялгагчаар тусгаарлагдсан байт зүсмэлийн бүх дэд хэсгүүдийн давталтыг буцаана.
- SplitAfterSeq нь байт зүсмэлийн дэд хэсгүүдийн давталтыг буцаана, ялгагч тохиолдох бүрийн дараа хуваагдана.
- FieldsSeq тодорхойлогдсон зай тэмдэгтүүдийн дарааллыг тойрсон байт зүсмэлийн дэд хэсгүүдийн давталтыг буцаана unicode.IsSpace
- FieldsFuncSeq предикатыг хангасан Юникод кодын цэгүүдийн дарааллыг тойрсон байт зүсмэлийн дэд хэсгүүдийн давталтыг буцаана.
крипто/aes
Буцах утга NewChipher нь NewCTR, NewGCM, NewCBCEncrypter, NewCBCDecrypter аргыг ашиглахаа больсон. Эдгээр аргууд нь бичиг баримтгүй байсан бөгөөд бүх архитектурт байдаггүй. Одоо утга Блок зохих функцууд руу шууд дамжуулах ёстой крипто/шифр. Одоогоор крипто/шифр эдгээр аргуудыг стандарт номын сангаар дэмжихээ больсон ч Блокийн утгууд дээр шалгасаар байна.
крипто/шифр
Шинэ шинж тэмдэг NewGCMWithRandomNonce буцаж ирдэг НЭГЭН, энэ нь Seal-ийн үед санамсаргүй тохиолдлыг үүсгэж, шифр текстийн өмнө оруулах замаар AES-GCM-ийг хэрэгжүүлдэг.
Реализация Урсгал, буцаж ирэв Шинэ CTR хамт хэрэглэх үед крипто/aes одоо amd64 болон arm64 дээр хэд дахин хурдан.
NewOFB, NewCFBEncrypter и NewCFBDdecrypter одоо хуучирсан гэж зарласан. OFB болон CFB горимууд нь танигдаагүй бөгөөд энэ нь ерөнхийдөө идэвхтэй халдлагууд нь энгийн текстийг удирдах, сэргээх боломжийг олгодог. Програмыг ашиглахыг зөвлөж байна НЭГЭН хариуд нь. Баталгаажаагүй горим бол Урсгал шаардлагатай, ашиглаж болно Шинэ CTR хариуд нь.
крипто/ecdsa
PrivateKey.Sign дагуу одоо детерминистик гарын үсэг үүсгэдэг RFC 6979, санамсаргүй байдлын эх үүсвэр тэг байвал.
крипто/md5
Буцах утга md5.new, одоо бас интерфэйсийг хэрэгжүүлж байна кодчилол.binaryappender.
крипто/ранд
үйл ажиллагаа Унших одоо ямар ч бүтэлгүйтлийг баталгаажуулдаг. Унших явцад алдаа гарвал Унших Уншигч, хөтөлбөр бүрмөсөн зогсох болно. Өгөгдмөл Уншигч нь үргэлж амжилттай ажиллахаар баримтжуулсан байдаг тул энэ өөрчлөлт нь зөвхөн Reader хувьсагчийг хүчингүй болгодог програмуудад нөлөөлөх ёстой гэдгийг анхаарна уу. Нэг үл хамаарах зүйл бол 3.17-с өмнөх Linux цөмүүд бөгөөд анхдагч Уншигч /dev/urandom нээгдсэн хэвээр байгаа бөгөөд амжилтгүй болж магадгүй юм.
Linux 6.11 болон түүнээс хойшхи хувилбарууд дээр Reader одоо vDSO-ээр дамжуулан getrandom системийн дуудлагыг ашигладаг. Энэ нь ихэвчлэн жижиг уншихад хэд дахин хурдан байдаг.
OpenBSD Reader дээр одоо arc4random_buf(3)-г ашигладаг.
Шинэ шинж тэмдэг текст одоо криптографийн хувьд аюулгүй санамсаргүй текст мөрүүдийг үүсгэж болно.
крипто/rsa
Түлхүүрийг үүсгэх 1024 битээс бага урттай түлхүүр хүссэн тохиолдолд алдаа буцаана. Бүх гарын үсэг зурах, баталгаажуулах, шифрлэх, тайлах аргуудыг 1024 битээс бага хэмжээтэй түлхүүрээр ашиглавал алдаа гаргадаг. Ийм түлхүүрүүд нь аюултай тул ашиглах ёсгүй. GODEBUG-г тохируулж байна rsa1024min=0 нь хуучин үйлдлийг сэргээдэг боловч Go-г хөгжүүлэгчид үүнийг зөвхөн шаардлагатай үед л хийхийг зөвлөж байна, жишээ нь туршилтын файлд //go:debug rsa1024min=0 гэсэн мөрийг нэмэх замаар зөвхөн тест хийх боломжтой. Шинэ жишээ нь GenerateKey нь хэрэглэхэд хялбар стандарт 2024 бит тестийн түлхүүрээр хангадаг.
Дуудлага хийх нь илүү аюулгүй бөгөөд илүү үр дүнтэй болсон PrivateKey.Precompute нь PrivateKey.Validate. Урьдчилан тооцоолох нь одоо хэсэгчлэн бөглөсөн тохиолдолд илүү хурдан байдаг Урьдчилан тооцоолсон утгууд, жишээ нь JSON-оос түлхүүр задлах үед.
Багц нь одоо Баталгаажуулах гэж дуудаагүй байсан ч хүчингүй түлхүүрүүдээс татгалздаг Түлхүүрийг үүсгэх одоо эвдэрсэн санамсаргүй байдлын эх сурвалжийн шинэ алдааг буцаах боломжтой. Талбайнууд Дунд хэсэг и Урьдчилан тооцоолсон бүтэц Хувийн түлхүүр Одоо зарим утгууд дутуу байсан ч ашиглаж, баталгаажуулдаг. Мөн доор тайлбарласан RSA түлхүүрүүдийг задлан шинжлэх, задлахад зориулсан crypto/x509-д өөрчлөлт орсон.
SignPKCS1v15 и VerifyPKCS1v15 одоо SHA-512/224, SHA-512/256 болон SHA-3-ыг дэмждэг.
Түлхүүрийг үүсгэх одоо хувийн экспонент үүсгэхийн тулд арай өөр аргыг ашигладаг (Эйлер функцийн оронд Кармайкл функц). Зөвхөн анхны тоонуудаас түлхүүрүүдийг гаднаас нь сэргээдэг ховор програмууд нь өөр боловч нийцтэй үр дүнг гаргаж болно.
Нийтийн болон хувийн түлхүүрүүд дээрх үйлдлүүд одоо wasm дээр хоёр дахин хурдан болсон.
крипто/ша*
- крипто/sha1: буцаах утга ша1.Шинэ одоо бас интерфэйсийг хэрэгжүүлж байна кодчилол.binaryappender.
- крипто/sha256: утгууд буцаж ирэв ша256.Шинэ и sha256.Шинэ224 одоо бас интерфэйсийг хэрэгжүүлж байна кодчилол.binaryappender.
- крипто/sha512: утгууд буцаж ирэв ша512.Шинэ, sha512.Шинэ384, sha512.New512_224 и sha512.New512_256, одоо бас интерфэйсийг хэрэгжүүлнэ кодчилол.binaryappender.
крипто/нарийн
Шинэ шинж тэмдэг DataIndependentTiming-тэй өгөгдлийн утгын цагтай харьцуулахад тодорхой зааварчилгааг өөрчлөхгүй байхыг баталгаажуулсан архитектурын онцлог шинж чанаруудыг идэвхжүүлсэн функцийг гүйцэтгэх боломжийг хэрэглэгчдэд олгодог. Тогтмол хугацаанд ажиллахаар бичигдсэн кодыг процессорын түвшний функцүүдээр оновчлоогүй, хувьсах хугацаанд ажиллахын тулд үүнийг ашиглаж болно. Одоогоор WithDataIndependentTiming нь arm64 дээр PSTATE.DIT битийг ашигладаг бөгөөд бусад бүх архитектурт юу ч хийхгүй. GODEBUG-г тохируулж байна dataindependenttiming=1 нь Go програмыг бүхэлд нь DIT горимыг идэвхжүүлдэг.
дүгнэлт XORBytes оролттой бүрэн давхцах эсвэл огт давхцахгүй байх ёстой. Өмнө нь зан төлөв өөрөөр тодорхойлогдоогүй байсан бол одоо XORBytes сандрах болно.
крипто/тлс
TLS сервер одоо Шифрлэгдсэн Client Hello (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-д нийцэх аргыг ашиглан серийн дугаар үүсгэх болно Сертификат.Серийн дугаар тэг, сүйрэхийн оронд.
Сертификат.Баталгаажуулах одоо RFC 5280 болон RFC 9618-д тодорхойлсон бодлогын баталгаажуулалтыг дэмждэг. Шинэ талбар VerifyOptions.CertificatePolicies хүлээн зөвшөөрөгдсөн багц бодлогод тохируулж болно OIDs. Зөвхөн хүчинтэй бодлогын график бүхий сертификатын сүлжээг буцаах болно Сертификат.Баталгаажуулах.
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-ийг аль хэдийн хэрэгжүүлсэн стандарт номын сангийн төрлөөр хэрэгжиж байна.
кодчилол/json
Барилга барих үед бүтцийн талбарын тэмдэглэгээнд шинэ тэг оруулах сонголт бүхий бүтцийн талбар нь утга нь тэг байвал орхигдоно. Хэрэв талбарын төрөл нь IsZero() bool аргатай бол утгыг тэг эсэхийг тодорхойлоход ашиглана. Үгүй бол утга нь тэг байх болно түүний төрөлд зориулсан null утга. Орхих талбарын шошго нь хоосон утгыг орхих зорилготой үед орхигдуулахаас илүү цэвэр бөгөөд алдаа багатай байдаг. Ялангуяа 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 Interface. Methods MethodSet. Methods Нэрлэсэн.Арга Хамрах хүрээ.Хүүхэд Бүтэц. Талбарууд Tuple.Variables TypeList.Types TypeParamList.TypeParams Холбоо.Нөхцөл
хэш/*
- hash/adler32: буцаах утга Шинэ, одоо бас интерфэйсийг хэрэгжүүлж байна кодчилол.binaryappender
- hash/crc32: утгууд буцаж ирэв Шинэ и ШинэIEEE, одоо бас интерфэйсийг хэрэгжүүлнэ кодчилол.binaryappender
- hash/crc64: буцаах утга Шинэ, одоо бас интерфэйсийг хэрэгжүүлж байна кодчилол.binaryappender
- hash/fnv: утгууд буцаж ирэв New32 Шинэ32а New64 Шинэ64а New128 и Шинэ128а, одоо бас интерфэйсийг хэрэгжүүлнэ кодчилол.binaryappender
- хэш/maphash: шинэ боломжууд Харьцуулах боломжтой и Харьцуулж бичих харьцуулж болох дурын утгын хэшийг тооцоолж болно. Энэ нь Go толь бичгийн түлхүүр болгон ашиглаж болох бүх зүйлийг хэшлэх боломжийг танд олгоно.
бүртгэл/слог
шинэ DiscardHandler нь хэзээ ч идэвхждэггүй, гаралтыг үргэлж хаядаг зохицуулагч юм.
түвшин и LevelVar одоо интерфэйсийг хэрэгжүүлнэ үү кодчилол. TextAppender.
математик/*
- математик/том: Float, Int и Харх одоо интерфэйсийг хэрэгжүүлнэ үү кодчилол. TextAppender.
- математик/ранд: хуучирсан дээд түвшний функцийн дуудлага үрийн ямар ч нөлөө үзүүлэхээ больсон. Хуучин зан үйлийг сэргээхийн тулд та ашиглаж болно GODEBUG тохиргоо randseednop=0. Илүү контекст дотор 67273 санал болгож байна.
- математик/ранд/v2: ChaCha8 и PCG одоо интерфэйсийг хэрэгжүүлнэ үү кодчилол.binaryappender.
цэвэр
ListenCondig одоо MPTCP-г дэмждэг системүүд дээр анхдагчаар ашигладаг (одоогоор зөвхөн Линукс).
IP одоо интерфэйсийг хэрэгжүүлж байна кодчилол. TextAppender.
net/http
Хязгаарлалт өөрчлөгдсөн Тээвэр хүсэлтийн хариуд хүлээн авсан 1xx мэдээллийн хариуд. Өмнө нь энэ нь хүсэлтийг зогсоож, 5-аас дээш 1xx хариулт хүлээн авсны дараа алдаа буцаадаг байсан. Энэ нь одоо зөвхөн бүх 1xx хариултын нийт хэмжээ тохиргооны тохиргооноос хэтэрсэн тохиолдолд л алдаа гаргана Transport.MaxResponseHeaderBytes.
Мөн хүсэлт нь хянах дэгээтэй үед net/http/httptrace.ClientTrace.Got1xxResponse, одоо нийт хариултын тоонд 1xx хязгаарлалт байхгүй. Got1xxResponse дэгээ нь хүсэлтийг зогсоох алдаа гаргаж болно.
Тээвэр и Сервер одоо HTTP/2 протоколын тохиргоог тохируулах боломжийг олгодог HTTP2 талбартай байна.
Шинэ талбарууд Сервер.Протоколууд и Тээвэрлэлт.Протоколууд сервер эсвэл үйлчлүүлэгч ямар HTTP протоколуудыг ашиглахыг тохируулах энгийн аргыг өгнө.
Сервер болон үйлчлүүлэгчийг шифрлэгдээгүй HTTP/2 холболтыг дэмжихээр тохируулах боломжтой.
Хэзээ Сервер.Протоколууд 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). Хуучирсан "Upgrade: h2c" гарчгийг дэмждэггүй.
net/netip
Нэмэлт, AddrPort и Ачаалал одоо интерфэйсүүдийг хэрэгжүүлэх кодчилол.binaryappender и кодчилол. TextAppender.
net/url
URL одоо бас интерфэйсийг хэрэгжүүлж байна кодчилол.binaryappender.
os/хэрэглэгч
Windows дээр Одоогийн одоо Windows Nano серверт ашиглах боломжтой. Нано серверт байхгүй NetApi32 номын сангийн функцуудыг ашиглахаас зайлсхийхийн тулд хэрэгжилтийг шинэчилсэн.
Windows дээр Одоогийн, Хайх и LookupId Одоо дараах суурилуулсан хэрэглэгчийн үйлчилгээний бүртгэлийг дэмждэг:
- NT AUTORITYSYSTEM
- NT-ийн эрх мэдэл бүхий орон нутгийн үйлчилгээ
- NT AUTHORITYNETWORK ҮЙЛЧИЛГЭЭ
Windows дээр Одоогийн Одоогийн хэрэглэгч удаашралтай домэйнд нэгдсэн үед ихээхэн хурдассан бөгөөд энэ нь олон корпорацийн хэрэглэгчдийн нийтлэг тохиолдол юм. Шинэ хэрэгжүүлэлтийн гүйцэтгэл нь өмнөх хэрэгжилттэй харьцуулахад миллисекундын дарааллаар байгаа бөгөөд үүнийг дуусгахад хэдэн секунд, бүр хэдэн минут зарцуулагдана.
Windows дээр Одоогийн одоо одоогийн хэлхээг өөр хэрэглэгчийн дүрд хувиргах үед процесс эзэмшигчийн хэрэглэгчийг буцаана. Өмнө нь энэ нь алдаа гаргаж байсан.
regexp
Regexp одоо интерфэйсийг хэрэгжүүлж байна кодчилол. TextAdapter.
ажиллах хугацаа
үйл ажиллагаа ГОРООТ одоо хуучирсан. Шинэ орчинд та "go" хоёртын файлыг тодорхойлохын тулд системийн замыг, GOROOT-г тодорхойлохдоо go env GOROOT ашиглахыг илүүд үзэх хэрэгтэй.
мөр
Багц мөр давталттай ажиллах хэд хэдэн функцийг нэмдэг:
- Lines Мөр дэх шинэ мөрөөр тусгаарлагдсан мөрүүдийн давталтыг буцаана.
- SplitSeq тусгаарлагчаар тусгаарлагдсан мөрийн бүх дэд мөрөнд давталт буцаана.
- SplitAfterSeq Мөрийн дэд мөрүүд дээр давтагчийг буцаана, тусгаарлах тохиолдол бүрийн дараа хуваагдана.
- FieldsSeq Тодорхойлсны дагуу хоосон зайны тэмдэгтүүдийн дарааллын эргэн тойронд мөрийн дэд мөрүүд дээр давталт буцаанаunicode.IsSpace
- FieldsFuncSeq Предикатыг хангасан Юникод кодын цэгүүдийн дарааллын эргэн тойрон дахь мөрийн дэд мөрүүдийн давталтыг буцаана.
синк хийх
Реализация sync.map Гүйцэтгэлийг сайжруулах, ялангуяа толь бичгийн өөрчлөлтийг сайжруулах зорилгоор өөрчлөгдсөн. Жишээлбэл, том толь бичгүүдэд зөрчилдөөнтэй олонлогийг өөрчлөх магадлал бага байдаг бөгөөд толь бичгийн ачаалал багатай байхын тулд бүрдүүлэх хугацаа шаардагдахгүй.
Хэрэв танд ямар нэгэн асуудал тулгарвал хуучин хэрэгжилт рүү буцахын тулд бүтээх явцад GOEXPERIMENT=nosynchashtriemap гэж тохируулна уу. асуудлын маягтыг бөглөнө үү.
шинжилгээ хийх
Шинэ аргууд T. Контекст и B. Контекст Туршилт дууссаны дараа болон тест цэвэрлэх функцийг гүйцэтгэхээс өмнө хаягдсан контекстийг буцаана.
Шинэ аргууд Т.Чдир и Б.Чдир туршилт эсвэл жишиг туршилтын хугацаанд ажлын лавлахыг өөрчлөхөд ашиглаж болно.
текст/загвар
Загварууд одоо range-over-fuc болон range-over-int-ийг дэмждэг.
цаг хугацаа
цаг одоо интерфэйсүүдийг хэрэгжүүлж байна кодчилол.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
WebAssembly хост руу функцуудыг экспортлохын тулд go:wasmexport хөрвүүлэгчийн зааврыг Go программд нэмсэн.
WebAssembly System Interface Preview 1-д (GOOS=wasip1 GOARCH=wasm) Go 1.24 нь Go програмыг дараах байдлаар бүтээхийг дэмждэг. реактор/номын сан бүтээх тугийг зааж өгснөөр -buildmode=c-shared.
Одоо go:wasmimport функцийн аргумент эсвэл үр дүнгийн төрлөөр илүү олон төрлийг зөвшөөрдөг. Ялангуяа bool, string, uintptr болон зарим төрлийн заагчийг зөвшөөрдөг (дэлгэрэнгүйг үзнэ үү баримт бичиг), аль хэдийн зөвшөөрөгдсөн 32 бит ба 64 бит бүхэл тоо болон хөвөгч цэгийн төрлүүдийн хамт мөн unsafe.Pointer. Эдгээр төрлийг go:wasmexport функцийн аргумент эсвэл үр дүнгийн төрлөөр зөвшөөрдөг.
WebAssembly-д зориулсан дэмжлэг файлуудыг misc/wasm-аас lib/wasm руу зөөсөн.
Анхны санах ойн хэмжээ мэдэгдэхүйц багассан, ялангуяа жижиг WebAssembly програмуудын хувьд.
Windows
32 битийн windows/arm порт (GOOS=windows GOARCH=arm) эвдэрсэн гэж тэмдэглэгдсэн. Дэлгэрэнгүйг дотор #70705
Эх сурвалж: linux.org.ru
