рдЧреЛ рднрд╛рд╖рд╛ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 1.24, рдЫрд╣ рдорд╣реАрдиреЗ рдмрд╛рдж рдЖрдпрд╛ рд╣реИ рдЬрд╛рдУ 1.23 рдЬрд╛рдУ. рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдЯреВрд▓рдЪреЗрди, рд░рдирдЯрд╛рдЗрдо рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╣реИрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рджреА рдЧрдИ рд╣реИ рдЕрдиреБрдХреВрд▓рддрд╛ рдХрд╛ рд╡рд╛рджрд╛ рдЧреЛ 1. рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдЪрд▓рддреЗ рд░рд╣реЗрдВрдЧреЗред
рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди
Go 1.24 рдЕрдм рдкреВрд░реНрдгрддрдГ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо: рдПрдХ рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдо рдХреЛ рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢. рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ GOEXPERIMENT=noaliastypeparams; рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рд╣рд╛рд▓рд╛рдБрдХрд┐, Go 1.25 рдореЗрдВ Aliastypeparams рд╡рд┐рдХрд▓реНрдк рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрдкрдХрд░рдг
рдЬрд╛рдУ рдЖрджреЗрд╢
рдЧреЛ рдореЙрдбреНрдпреВрд▓ рдЕрдм go.mod рдореЗрдВ рдЯреВрд▓ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдГ тАЬtools.goтАЭ рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЦрд╛рд▓реА рдЖрдпрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЯреВрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкрд┐рдЫрд▓реА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЧреЛ рдЯреВрд▓ рдХрдорд╛рдВрдб рдЕрдм рдЧреЛ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреВрд▓реНрд╕ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрди рдЯреВрд▓реНрд╕ рдХреЛ рднреА рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ рдкреНрд░рд▓реЗрдЦрди.
go get рдХреЗ рд▓рд┐рдП рдирдпрд╛ -tool рдлреНрд▓реИрдЧ, require рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ tool рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдирдпрд╛ рдореЗрдЯрд╛-рдкреИрдЯрд░реНрди рдЯреВрд▓ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреЛ рдЧреЗрдЯ рдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрди рд╕рднреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЧреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА GOBIN рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЧреЛ рд░рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдП рдЧрдП рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдФрд░ рдирдП рдЧреЛ рдЯреВрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдм рдЧреЛ рдмрд┐рд▓реНрдб рдХреИрд╢ рдореЗрдВ рдХреИрд╢ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рд╕реЗ рдмрдврд╝реА рд╣реБрдИ рдХреИрд╢ рдХреЗ рдХрд╛рд░рдг рдмрд╛рд░-рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред #69290.
рдЧреЛ рдмрд┐рд▓реНрдб рдФрд░ рдЧреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдЕрдм -json рдлреНрд▓реИрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕рдВрд░рдЪрд┐рдд JSON рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд░реВрдк рд╡рд┐рд╡рд░рдг go help buildjson рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, go test -json рдЕрдм рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ JSON рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдо JSON рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдирдП рдПрдХреНрд╢рди рдкреНрд░рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╡реЗ рдкрд░реАрдХреНрд╖рдг рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд┐рд▓реНрдб рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ GODEBUG рд╕реЗрдЯрдЕрдк gotestjsonbuildtext=1.
рдирдпрд╛ GOAUTH рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░, рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рдкреБрд▓ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдк go help goauth рдореЗрдВ рд╡рд┐рд╡рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм go build рдХрдорд╛рдВрдб рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдХрд▓рд┐рдд рдмрд╛рдЗрдирд░реА рдореЗрдВ, рдПрдХ рдЯреИрдЧ рдФрд░/рдпрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рдпрджрд┐ рдХреЛрдИ рдЕрдкреНрд░рддрд┐рдмрджреНрдз рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ рддреЛ +dirty рдкреНрд░рддреНрдпрдп рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред -buildvcs=false рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдЗрдирд░реА рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирдИ GODEBUG рд╕реЗрдЯрдЕрдк рдЯреВрд▓рдЪреЗрдирдЯреНрд░реЗрд╕=1 рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреЛ рдХрдорд╛рдВрдб рдореЗрдВ рдЯреВрд▓рдЪреЗрди рдЪрдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реАрдЬреАрдУ
Cgo рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП C рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред #cgo noescape cFunctionName рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ C рдлрд╝рдВрдХреНрд╢рди cFunctionName рдХреЛ рдкрд╛рд╕ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдПрд╕реНрдХреЗрдк рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред #cgo nocallback cFunctionName рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ C рдлрд╝рдВрдХреНрд╢рди cFunctionName рдХрд┐рд╕реА рднреА Go рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓рдмреИрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ рд╕реАрдЬреАрдУ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг.
Cgo рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕реЗ C рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдЕрд╕рдВрдЧрдд рдШреЛрд╖рдгрд╛рдПрдВ рд╣реЛрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ f рдХреЛ void f(int) рдФрд░ void f(double) рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ cgo рд╕рдВрднрд╡рддрдГ рдПрдХ рдЕрдорд╛рдиреНрдп рдХреЙрд▓рд┐рдВрдЧ рдЕрдиреБрдХреНрд░рдо f(0) рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдирдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрд╕рдВрдЧрдд рдШреЛрд╖рдгрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ, рддреЛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред #67699.
рдСрдмреНрдЬрдбрдВрдк
objdump рдЙрдкрдХрд░рдг рдЕрдм 64-рдмрд┐рдЯ LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64), рдФрд░ S390X (GOARCH=s390x) рдкрд░ рд╡рд┐рд╕рдВрдпреЛрдЬрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рд╡рд╕рд╛
рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░реАрдХреНрд╖рдг, рдлрдЬрд░, рдмреЗрдВрдЪрдорд╛рд░реНрдХ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕реБрдЗрдЯреНрд╕ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдШреЛрд╖рдгрд╛рдУрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╡рд┐рдХреГрдд рдирд╛рдо, рдЕрдорд╛рдиреНрдп рд╣рд╕реНрддрд╛рдХреНрд╖рд░, рдпрд╛ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдЧреИрд░-рдореМрдЬреВрдж рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдореМрдЬреВрджрд╛ printf рдкрд╛рд░реНрд╕рд░ рдЕрдм fmt.Printf(s) рдлреЙрд░реНрдо рдХреЗ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ s рдПрдХ рдЧреИрд░-рд╕реНрдерд┐рд░ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред рдРрд╕реА рдХреЙрд▓ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд╣реЛрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ s рдХреЗ рдорд╛рди рдореЗрдВ % рд╡рд░реНрдг рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕рдХреЗ рдмрдЬрд╛рдп fmt.Print рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ. 60529. рдпрд╣ рдЬрд╛рдВрдЪ рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ рддрднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг (рдЬреИрд╕рд╛ рдХрд┐ go.mod рдлрд╝рд╛рдЗрд▓ рдХреЗ go рдирд┐рд░реНрджреЗрд╢ рдпрд╛ `//go:build` рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХрдо рд╕реЗ рдХрдо Go 1.24 рд╣реЛ, рддрд╛рдХрд┐ Go 1.24 рдЯреВрд▓рдЪреЗрди рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рд▓рдВрдмреЗ рдПрдХреАрдХрд░рдг рдмреНрд░реЗрдХ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред
рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдбрдЯреИрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдм рдЧрд▓рдд рдмрд┐рд▓реНрдбрдЯреИрдЧ рд╣реЛрдиреЗ рдкрд░ рдирд┐рджрд╛рди рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрдорд╛рдг рд╕реАрдорд╛ //go:build рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЬрд╛рдПрдБ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, //go:build go1.23.1 рдПрдХ рдмрд┐рдВрджреБ рд░рд┐рд▓реАрдЬ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ; рдЗрд╕рдХреЗ рдмрдЬрд╛рдп //go:build go1.23 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ. #64127.
рдореМрдЬреВрджрд╛ рдХреЙрдкреАрд▓реЙрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдм рдПрдХ рдирд┐рджрд╛рди рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдПрдХ рдЪрд░ рдХреЛ рдЯреНрд░рд┐рдкрд▓ "рдлреЙрд░" рд▓реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ for i := iter(); рдХрд┐рдпрд╛(i); i = next(i) { тАж }, рдЗрд╕рдореЗрдВ sync.Locker рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреИрд╕реЗ sync.Mutex. рдЬрд╛рдУ 1.22 рдЬрд╛рдУ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реВрдк рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛; рдпрд╣ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рдХрд░рдг рддрд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред #66387.
рдЧреЛрдХрд╛рдЪреЗрдкреНрд░реЛрдЧ
рдЖрдВрддрд░рд┐рдХ cmd/go рдмрд╛рдЗрдирд░реА рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдХреЛ рдЕрдм cmd/go рдЯреВрд▓ рдФрд░ GOCACHEPROG рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рджреНрд╡рд╛рд░рд╛ рдирд╛рдорд┐рдд рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рдХреЗ рдмреАрдЪ JSON рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдпрд╣ GOEXPERIMENT рдХреЗ рд▓рд┐рдП рдерд╛ред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдкреНрд░рд▓реЗрдЦрди.
рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп
рдХрдИ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░реЛрдВ рдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ CPU рдУрд╡рд░рд╣реЗрдб рдХреЛ рдФрд╕рддрди 2-3% рддрдХ рдХрдо рдХрд░ рджрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдо рдЖрд╡реЗрджрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╕реБрдзрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдирд┐рдореНрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рд╕реНрд╡реАрдбрд┐рд╢ рдЯреЗрдмрд▓реНрд╕, рдЫреЛрдЯреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдореЛрд░реА рдХрд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЖрд╡рдВрдЯрди, рдФрд░ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХрд╛ рдПрдХ рдирдпрд╛ рдЖрдВрддрд░рд┐рдХ рд░рдирдЯрд╛рдЗрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рдирдП рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдирдП рдЖрдВрддрд░рд┐рдХ рд░рдирдЯрд╛рдЗрдо рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдХреНрд░рдорд╢рдГ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ GOEXPERIMENT=noswissmap рдФрд░ GOEXPERIMENT=nospinbitmutex рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрдХрд▓рдХ
рдХрдВрдкрд╛рдЗрд▓рд░ рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА cgo рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд░рд┐рд╕реАрд╡рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдирдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рджреА рдереА, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рджреВрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рдпрджрд┐ рд░рд┐рд╕реАрд╡рд░ рд╕реАрдЬреАрдУ-рдЬрдирд░реЗрдЯреЗрдб рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рдпрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ (рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рддреЛ рдЧреЛ 1.24 рдЕрдм рд╣рдореЗрд╢рд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
рд▓рд┐рдВрдХрд░
рд▓рд┐рдВрдХрд░ рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ ELF рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдПрдХ GNU рдмрд┐рд▓реНрдб рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ (ELF рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ NT_GNU_BUILD_ID) рдФрд░ macOS рдкрд░ рдПрдХ UUID (Mach-O рд▓реЛрдб рдХрдорд╛рдВрдб LC_UUID) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдмрд┐рд▓реНрдб рдЖрдИрдбреА рдпрд╛ UUID рдЧреЛ рдмрд┐рд▓реНрдб рдЖрдИрдбреА рд╕реЗ рд▓реА рдЧрдИ рд╣реИред рдЗрд╕реЗ -B none рд▓рд┐рдВрдХрд░ рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдорд╛рди рдХреЗ рд╕рд╛рде -B 0xNNNN рд▓рд┐рдВрдХрд░ рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрджреЛрдиреНрдирддрд┐
рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ GO 1.22 рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕рдЕрдм Go 1.24 рдХреЛ Go 1.22.6 рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Go 1.26 рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Go 1.24 рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛-рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд╣реБрдБрдЪ
рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рдУрдПрд╕.рд░реВрдЯ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рднреАрддрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╛рд░реЛрд╣ рдУрдПрд╕.рдУрдкрдирд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддрд╛ рд╣реИ рдУрдПрд╕.рд░реВрдЯ. рд╡рд┐рдзрд┐рдпрд╛рдБ рдУрдПрд╕.рд░реВрдЯ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрдереЛрдВ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╡реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВред os.Root рдкрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ os рдкреИрдХреЗрдЬ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдПрд╕.рд░реВрдЯ.рдУрдкрди, рдУрдПрд╕.рд░реВрдЯ.рдмрдирд╛рдПрдБ, рдУрдПрд╕.рд░реВрдЯ.Mkdir ╨╕ рдУрдПрд╕.рд░реВрдЯ.рд╕реНрдЯреЗрдЯ.
рдирдИ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реБрд╡рд┐рдзрд╛
рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЕрдм рдЕрдзрд┐рдХ рддреЗрдЬрд╝, рдХрдо рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдг рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкрд░реАрдХреНрд╖рдг.рдмреА.рд▓реВрдк bN рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реВрдк рд╕рдВрд░рдЪрдирд╛рдУрдВ рдЬреИрд╕реЗ for range bN рдХреЗ рдмрдЬрд╛рдп for b.Loop() { тАж } рдЬреИрд╕реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ред рдЗрд╕рд╕реЗ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдорд┐рд▓рддреЗ рд╣реИрдВ:
- рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░рддрд┐-рдЧрдгрдирд╛ рдореЗрдВ рдареАрдХ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╣рдВрдЧреЗ рд╕реЗрдЯрдЕрдк рдФрд░ рдХреНрд▓реАрдирдЕрдк рдЪрд░рдг рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
- рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЪрд╛рд▓реВ рд░рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рд▓реВрдк рдмреЙрдбреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
рдмреЗрд╣рддрд░ рдлрд╝рд╛рдЗрдирд▓рд╛рдЗрдЬрд╝рд░
рдирдпреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд░рдирдЯрд╛рдЗрдо.AddCleanup рдПрдХ рдкреВрд░реНрдгрддрд╛ рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛, рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдФрд░ рдХрдо рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдг рд╣реИ рд░рдирдЯрд╛рдЗрдо.рд╕реЗрдЯрдлрд╛рдЗрдирд▓рд╛рдЗрдЬрд░. AddCleanup рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдПрдХ рдХреНрд▓реАрдирдЕрдк рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реА рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, SetFinalizer рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХрд╛рдзрд┐рдХ рдХреНрд▓реАрдирдЕрдк рдХреЛ рдПрдХ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрд▓реАрдирдЕрдк рдХреЛ рдЖрдВрддрд░рд┐рдХ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЪрдХреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрд▓реАрдирдЕрдк рдЖрдорддреМрд░ рдкрд░ рд▓реАрдХ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддреЗ рд╣реИрдВ, рдФрд░ рдХреНрд▓реАрдирдЕрдк рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдбреА-рдПрд▓реЛрдХреЗрд╢рди рдореЗрдВ рджреЗрд░реА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА рдУрд░ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдирдпреЗ рдХреЛрдб рдореЗрдВ SetFinalizer рдХреА рдЕрдкреЗрдХреНрд╖рд╛ AddCleanup рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдирдпрд╛ рдХрдордЬрд╝реЛрд░ рдкреИрдХреЗрдЬ
рдирдпрд╛ рдкреИрдХреЗрдЬ рдХрдордЬрд╝реЛрд░ рдХрдордЬреЛрд░ рд╕рдВрдХреЗрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ.
рдХрдордЬреЛрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╛рдердорд┐рдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рд╕реНрдореГрддрд┐-рдХреБрд╢рд▓ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреИрд╕реЗ рдорд╛рдиреЛрдВ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рд╢рдмреНрджрдХреЛрд╢, рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рди рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХреИрдиреЛрдирд┐рдХрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╢рдмреНрджрдХреЛрд╢ред рдЕрджреНрд╡рд┐рддреАрдп, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреИрд╢ред рдЗрди рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд░рд┐рд▓реАрдЬрд╝ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд░рдирдЯрд╛рдЗрдо.AddCleanup ╨╕ maphash.рддреБрд▓рдиреАрдп.
рдирдпрд╛ рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрдордПрд▓рдХреЗрдо рдкреИрдХреЗрдЬ
рдирдпрд╛ рдкреИрдХреЗрдЬ рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрдордПрд▓рдХреЗрдо рдПрдордПрд▓-рдХреЗрдИрдПрдо-768 рдФрд░ рдПрдордПрд▓-рдХреЗрдИрдПрдо-1024 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдПрдордПрд▓-рдХреЗрдИрдПрдо рдПрдХ рдкреЛрд╕реНрдЯ-рдХреНрд╡рд╛рдВрдЯрдо рдХреБрдВрдЬреА рд╡рд┐рдирд┐рдордп рддрдВрддреНрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрдмрд░ рдХреЗ рдирд╛рдо рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ FIPS 203.
рдирдП рдкреИрдХреЗрдЬ рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрдЪрдХреЗрдбреАрдПрдл, рдХреНрд░рд┐рдкреНрдЯреЛ/рдкреАрдмреАрдХреЗрдбреАрдПрдл2 рдФрд░ рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрд╕рдПрдЪрдП3
рдирдпрд╛ рдкреИрдХреЗрдЬ рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрдЪрдХреЗрдбреАрдПрдл 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 рдЕрдиреБрдкрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░реЛрдВ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕реЗрдЯ.
рдЧреЛ рдХреНрд░рд┐рдкреНрдЯреЛ рдореЙрдбреНрдпреВрд▓ рдЖрдВрддрд░рд┐рдХ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ FIPS 140-3 рдЕрдиреБрдореЛрджрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреБрдореЛрджрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреНрд░рд┐рдкреНрдЯреЛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдирдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ GOFIPS140 рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреНрд░рд┐рдкреНрдЯреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирдпрд╛ GODEBUG рд╕реЗрдЯрдЕрдк fips140 рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рдирдЯрд╛рдЗрдо рдкрд░ FIPS 140-3 рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЧреЛ 1.24 рдореЗрдВ рдЧреЛ рдХреНрд░рд┐рдкреНрдЯреЛ рдореЙрдбреНрдпреВрд▓ v1.0.0 рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реАрдПрдорд╡реАрдкреА-рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдирдпрд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдкреИрдХреЗрдЬ рдкрд░реАрдХреНрд╖рдг/рд╕рд┐рдВрдХрдЯреЗрд╕реНрдЯ
рдирдпрд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдкреИрдХреЗрдЬ рдкрд░реАрдХреНрд╖рдг/рд╕рд┐рдВрдХрдЯреЗрд╕реНрдЯ рд╕рдорд╡рд░реНрддреА рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╣реЗрддреБ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рд╕рдорд╛рд░реЛрд╣ synctest.рд░рди рдПрдХ рдкреГрдердХ "рдмрдмрд▓" рдореЗрдВ рдЧреЛрд░реВрдЯреАрди рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЪрд▓рд╛рддрд╛ рд╣реИред рдкреИрдХреЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреБрд▓рдмреБрд▓реЗ рдореЗрдВ рдкрд╣рд░ рдЭреВрдареА рдШрдбрд╝рд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
- рдХрд╛рд░реНрдп synctest.рдкреНрд░рддреАрдХреНрд╖рд╛ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдмрдмрд▓ рдореЗрдВ рд╕рднреА рдЧреЛрд░реВрдЯреАрди рдЕрд╡рд░реБрджреНрдз рди рд╣реЛ рдЬрд╛рдПрдВред
рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкреИрдХреЗрдЬ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
synctest рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╣реИ рдФрд░ рдЗрд╕реЗ GOEXPERIMENT=synctest рд╕реЗрдЯ рдХрд░рдХреЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреИрдХреЗрдЬ API рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ. рдореЗрдВ #67434 рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлреАрдбрдмреИрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЫреЛрдЯреЗ-рдореЛрдЯреЗ рдкрд░рд┐рд╡рд░реНрддрди
рд╕рдВрдЧреНрд░рд╣
рдЖрд░реНрдХрд╛рдЗрд╡/рдЬрд╝рд┐рдк рдФрд░ рдЖрд░реНрдХрд╛рдЗрд╡/рдЯрд╛рд░ рдореЗрдВ (*Writer.AddFS) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдм рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдмрд╛рдЗрдЯреНрд╕
рдкреИрдХреЗрдЬ рдмрд╛рдЗрдЯреНрд╕ рдЗрдЯрд░реЗрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
- рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдирдИ рд▓рд╛рдЗрди рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
- рд╕реНрдкреНрд▓рд┐рдЯрд╕реЗрдХ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд╕рднреА рд╕рдмрд╕реНрд▓рд╛рдЗрд╕ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
- рд╕реНрдкреНрд▓рд┐рдЯрдЖрдлреНрдЯрд░рд╕реЗрдХ рдПрдХ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд╕рдмрд╕реНрд▓рд╛рдЗрд╕ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд╛рдЬрдХ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИред
- рдлрд╝реАрд▓реНрдбреНрд╕рд╕реЗрдХ рд╕реНрдкреЗрд╕ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд╕рдмрд╕реНрд▓рд╛рдЗрд╕ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпреВрдирд┐рдХреЛрдб.IsSpace
- рдлрд╝реАрд▓реНрдбрдлрд╝рдВрдХреНрд╢рдирд╕реЗрдХ рдПрдХ рдкреНрд░реЗрдбрд┐рдХреЗрдЯ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдпреВрдирд┐рдХреЛрдб рдХреЛрдб рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд╕рдмрд╕реНрд▓рд╛рдЗрд╕ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрдИрдПрд╕
рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдиреНрдпреВрдЪрд┐рдкрд░ рдЕрдм NewCTR, NewGCM, NewCBCEncrypter, рдФрд░ NewCBCDecrypter рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрд▓рд┐рдЦрд┐рдд рдереАрдВ рддрдерд╛ рд╕рднреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░реЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереАрдВред рдЕрдм рдЗрд╕рдХрд╛ рдЕрд░реНрде рдЦрдВрдб рд╕реАрдзреЗ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрд░рд┐рдкреНрдЯреЛ/рд╕рд┐рдлрд░. рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдХреНрд░рд┐рдкреНрдЯреЛ/рд╕рд┐рдлрд░ рдЕрднреА рднреА рдмреНрд▓реЙрдХ рдорд╛рдиреЛрдВ рдкрд░ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдЕрдм рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдХреНрд░рд┐рдкреНрдЯреЛ/рд╕рд┐рдлрд░
рдирдпреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреНрдпреВGCMWithRandomNonce рд░рд┐рдЯрд░реНрди рдПрдИрдПрдбреА, рдЬреЛ рд╕реАрд▓ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдиреЙрдиреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рдФрд░ рдЗрд╕реЗ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдПрдИрдПрд╕-рдЬреАрд╕реАрдПрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдзрд╛рд░рд╛, рд▓реМрдЯрд╛ рд╣реБрдЖ рдиреНрдпреВрд╕реАрдЯреАрдЖрд░ рдЬрдм рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрдИрдПрд╕ рдЕрдм amd64 рдФрд░ arm64 рдкрд░ рдХрдИ рдЧреБрдирд╛ рддреЗрдЬред
рдиреНрдпреВрдУрдПрдлрдмреА, рдиреНрдпреВCFBEncrypter ╨╕ рдиреНрдпреВCFBрдбрд┐рдХреНрд░рд┐рдкреНрдЯрд░ рдЕрдм рдЕрдкреНрд░рдЪрд▓рд┐рдд рдШреЛрд╖рд┐рдд рдХрд░ рджрд┐рдП рдЧрдП рд╣реИрдВред рдУрдПрдлрдмреА рдФрд░ рд╕реАрдПрдлрдмреА рдореЛрдб рдЕрдкреНрд░рдорд╛рдгрд┐рдд рд╣реИрдВ, рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рд╕рдХреНрд░рд┐рдп рд╣рдорд▓реЛрдВ рдХреЛ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдПрдИрдПрдбреА рдмрджрд▓реЗ рдореЗрдВ. рдпрджрд┐ рдЕрдкреНрд░рдорд╛рдгрд┐рдд рдореЛрдб рдзрд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ, рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдиреНрдпреВрд╕реАрдЯреАрдЖрд░ рдмрджрд▓реЗ рдореЗрдВред
рдХреНрд░рд┐рдкреНрдЯреЛ/рдИрд╕реАрдбреАрдПрд╕рдП
рдирд┐рдЬреА рдХреБрдВрдЬреА.рд╕рд╛рдЗрди рдЕрдм рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдирд┐рдпрддрд╛рддреНрдордХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рддрд╛ рд╣реИ RFC 6979, рдпрджрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рд╕реНрд░реЛрдд рд╢реВрдиреНрдп рд╣реИ.
рдХреНрд░рд┐рдкреНрдЯреЛ/рдПрдордбреА5
рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп md5.рдирдпрд╛, рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░.
рдХреНрд░рд┐рдкреНрдЯреЛ/рд░реИрдВрдб
рд╕рдорд╛рд░реЛрд╣ рдкрдврд╝рдирд╛ рдЕрдм рдХреЛрдИ рд╡рд┐рдлрд▓рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдкрдврд╝рддреЗ рд╕рдордп Read рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЖрддреА рд╣реИ рдкрд╛рдардХрддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реАрдбрд░ рд╣рдореЗрд╢рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдЙрди рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рд░реАрдбрд░ рдЪрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрдкрд╡рд╛рдж 3.17 рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реАрдбрд░ рдЕрднреА рднреА /dev/urandom рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд▓рд┐рдирдХреНрд╕ 6.11 рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░, рд░реАрдбрд░ рдЕрдм vDSO рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ getrandom рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрдИ рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдЫреЛрдЯреЗ рд░реАрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред
OpenBSD Reader рдЕрдм arc4random_buf(3) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдирдпреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЕрдм рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрд░рд┐рдкреНрдЯреЛ/рдЖрд░рдПрд╕рдП
рдЬрдирд░реЗрдЯрдХреБрдВрдЬреА рдЕрдм рдпрджрд┐ 1024 рдмрд┐рдЯ рд╕реЗ рдХрдо рдХреА рдХреБрдВрдЬреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╕рднреА рд╕рд╛рдЗрди, рд╕рддреНрдпрд╛рдкрди, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрдм 1024 рдмрд┐рдЯ рд╕реЗ рдХрдо рдЖрдХрд╛рд░ рдХреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддреА рд╣реИрдВред рдРрд╕реА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред GODEBUG рдХреА рд╕реНрдерд╛рдкрдирд╛ rsa1024min=0 рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдРрд╕рд╛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдФрд░ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╣реА рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ //go:debug rsa1024min=0 рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдХрд░ред рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг GenerateKey рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдорд╛рдирдХ 2024-рдмрд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреБрдВрдЬреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдХреЙрд▓ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдХреБрд╢рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ PrivateKey.рдкреНрд░реАрдХрдВрдкреНрдпреВрдЯ рд╕реЗ PrivateKey.рд╕рддреНрдпрд╛рдкрди рдХрд░реЗрдВ. рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рднрд░реЗ рд╣реБрдП рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░реАрдХрдВрдкреНрдпреВрдЯ рдЕрдм рддреЗрдЬрд╝ рд╣реИ рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдорд╛рдирдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП JSON рд╕реЗ рдХреБрдВрдЬреА рдирд┐рдХрд╛рд▓рддреЗ рд╕рдордп.
рдкреИрдХреЗрдЬ рдЕрдм рдЕрдзрд┐рдХ рдЕрдорд╛рдиреНрдп рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА Validate рдХреЛ рдХреЙрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдФрд░ рдЬрдирд░реЗрдЯрдХреБрдВрдЬреА рдЕрдм рдЯреВрдЯреЗ рд╣реБрдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд▓рд┐рдП рдирдИ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд╝реАрд▓реНрдб рдЕрднрд╛рдЬреНрдп ╨╕ рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рд╕рдВрд░рдЪрдирд╛ PrivateKey рдЕрдм рдХреБрдЫ рдорд╛рди рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдкрд░ рднреА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RSA рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдкреНрдЯреЛ/x509 рдореЗрдВ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рд╡рд░реНрдгрди рдиреАрдЪреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рд╛рдЗрдирдкреАрдХреЗрд╕реАрдПрд╕1v15 ╨╕ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВPKCS1v15 рдЕрдм SHA-512/224, SHA-512/256 рдФрд░ SHA-3 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЬрдирд░реЗрдЯрдХреБрдВрдЬреА рдЕрдм рдирд┐рдЬреА рдШрд╛рддрд╛рдВрдХ (рдпреВрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░рдорд╛рдЗрдХрд▓ рдлрд╝рдВрдХреНрд╢рди) рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрд▓рдн рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛ рдмрд╛рд╣реНрдп рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рднрд┐рдиреНрди рд▓реЗрдХрд┐рди рд╕рдВрдЧрдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм wasm рдкрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдкрд░рд┐рдЪрд╛рд▓рди рджреЛрдЧреБрдирд╛ рддреЗрдЬрд╝ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдХреНрд░рд┐рдкреНрдЯреЛ/рд╢рд╛*
- рдХреНрд░рд┐рдкреНрдЯреЛ/sha1: рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп sha1.рдирдпрд╛ рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░.
- рдХреНрд░рд┐рдкреНрдЯреЛ/sha256: рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди sha256.рдирдпрд╛ ╨╕ sha256.рдиреНрдпреВ224 рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░.
- рдХреНрд░рд┐рдкреНрдЯреЛ/sha512: рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди sha512.рдирдпрд╛, sha512.рдиреНрдпреВ384, sha512.New512_224 ╨╕ sha512.New512_256, рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░.
рдХреНрд░рд┐рдкреНрдЯреЛ/рд╕реВрдХреНрд╖реНрдо
рдирдпреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдбреЗрдЯрд╛рд╕реНрд╡рддрдВрддреНрд░рд╕рдордпрдХреЗрд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдорд╛рди рдХреЗ рд╕рдордп рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░ рд╕рдордп рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░-рд╕реНрддрд░реАрдп рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕рдордп рдореЗрдВ рдЪрд▓реЗред рд╡рд░реНрддрдорд╛рди рдореЗрдВ WithDataIndependentTiming arm64 рдкрд░ PSTATE.DIT рдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред GODEBUG рдХреА рд╕реНрдерд╛рдкрдирд╛ dataindependenttiming=1 рд╕рдВрдкреВрд░реНрдг рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП DIT рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред
рдЙрддреНрдкрд╛рджрди XORрдмрд╛рдЗрдЯреНрд╕ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдУрд╡рд░рд▓реИрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓реЗ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдиреНрдпрдерд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдерд╛, рдЬрдмрдХрд┐ рдЕрдм XORBytes рдкреИрдирд┐рдХ рдХрд░реЗрдЧрд╛ред
рдХреНрд░рд┐рдкреНрдЯреЛ/рдЯреАрдПрд▓рдПрд╕
TLS рд╕рд░реНрд╡рд░ рдЕрдм рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИрд▓реЛ (ECH) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдлрд╝реАрд▓реНрдб рднрд░рдХрд░ рд╕рдХреНрд╖рдо рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдбрдХреНрд▓рд╛рдЗрдВрдЯрд╣реЗрд▓реЛрдХреАрдЬрд╝.
рдПрдХ рдирдпрд╛ рдкреЛрд╕реНрдЯ-рдХреНрд╡рд╛рдВрдЯрдо рдХреБрдВрдЬреА рдПрдХреНрд╕рдЪреЗрдВрдЬ рддрдВрддреНрд░ X25519MLKEM768 рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдФрд░ рд╕рдХреНрд╖рдо рд╣реИ рдЬрдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.рд╡рдХреНрд░рдкреНрд░рд┐рдлрд░реЗрдВрд╕ рд╢реВрдиреНрдп рд╣реИ. GODEBUG рдХреА рд╕реНрдерд╛рдкрдирд╛ tlsmlkem=0 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ.
рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ X25519Kyber768Draft00 рдХреБрдВрдЬреА рд╡рд┐рдирд┐рдордп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреБрдВрдЬреА рд╡рд┐рдирд┐рдордп рдЖрджреЗрд╢ рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрд░рд┐рдкреНрдЯреЛ/рдЯреАрдПрд▓рдПрд╕ рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрджреЗрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.рд╡рдХреНрд░рдкреНрд░рд┐рдлрд░реЗрдВрд╕ рдЕрдм рдЗрд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╖рдп-рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб рднрд░рддреЗ рд╕рдордп рдХреМрди рд╕реЗ рдХреБрдВрдЬреА рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдирдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреНрд▓рд╛рдЗрдВрдЯрд╣реИрд▓реЛрдЗрдВрдлреЛ.рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИрд▓реЛ рд╕рдВрджреЗрд╢ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ TLS рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрд░рд┐рдкреНрдЯреЛ/x509
GODEBUG рдХреА рд╕реНрдерд╛рдкрдирд╛ x509sha1 рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ. рдкреНрд░рдорд╛рдгреАрдХрд░рдг.рд╕рддреНрдпрд╛рдкрди рдЕрдм SHA-1 рдЖрдзрд╛рд░рд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ.
OID рдЕрдм рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░ ╨╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдЯреЗрдХреНрд╕реНрдЯрдПрдкреЗрдВрдбрд░.
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдиреАрддрд┐ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдкреНрд░рдорд╛рдгрдкрддреНрд░.рдиреАрддрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░.рдиреАрддрд┐рдпрд╛рдБ. рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп, рджреЛрдиреЛрдВ рдлрд╝реАрд▓реНрдб рднрд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдиреАрддрд┐ рдмрдирд╛рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ Certificate.PolicyIdentifiers рдХреЗ рдмрдЬрд╛рдп Certificate.Policies рдлрд╝реАрд▓реНрдб рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред GODEBUG рд╕реЗрдЯрдЕрдк x509usepolicies=0.
рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдПрдВ рдЕрдм рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝реАрд▓реНрдб рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп RFC 5280 рдЕрдиреБрд░реВрдк рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░.рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╢реВрдиреНрдп, рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп.
рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдЕрдм RFC 5280 рдФрд░ RFC 9618 рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдиреАрддрд┐ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдирдпрд╛ рдлрд╝реАрд▓реНрдб рд╕рддреНрдпрд╛рдкрдирд╡рд┐рдХрд▓реНрдк.рдкреНрд░рдорд╛рдгрдкрддреНрд░рдиреАрддрд┐рдпрд╛рдБ рдиреАрддрд┐рдпреЛрдВ рдХреЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реЗрдЯ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдУрдЖрдИрдбреА. рдХреЗрд╡рд▓ рд╡реИрдз рдиреАрддрд┐ рдЧреНрд░рд╛рдлрд╝ рд╡рд╛рд▓реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рд╣реА рд▓реМрдЯрд╛рдИ рдЬрд╛рдПрдВрдЧреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ.
рдорд╛рд░реНрд╢рд▓рдкреАрдХреЗрд╕реАрдПрд╕8рдкреНрд░рд╛рдЗрд╡реЗрдЯрдХреА рдЕрдм рдЕрдорд╛рдиреНрдп RSA рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред (рдорд╛рд░реНрд╢рд▓рдкреАрдХреЗрд╕реАрдПрд╕1рдкреНрд░рд╛рдЗрд╡реЗрдЯрдХреА рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд▓реМрдЯрддреА рд╣реИ рдФрд░ рдЕрдорд╛рдиреНрдп рдХреБрдВрдЬрд┐рдпрд╛рдБ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд░рд╣рддрд╛ рд╣реИред)
рдкрд╛рд░реНрд╕PKCS1PrivateKey ╨╕ рдкрд╛рд░реНрд╕PKCS8PrivateKey рдЕрдм рдПрдирдХреЛрдбреЗрдб CRT рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХреА рдЧрдИ рдЕрдорд╛рдиреНрдп RSA рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рдпреЛрдЧ GODEBUG рд╕реЗрдЯрд┐рдВрдЧреНрд╕ x509rsacrt=0 CRT рдорд╛рдиреЛрдВ рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИред
рдбрд┐рдмрдЧ/рдПрд▓реНрдл
рдкреИрдХреЗрдЬ рдбрд┐рдмрдЧ/рдПрд▓реНрдл рдЧрддрд┐рд╢реАрд▓ ELF (рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдФрд░ рд▓рд┐рдВрдХрдпреЛрдЧреНрдп рдкреНрд░рд╛рд░реВрдк) рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рддреАрдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдирдИ рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓.рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕рдВрд╕реНрдХрд░рдг ELF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрддрд┐рд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдирдИ рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓.рдбрд╛рдпрдирд╛рдорд┐рдХрд╕рдВрд╕реНрдХрд░рдгрдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдЗрд╕ ELF рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреНрдп ELF рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдЕрдВрддрддрдГ, рдирдП рдХреНрд╖реЗрддреНрд░ рдкреНрд░рддреАрдХ.Hasрд╕рдВрд╕реНрдХрд░рдг ╨╕ рдкреНрд░рддреАрдХ.рд╕рдВрд╕реНрдХрд░рдгрд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рддреАрдХ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ.
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ
рджреЛ рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рдЯреЗрдХреНрд╕реНрдЯрдПрдкреЗрдВрдбрд░ ╨╕ рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдпрд╛ рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдмрд╛рдЗрдЯ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЯреЗрдХреНрд╕реНрдЯ рдорд╛рд░реНрд╢рд▓рд░ ╨╕ рдмрд╛рдЗрдирд░реА рдорд╛рд░реНрд╢рд▓рд░, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рд╕реНрд▓рд╛рдЗрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рдореМрдЬреВрджрд╛ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА TextMarshaler рдФрд░/рдпрд╛ BinaryMarshaler рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ/json
рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рд╕рдВрд░рдЪрдирд╛ рдлрд╝реАрд▓реНрдб рдЯреИрдЧ рдореЗрдВ рдирдП omitzero рд╡рд┐рдХрд▓реНрдк рд╡рд╛рд▓реЗ рд╕рдВрд░рдЪрдирд╛ рдлрд╝реАрд▓реНрдб рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЗрд╕рдХрд╛ рдорд╛рди рд╢реВрдиреНрдп рд╣реИред рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рдореЗрдВ IsZero() bool рд╡рд┐рдзрд┐ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдорд╛рди рд╢реВрдиреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдиреНрдпрдерд╛ рдорд╛рди рд╢реВрдиреНрдп рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдорд╛рди. рдЬрдм рдЙрджреНрджреЗрд╢реНрдп рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛ рддреЛ omitempty рдХреА рддреБрд▓рдирд╛ рдореЗрдВ omitzero рдлрд╝реАрд▓реНрдб рдЯреИрдЧ рдЕрдзрд┐рдХ рд╕рд╛рдлрд╝ рдФрд░ рдХрдо рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдг рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, omitempty рдХреЗ рд╡рд┐рдкрд░реАрдд, omitzero рд╢реВрдиреНрдп рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рд╕рдордп.рд╕рдордп рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ, рдЬреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдЖрдо рд╕реНрд░реЛрдд рд╣реИред
рдпрджрд┐ omitempty рдФрд░ omitzero рджреЛрдиреЛрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, рддреЛ рдорд╛рди рд░рд┐рдХреНрдд рдпрд╛ рд╢реВрдиреНрдп (рдпрд╛ рджреЛрдиреЛрдВ) рд╣реЛрдиреЗ рдкрд░ рдлрд╝реАрд▓реНрдб рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдирдорд╛рд░реНрд╢рд▓рдЯрд╛рдЗрдкрдПрд░рд░.рдлреАрд▓реНрдб рдЕрдм рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЬрд╛рдУ/рдкреНрд░рдХрд╛рд░
рд╕рднреА go/types рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЬреЛ рд╡рд┐рдзрд┐ рдпреБрдЧреНрдореЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЬреИрд╕реЗ Len() int рдФрд░ At(int) T, рдЕрдм рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рднреА рд╣реИрдВ рдЬреЛ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рд▓реМрдЯрд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд░рд▓ рдХреЛрдб рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
рдкреИрд░рд╛рдореАрдЯрд░ := fn.Type.(*types.Signature).Params() for i := 0; i < рдкреИрд░рд╛рдореАрдЯрд░.Len(); i++ { рдЙрдкрдпреЛрдЧ(рдкреИрд░рд╛рдореАрдЯрд░.At(i)) }
рдЗрд╕ рдПрдХ рдкрд░:
for param := range fn.Signature().Params().Variables() { use(param) }
рд╡рд┐рдзрд┐: рдЗрдВрдЯрд░рдлрд╝реЗрд╕.рдПрдореНрдмреЗрдбреЗрдбрдЯрд╛рдЗрдкреНрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕.рдПрдХреНрд╕рдкреНрд▓рд┐рд╕рд┐рдЯрдореЗрдердбреНрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕.рддрд░реАрдХреЗ рд╡рд┐рдзрд┐рд╕реЗрдЯ.рд╡рд┐рдзрд┐ рдирд╛рдорд┐рдд.рддрд░реАрдХреЗ рд╕реНрдХреЛрдк.рдмрдЪреНрдЪреЗ рд╕рдВрд░рдЪрдирд╛.рдХреНрд╖реЗрддреНрд░ рдЯрдкрд▓.рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдЯрд╛рдЗрдкрд╕реВрдЪреА.рдкреНрд░рдХрд╛рд░ рдЯрд╛рдЗрдкрдкреИрд░рд╛рд▓рд┐рд╕реНрдЯ.рдЯрд╛рдЗрдкрдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдШ.рд╢рд░реНрддреЗрдВ
рд╣реИрд╢/*
- рд╣реИрд╢/рдПрдбрд▓рд░32: рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдирдпрд╛, рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░
- рд╣реИрд╢/crc32: рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдирдпрд╛ ╨╕ рдирдпрд╛IEEE, рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░
- рд╣реИрд╢/crc64: рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдирдпрд╛, рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░
- рд╣реИрд╢/fnv: рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди New32 рдирдпрд╛32a New64 рдирдпрд╛64a New128 ╨╕ рдирдпрд╛128a, рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░
- рд╣реИрд╢/рдореИрдкреИрд╢: рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддреБрд▓рдиреАрдп ╨╕ рддреБрд▓рдирд╛рддреНрдордХ рд▓рд┐рдЦреЗрдВ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЗ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рд╣реИрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЧреЛ рдбрд┐рдХреНрд╢рдирд░реА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЙрдЧ/рд╕реНрд▓реЙрдЧ
рдирдпрд╛ рдбрд┐рд╕реНрдХрд╛рд░реНрдбрд╣реИрдВрдбрд▓рд░ рдПрдХ рд╣реИрдВрдбрд▓рд░ рд╣реИ рдЬреЛ рдХрднреА рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рддреНрдпрд╛рдЧ рджреЗрддрд╛ рд╣реИред
рд╕реНрддрд░ ╨╕ рд▓реЗрд╡рд▓рд╡рд╛рд░ рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдЯреЗрдХреНрд╕реНрдЯрдПрдкреЗрдВрдбрд░.
рдЧрдгрд┐рдд/*
- рдЧрдгрд┐рдд/рдмрдбрд╝рд╛: рдирд╛рд╡, Int ╨╕ рдЪреВрд╣рд╛ рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдЯреЗрдХреНрд╕реНрдЯрдПрдкреЗрдВрдбрд░.
- рдЧрдгрд┐рдд/рд░реИрдВрдб: рдмрд╣рд┐рд╖реНрдХреГрдд рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдмреАрдЬ рдЕрдм рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИ. рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ GODEBUG рд╕реЗрдЯрдЕрдк рд░реИрдВрдбрд╕реАрдбрдиреЙрдк=0. рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрдн рдкреНрд░рд╕реНрддрд╛рд╡ 67273.
- рдЧрдгрд┐рдд/рд░реИрдВрдб/v2: ChaCha8 ╨╕ PCG рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░.
рдЬрд╛рд▓
рд╕реБрдиреЛрдХрдВрдбреАрдЧ рдЕрдм рдпрд╣ рдЙрди рд╕рд┐рд╕реНрдЯрдореЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ MPTCP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕)ред
IP рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдЯреЗрдХреНрд╕реНрдЯрдПрдкреЗрдВрдбрд░.
рдиреЗрдЯ/http
рдкреНрд░рддрд┐рдмрдВрдз рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рддреНрдпреБрддреНрддрд░ рдореЗрдВ 1xx рд╕реВрдЪрдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИрдВред рдкрд╣рд▓реЗ рдпрд╣ 5 рд╕реЗ рдЕрдзрд┐рдХ 1xx рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рдерд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддрд╛ рдерд╛ред рдпрд╣ рдЕрдм рдХреЗрд╡рд▓ рддрднреА рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рднреА 1xx рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреБрд▓ рдЖрдХрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ.MaxResponseHeaderBytes.
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдХрд┐рд╕реА рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╣реБрдХ рд╣реЛрддрд╛ рд╣реИ рдиреЗрдЯ/http/httptrace.ClientTrace.Got1xxResponseрдЕрдм рдЙрддреНрддрд░реЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ 1xx. Got1xxResponse рд╣реБрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ ╨╕ рд╕рд░реНрд╡рд░ рдЕрдм рдПрдХ HTTP2 рдлрд╝реАрд▓реНрдб рд╣реИ рдЬреЛ HTTP/2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдирдпреЗ рдХреНрд╖реЗрддреНрд░ рд╕рд░реНрд╡рд░.рдкреНрд░реЛрдЯреЛрдХреЙрд▓ ╨╕ рдкрд░рд┐рд╡рд╣рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рд░реНрд╡рд░ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб HTTP/2 рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рд╕рд░реНрд╡рд░.рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрджрд┐ рд╕рд░реНрд╡рд░ рдореЗрдВ UnencrypterHTTP2 рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдкреЛрд░реНрдЯ рдкрд░ HTTP/2 рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рд╕рд░реНрд╡рд░ рдПрдХ рд╣реА рдкреЛрд░реНрдЯ рдкрд░ HTTP/1 рдФрд░ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб HTTP/2 рджреЛрдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдкрд░рд┐рд╡рд╣рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб HTTP2 рд╣реИ рдФрд░ HTTP1 рдирд╣реАрдВ рд╣реИ, рддреЛ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб HTTP/2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ http://. рдпрджрд┐ рдХрд┐рд╕реА рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЛ HTTP/1 рдФрд░ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб HTTP/2 рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд╣ HTTP/1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб HTTP/2 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди "рдлреЙрд░рд╡рд░реНрдб-рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде HTTP/2" (RFC 9113, рдЕрдиреБрднрд╛рдЧ 3.3) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реЗрдбрд░ тАЬрдЕрдкрдЧреНрд░реЗрдб: h2cтАЭ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ.
рдиреЗрдЯ/рдиреЗрдЯрд┐рдк
рдк, рдПрдбреНрд░реЗрд╕рдкреЛрд░реНрдЯ ╨╕ рдЙрдкрд╕рд░реНрдЧ рдЕрдм рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░ ╨╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдЯреЗрдХреНрд╕реНрдЯрдПрдкреЗрдВрдбрд░.
рдиреЗрдЯ/рдпреВрдЖрд░рдПрд▓
рдпреВрдЖрд░рдПрд▓ рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░.
рдУрдПрд╕/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╡рд░реНрддрдорд╛рди рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдВрдбреЛрдЬрд╝ рдиреИрдиреЛ рд╕рд░реНрд╡рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ NetApi32 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдиреИрдиреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред
рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╡рд░реНрддрдорд╛рди, рд▓реБрдХ рдЕрдк ╨╕ рд▓реБрдХрдЕрдкрдЖрдИрдбреА рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
- рдПрдирдЯреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдгрд╛рд▓реА
- рдПрдирдЯреА рдкреНрд░рд╛рдзрд┐рдХрд░рдгрд╕реНрдерд╛рдиреАрдп рд╕реЗрд╡рд╛
- рдПрдирдЯреА рдЕрдереЙрд░рд┐рдЯреА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛
рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╡рд░реНрддрдорд╛рди рдЬрдм рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдзреАрдореЗ рдбреЛрдореЗрди рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдЧрддрд┐ рдХрд╛рдлреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдХрдИ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рд╣реИред рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдм рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рдЬрдмрдХрд┐ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрд╕реЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдХрдИ рд╕реЗрдХрдВрдб, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд┐рдирдЯ рднреА рд▓рдЧ рд╕рдХрддреЗ рдереЗред
рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╡рд░реНрддрдорд╛рди рдЕрдм рдЬрдм рд╡рд░реНрддрдорд╛рди рдереНрд░реЗрдб рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкреНрд░рддрд┐рд░реВрдкрдг рдХрд░ рд░рд╣рд╛ рд╣реЛ рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рд╛рдореА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рддрд╛ рдерд╛.
regexp
рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдЯреЗрдХреНрд╕реНрдЯрдПрдбрд╛рдкреНрдЯрд░.
рдХреНрд░рдо
рд╕рдорд╛рд░реЛрд╣ рдЧрд░реЛрда рдЕрдм рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реИ. рдирдП рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдЖрдкрдХреЛ "go" рдмрд╛рдЗрдирд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ GOROOT рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП go env GOROOT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рддрд╛рд░
рдкреИрдХреЗрдЬ рддрд╛рд░ рдЗрдЯрд░реЗрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
- рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдирдИ рд▓рд╛рдЗрди рд╕реЗ рдЕрд▓рдЧ рдХреА рдЧрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
- рд╕реНрдкреНрд▓рд┐рдЯрд╕реЗрдХ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рднреА рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
- рд╕реНрдкреНрд▓рд┐рдЯрдЖрдлреНрдЯрд░рд╕реЗрдХ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд╛рдЬрдХ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИред
- рдлрд╝реАрд▓реНрдбреНрд╕рд╕реЗрдХ рдЬреИрд╕рд╛ рдХрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╡рд░реНрдгреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИрдпреВрдирд┐рдХреЛрдб.IsSpace
- рдлрд╝реАрд▓реНрдбрдлрд╝рдВрдХреНрд╢рдирд╕реЗрдХ рдпреВрдирд┐рдХреЛрдб рдХреЛрдб рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░реЗрдбрд┐рдХреЗрдЯ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
рд╕рд┐рдВрдХ
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд┐рдВрдХ.рдореИрдк рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реЗ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдкрд░ рдЕрд╕рдВрдмрджреНрдз рд╕реЗрдЯ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд┐рд╡рд╛рдж рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛрддреА рд╣реИ, рддрдерд╛ рдХрдо рд╡рд┐рд╡рд╛рдж рд╢рдмреНрджрдХреЛрд╢ рд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдмрд┐рд▓реНрдб-рдЕрдк рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди GOEXPERIMENT=nosynchashtriemap рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдХреГрдкрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рдкрддреНрд░ рднрд░реЗрдВ.
рдкрд░реАрдХреНрд╖рдг
рдирдпреЗ рддрд░реАрдХреЗ рдЯреА.рд╕рдВрджрд░реНрдн ╨╕ рдмреА.рд╕рдВрджрд░реНрдн рдПрдХ рд╕рдВрджрд░реНрдн рд▓реМрдЯрд╛рдПрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓реАрдирдЕрдк рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирдпреЗ рддрд░реАрдХреЗ рдЯреА.рдЪрджрд┐рд░ ╨╕ рдмреА.рдЪрджрд┐рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд╛рда/рдЯреЗрдореНрдкрд▓реЗрдЯ
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдЕрдм range-over-func рдФрд░ range-over-int рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рдкрд╣рд░
рдкрд╣рд░ рдЕрдм рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдмрд╛рдЗрдирд░реАрдПрдкреЗрдВрдбрд░ ╨╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдЯреЗрдХреНрд╕реНрдЯрдПрдкреЗрдВрдбрд░.
рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ
Linux
рдЬреИрд╕реЗ рдереЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЧреЛ 1.23 рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЧреЛ 1.24 рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 3.2 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдбрд╛рд░реНрд╡рд┐рди
Go 1.24 рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬрд╝ рд╣реИ рдЬреЛ macOS 11 рдмрд┐рдЧ рд╕реВрд░ рдкрд░ рдЪрд▓реЗрдЧрд╛ред Go 1.25 рдХреЗ рд▓рд┐рдП macOS 12 рдореЛрдВрдЯреЗрд░реА рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
WebAssembly
Go:wasmexport рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЛ 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 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреА рдЧрдИ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореЗрдореЛрд░реА рдлрд╝реБрдЯрдкреНрд░рд┐рдВрдЯ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЫреЛрдЯреЗ рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред
рд╡рд┐рдВрдбреЛрдЬ
32-рдмрд┐рдЯ рд╡рд┐рдВрдбреЛрдЬрд╝/рдЖрд░реНрдо рдкреЛрд░реНрдЯ (GOOS=windows GOARCH=arm) рдХреЛ рдЯреВрдЯрд╛ рд╣реБрдЖ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ #70705
рд╕реНрд░реЛрдд: linux.org.ru
