Go ์ธ์ด์ ์๋ก์ด ๋ฆด๋ฆฌ์ค์ธ ๋ฒ์ 1.24๊ฐ ์ถ์๋ ์ง XNUMX๊ฐ์ ํ์ ๋๋ค. 1.23๋ก ์ด๋. ๋๋ถ๋ถ์ ๋ณ๊ฒฝ ์ฌํญ์ ํด์ฒด์ธ, ๋ฐํ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌํ์ ์์ต๋๋ค. ํญ์ ๊ทธ๋ ๋ฏ์ด ๋ฆด๋ฆฌ์ค์์๋ ๋ค์์ ์ ๊ณตํฉ๋๋ค. ํธํ์ฑ์ ์ฝ์ Go 1. ์ธ์ด ์ค๊ณ์๋ค์ ๊ฑฐ์ ๋ชจ๋ Go ํ๋ก๊ทธ๋จ์ด ์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปดํ์ผ๋๊ณ ์คํ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
์ธ์ด ๋ณ๊ฒฝ
Go 1.24๋ ์ด์ ์๋ฒฝํ๊ฒ ์ง์ํฉ๋๋ค. ์ผ๋ฐ ํ์ ๋ณ์นญ: ํ์ ๋ณ์นญ์ ์ ์ธ๋ ํ์์ผ๋ก ๋งค๊ฐ๋ณ์ํ๋ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ธ์ด ์ฌ์. ํ์ฌ ์ด ๊ธฐ๋ฅ์ GOEXPERIMENT=noaliastypeparams๋ฅผ ์ค์ ํ์ฌ ๋นํ์ฑํํ ์ ์์ต๋๋ค. ํ์ง๋ง aliastypeparams ์ต์ ์ Go 1.25์์ ์ ๊ฑฐ๋ฉ๋๋ค.
๋๊ตฌ
Go ๋ช ๋ น
Go ๋ชจ๋์ ์ด์ go.mod์ ๋๊ตฌ ์ง์นจ์ ์ฌ์ฉํ์ฌ ์คํ ํ์ผ ์ข ์์ฑ์ ์ถ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก "tools.go"๋ผ๋ ํ์ผ์ ๋น ๊ฐ์ ธ์ค๊ธฐ๋ก ๋๊ตฌ๋ฅผ ์ถ๊ฐํ๋ ์ด์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ ์๊ฒ ๋ฉ๋๋ค. ์ด์ go tool ๋ช ๋ น์ Go์ ํจ๊ป ์ ๊ณต๋๋ ๋๊ตฌ ์ธ์๋ ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค. ์ ์ ์๋ฅ ๋น์น.
go get์ ์๋ก์ด -tool ํ๋๊ทธ๋ require ์ง์๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ ์ธ์๋ ์ง์ ๋ ํจํค์ง์ ๋ํ ๋๊ตฌ ์ง์๋ฌธ์ ํ์ฌ ๋ชจ๋์ ์ถ๊ฐํฉ๋๋ค.
์๋ก์ด ๋ฉํ ํจํด ๋๊ตฌ ํ์ฌ ๋ชจ๋์ ๋ชจ๋ ๋๊ตฌ๋ฅผ ๋งํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด go get ๋๊ตฌ๋ฅผ ํตํด ๋ชจ๋ ํญ๋ชฉ์ ์ ๋ฐ์ดํธํ ์ ์๊ณ , go install ๋๊ตฌ๋ฅผ ํตํด GOBIN ๋๋ ํ ๋ฆฌ์ ํญ๋ชฉ์ ์ค์นํ ์๋ ์์ต๋๋ค.
go run๊ณผ ์๋ก์ด go ๋๊ตฌ ๋์์ ํตํด ์์ฑ๋ ์คํ ํ์ผ์ ์ด์ Go ๋น๋ ์บ์์ ์บ์๋ฉ๋๋ค. ์บ์๊ฐ ์ฆ๊ฐํ๋ฏ๋ก ๋ฐ๋ณต์ ์ธ ์คํ์ด ๊ฐ๋ฅํด์ง๋๋ค. #69290.
go build ๋ฐ go install ๋ช ๋ น์ ์ด์ -json ํ๋๊ทธ๋ฅผ ํ์ฉํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๋น๋ ์ถ๋ ฅ๊ณผ ์ค๋ฅ๋ฅผ ํ์ค ์ถ๋ ฅ์ ๊ตฌ์กฐํ๋ JSON ์ถ๋ ฅ์ผ๋ก ๋ณด๊ณ ํฉ๋๋ค. ํ์์ ๋ํ ์์ธํ ๋ด์ฉ์ go help buildjson์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ํ, go test -json ์ ์ด์ ํ ์คํธ ๊ฒฐ๊ณผ JSON๊ณผ ํผํฉํ์ฌ ์ถ๋ ฅ ๋ฐ ๋น๋ ์ค๋ฅ๋ฅผ JSON ํ์์ผ๋ก ๋ณด๊ณ ํฉ๋๋ค. ์๋ก์ด ์์ ์ ํ์ผ๋ก ๊ตฌ๋ณํ ์ ์์ง๋ง ํ ์คํธ ํตํฉ ์์คํ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๋น๋์ ํ ์คํธ ์ถ๋ ฅ์ผ๋ก ๋์๊ฐ ์ ์์ต๋๋ค. GODEBUG ์ค์ getestjsonbuildtext=1.
์๋ก์ด GOAUTH ํ๊ฒฝ ๋ณ์๋ ๊ฐ์ธ ๋ชจ๋ ํ์ ์น์ธํ๋ ์ ์ฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ go help goauth์์ ํ์ธํ์ธ์.
go build ๋ช ๋ น์ด ์ด์ ์ค์น๋์์ต๋๋ค. ๋ฉ์ธ ๋ชจ๋์ ๋ฒ์ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ์์ ํ๊ทธ ๋ฐ/๋๋ ๋ฒ์ ์ ์ด ์ปค๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ +dirty ์ ๋ฏธ์ฌ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. -buildvcs=false ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ด๋๋ฆฌ์์ ๋ฒ์ ์ ์ด ์ ๋ณด๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
์๋ก์ด GODEBUG ์ค์ ํด์ฒด์ธ ์ถ์ =1 ์ด์ go ๋ช ๋ น์์ ํด์ฒด์ธ ์ ํ ํ๋ก์ธ์ค๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Cgo
Cgo๋ ๋ฐํ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด C ํจ์์ ๋ํ ์๋ก์ด ์ฃผ์์ ์ง์ํฉ๋๋ค. #cgo noescape cFunctionName์ C ํจ์ cFunctionName์ ์ ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด์ค์ผ์ดํ๋์ง ์๋๋ค๋ ๊ฒ์ ์ปดํ์ผ๋ฌ์๊ฒ ์๋ ค์ค๋๋ค. #cgo nocallback cFunctionName์ ์ปดํ์ผ๋ฌ์๊ฒ C ํจ์ cFunctionName์ด ์ด๋ค Go ํจ์๋ ์ฝ๋ฐฑํ์ง ์๋๋ค๊ณ ์๋ ค์ค๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค. cgo ๋ฌธ์.
Cgo๋ ํ์ฌ ์ฌ๋ฌ ๊ฐ์ ํธํ๋์ง ์๋ ์ ์ธ์ด ์๋ C ํจ์์ ๋ํ ํธ์ถ์ ์ปดํ์ผํ๋ ๊ฒ์ ๊ฑฐ๋ถํฉ๋๋ค. ์๋ฅผ ๋ค์ด, f๊ฐ void f(int)์ void f(double)๋ก ๋ชจ๋ ์ ์ธ๋ ๊ฒฝ์ฐ cgo๋ ์๋ชป๋ ํธ์ถ ์ํ์ค f(0)์ ์์ฑํ๋ ๋์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ์ด๋ฒ ๋ฆด๋ฆฌ์ค์ ์๋ก์ด ๊ธฐ๋ฅ์ ์๋ก ๋ค๋ฅธ ํ์ผ์ ํธํ๋์ง ์๋ ์ ์ธ์ด ๋ํ๋ ๋ ์ด๋ฌํ ์ค๋ฅ ์กฐ๊ฑด์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ๊ฐ์งํ๋ค๋ ๊ฒ์ ๋๋ค. #67699.
์ค๋ธ์ ๋คํ
objdump ๋๊ตฌ๋ ์ด์ 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(); ์ ๊ฐ์ด 3์ค "for" ๋ฃจํ์์ ๋ณ์๊ฐ ์ ์ธ๋ ๋ ์ง๋จ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ์๋ฃ(i); i = next(i) { โฆ }์๋ sync.Mutex์ ๊ฐ์ sync.Locker๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. 1.22๋ก ์ด๋ ๊ฐ ๋ฐ๋ณต์ ๋ํด ์ ๋ณ์๋ฅผ ์์ฑํ๊ณ ์ด์ ๋ฐ๋ณต์ ๊ฐ์ ๋ณต์ฌํ๊ธฐ ์ํด ์ด๋ฌํ ๋ฃจํ์ ๋์์ ๋ณ๊ฒฝํ์ต๋๋ค. ์ด ๋ณต์ฌ๋ ์ ๊ธ์ฅ์น์ ์์ ํ์ง ์์ต๋๋ค. #66387.
๊ณ ์นด์ฒดํ๋ก๊ทธ
์ด์ cmd/go ๋๊ตฌ์ GOCACHEPROG ํ๊ฒฝ ๋ณ์๋ก ์ง์ ๋ ์์ ํ๋ก์ธ์ค ์ฌ์ด์ JSON ํ๋กํ ์ฝ์ ๊ตฌํํ๋ ์์ ํ๋ก์ธ์ค๋ก ๋ด๋ถ cmd/go ๋ฐ์ด๋๋ฆฌ์ ํ ์คํธ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด์ ์๋ GOEXPERIMENT์์ต๋๋ค. ํ๋กํ ์ฝ์ ์ธ๋ถ ์ฌํญ์ ๋ค์์์ ๋ณผ ์ ์์ต๋๋ค. ์ ์ ์๋ฅ ๋น์น.
์๋ฃ ์๊ฐ
์ฌ๋ฌ ๊ฐ์ง ๋ฐํ์ ์ฑ๋ฅ ๊ฐ์ ์ ํตํด ๋ํ์ ์ธ ๋ฒค์น๋งํฌ์์ CPU ์ค๋ฒํค๋๊ฐ ํ๊ท 2~3% ๊ฐ์ํ์ต๋๋ค. ๊ฒฐ๊ณผ๋ ์ ์ฉ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ์ ์ฌํญ์๋ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋ก์ด ๋ด์ฅ ๋งต ๊ตฌํ์ด ํฌํจ๋ฉ๋๋ค. ์ค์จ๋ด ํ ์ด๋ธ, ์์ ๊ฐ์ฒด ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๋ค ํจ์จ์ ์ธ ํ ๋น, ๊ทธ๋ฆฌ๊ณ ๋ฎคํ ์ค์ ์๋ก์ด ๋ด๋ถ ๋ฐํ์ ๊ตฌํ์ด ์ถ๊ฐ๋์์ต๋๋ค.
์๋ก ๋ด์ฅ๋ ๋งต ๊ตฌํ๊ณผ ์๋ก์ด ๋ด๋ถ ๋ฐํ์ ๋ฎคํ ์ค๋ ๋น๋ ์์ ๊ฐ๊ฐ 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 ๋ง์ปค ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๊ธฐ๋ฅ์ ๋ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ง์ ํ 0์ง์ ๊ฐ์ ์ฌ์ฉํ์ฌ -B XNUMXxNNNN ๋ง์ปค ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๊ธฐ๋ฅ์ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
ํ๋ณด
์ ๋ช ์๋ ๋ฐ์ ๊ฐ์ด Go 1.22 ๋ฆด๋ฆฌ์ค ๋ ธํธGo 1.24๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด์ Go 1.22.6 ์ด์์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ Go 1.26์ด ์ถ์๋๋ ค๋ฉด Go 1.24 ์ด์์ ํฌ์ธํธ ๋ฆด๋ฆฌ์ค๊ฐ ํ์ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋๋ ํ ๋ฆฌ ์ ํ ํ์ผ ์์คํ ์ก์ธ์ค
์๋ก์ด ์ ํ os.๋ฃจํธ ํน์ ๋๋ ํ ๋ฆฌ ๋ด์์ ํ์ผ ์์คํ ์์ ์ ์ํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ๋ฅ os.OpenRoot ๋๋ ํ ๋ฆฌ๋ฅผ ์ด๊ณ ๋ฐํํฉ๋๋ค. os.๋ฃจํธ. ๋ฐฉ๋ฒ์ ๋ํ os.๋ฃจํธ ํด๋น ๋๋ ํ ๋ฆฌ์์ ์๋ํ๋ฉฐ ๋๋ ํ ๋ฆฌ ์ธ๋ถ์ ์์น๋ฅผ โโ์ฐธ์กฐํ๋ ๊ฒฝ๋ก๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋๋ ํ ๋ฆฌ ์ธ๋ถ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒฝ๋ก๋ ํฌํจ๋ฉ๋๋ค. os.Root์ ๋ฉ์๋๋ os ํจํค์ง์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๋ถ๋ถ์ ํ์ผ ์์คํ ์์ ์ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, os.๋ฃจํธ.์ด๊ธฐ, os.๋ฃจํธ.์์ฑ, os.๋ฃจํธ.Mkdir ะธ os.๋ฃจํธ.ํต๊ณ.
์๋ก์ด ๋ฒค์น๋งํฌ ๊ธฐ๋ฅ
๋ฒค์น๋งํฌ๋ ์ด์ ๋ ๋น ๋ฅด๊ณ ์ค๋ฅ๊ฐ ๋ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ ์คํธ.B.Loop bN์ ํฌํจํ๋ ์ผ๋ฐ์ ์ธ ๋ฃจํ ๊ตฌ์กฐ(์: for range bN) ๋์ for b.Loop() { โฆ }์ ๊ฐ์ ๋ฒค์น๋งํฌ๋ฅผ ๋ฐ๋ณตํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ์ค์ํ ์ด์ ์ด ์์ต๋๋ค.
- ๋ฒค์น๋งํฌ ํจ์๋ -count๋น ์ ํํ ํ ๋ฒ ์คํ๋๋ฏ๋ก ๋น์ฉ์ด ๋ง์ด ๋๋ ์ค์ ๋ฐ ์ ๋ฆฌ ๋จ๊ณ๋ ํ ๋ฒ๋ง ์คํ๋ฉ๋๋ค.
- ํจ์ ํธ์ถ ๋งค๊ฐ๋ณ์์ ๊ฒฐ๊ณผ๊ฐ ๊ทธ๋๋ก ์ ์ง๋๋ฏ๋ก ์ปดํ์ผ๋ฌ๊ฐ ๋ฃจํ ๋ณธ๋ฌธ์ ์์ ํ ์ต์ ํํ ์ ์์ต๋๋ค.
๊ฐ์ ๋ ๋ง๋ฌด๋ฆฌ์
์๋ก์ด ๊ธฐ๋ฅ ๋ฐํ์.AddCleanup ๋ณด๋ค ์ ์ฐํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์ค๋ฅ๊ฐ ๋ ๋ฐ์ํ๋ ์๋ฃ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ฐํ์.SetFinalizer. AddCleanup์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด ์ฆ์ ์คํ๋๋ ์ ๋ฆฌ ํจ์๋ฅผ ๊ฐ์ฒด์ ์ฐ๊ฒฐํฉ๋๋ค. ๊ทธ๋ฌ๋ SetFinalizer์ ๋ฌ๋ฆฌ ์ฌ๋ฌ ์ ๋ฆฌ๋ฅผ ๋จ์ผ ๊ฐ์ฒด์ ์ฒจ๋ถํ ์ ์๊ณ , ์ ๋ฆฌ๋ฅผ ๋ด๋ถ ํฌ์ธํฐ์ ์ฒจ๋ถํ ์ ์์ผ๋ฉฐ, ๊ฐ์ฒด๊ฐ ์ํ์ ํ์ฑํ ๋ ์ ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋์๋ฅผ ์ผ์ผํค์ง ์๊ณ , ์ ๋ฆฌ๋ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด ๋๋ ๊ฐ์ฒด์ ํ ๋น ํด์ ๋ฅผ ์ง์ฐ์ํค์ง ์์ต๋๋ค. ์๋ก์ด ์ฝ๋๋ SetFinalizer๋ณด๋ค AddCleanup์ ์ ํธํด์ผ ํฉ๋๋ค.
์๋ก์ด ์ฝํ ํจํค์ง
์ ํจํค์ง ์ฝํ ์ฝ์ ์ ์ง์ ํฉ๋๋ค.
์ฝํ ํฌ์ธํฐ๋ ๋งคํ ๊ฐ์ ์ํ ์ฝํ ์ฌ์ , ํจํค์ง์ ํฌํจ๋์ง ์์ ๋ชจ๋ ํญ๋ชฉ์ ๋ํ ์ ๊ทํ ์ฌ์ ๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ ์ ๊ณต๋๋ ์ ์์ค ๊ธฐ๋ณธํ์ ๋๋ค. ์ ์ผํ, ๋ค์ํ ์ ํ์ ์บ์. ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ด ๋ฆด๋ฆฌ์ค์์๋ ๋ค์๋ ์ ๊ณตํฉ๋๋ค. ๋ฐํ์.AddCleanup ะธ maphash.๋น๊ต ๊ฐ๋ฅ.
์๋ก์ด crypto/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์ ์ ์๋ ๋๋ก ์ํธ ๊ธฐ๋ฐ ํค ํ์ ํจ์ PBKDFXNUMX๋ฅผ ๊ตฌํํฉ๋๋ค. RFC 8018.
์ ํจํค์ง ์ํธํ/sha3 SHA-3 ํด์ ํจ์์ SHAKE ๋ฐ cSHAKE ํ์ฅ ๊ฐ๋ฅ ์ถ๋ ฅ ํจ์๋ฅผ ์ ์ํ ๋๋ก ๊ตฌํํฉ๋๋ค. FIPS 202.
์ธ ๊ฐ์ง ํจํค์ง๋ ๋ชจ๋ ๊ธฐ์กด์ golang.org/x/crypto/โฆ ํจํค์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
FIPS 140-3 ์ค์
์ด ๋ฆด๋ฆฌ์ค์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค. FIPS 140-3 ๊ท์ ์ค์๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ์๋ก์ด ๋ฉ์ปค๋์ฆ ์ธํธ.
Go ์ํธํ ๋ชจ๋์ FIPS 140-3 ์น์ธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๋ฐ ํฌ๋ช ํ๊ฒ ์ฌ์ฉ๋๋ ๋ด๋ถ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจํค์ง ์ธํธ์ ๋๋ค. ์น์ธ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด Go ์ํธํ ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๊ฒฝํ ํ์๋ ์์ต๋๋ค.
์๋ก์ด ํ๊ฒฝ ๋ณ์ GOFIPS140์ ์ฌ์ฉํ๋ฉด ๋น๋์ ์ฌ์ฉํ Go ์ํธํ ๋ชจ๋์ ๋ฒ์ ์ ์ ํํ ์ ์์ต๋๋ค. ์๋ก์ด GODEBUG ์ค์ fips140์ ์ฌ์ฉํ๋ฉด ๋ฐํ์์ FIPS 140-3 ๋ชจ๋๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.
Go 1.24์๋ ํ์ฌ CMVP ์ธ์ฆ ๋ฉ์์ ํ ์คํธ ์ค์ธ Go ์ํธํ ๋ชจ๋ v1.0.0์ด ํฌํจ๋์ด ์์ต๋๋ค.
์๋ก์ด ์คํ ํจํค์ง ํ ์คํธ/๋๊ธฐํ ํ ์คํธ
์๋ก์ด ์คํ ํจํค์ง ํ ์คํธ/๋๊ธฐํ ํ ์คํธ ๋์ ์ฝ๋ ํ ์คํธ์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ๊ธฐ๋ฅ ๋๊ธฐํ ํ ์คํธ ์คํ ๊ฒฉ๋ฆฌ๋ "๋ฒ๋ธ"์์ ๊ณ ๋ฃจํด ๊ทธ๋ฃน์ ์คํํฉ๋๋ค. ํจํค์ง ๊ธฐ๋ฅ์ ๋ฒ๋ธ ์์์ ์๊ฐ ๊ฑฐ์ง ์๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฉ๋๋ค.
- ๊ธฐ๋ฅ ๋๊ธฐํ ํ ์คํธ ๋๊ธฐ ํ์ฌ ๋ฒ๋ธ์์ ๋ชจ๋ ๊ณ ๋ฃจํด์ด ์ฐจ๋จ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
์์ธํ ๋ด์ฉ์ ํจํค์ง ์ค๋ช ์์์ ํ์ธํ์ธ์.
synctest ํจํค์ง๋ ์คํ์ ์ด๋ฏ๋ก GOEXPERIMENT=synctest๋ฅผ ์ค์ ํ์ฌ ํ์ฑํํด์ผ ํฉ๋๋ค. ํจํค์ง API๋ ํฅํ ๋ฆด๋ฆฌ์ค์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์์ #67434 ์์ธํ ๋ด์ฉ์ ๋ณด๊ณ ํผ๋๋ฐฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ํ ๋ณ๊ฒฝ ์ฌํญ
์์นด์ด๋ธ
archive/zip๊ณผ archive/tar์ โโ์๋ (*Writer.AddFS) ๊ตฌํ์ ์ด์ ๋น ๋๋ ํ ๋ฆฌ์ ๋ํ ๋๋ ํ ๋ฆฌ ํค๋๋ฅผ ์์ฑํฉ๋๋ค.
๋ฐ์ดํธ
ํจํค์ง ๋ฐ์ดํธ ๋ฐ๋ณต์์ ํจ๊ป ์๋ํ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.
- ์ ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค์์ ์ค๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋ถํ ์ํ์ค ๊ตฌ๋ถ ๊ธฐํธ๋ก ๊ตฌ๋ถ๋ ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค์ ๋ชจ๋ ํ์ ์ฌ๋ผ์ด์ค์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋ถํ ํ ์ํ์ค ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ๋ํ๋ ๋๋ง๋ค ๋ถํ ๋ ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค์ ํ์ ์ฌ๋ผ์ด์ค์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
- ํ๋์ํ์ค ์ ์๋ ๋๋ก ๊ณต๋ฐฑ ๋ฌธ์ ์ํ์ค ์ฃผ๋ณ์ ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค ํ์ ์ฌ๋ผ์ด์ค์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค. ์ ๋์ฝ๋.IsSpace
- ํ๋FuncSeq ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ ์ํ์ค ์ฃผ๋ณ์ ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค ํ์ ์ฌ๋ผ์ด์ค์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
์ํธ/AES
๋ฐํ๊ฐ ๋ด์นํผ ๋ ์ด์ NewCTR, NewGCM, NewCBCEncrypter ๋ฐ NewCBCDecrypter ๋ฉ์๋๋ฅผ ๊ตฌํํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ๋ฌธ์ํ๋์ง ์์์ผ๋ฉฐ ๋ชจ๋ ์ํคํ ์ฒ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ์ด์ ์๋ฏธ ๋ธ๋ก ์ ์ ํ ๊ธฐ๋ฅ์ ์ง์ ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค. ์ํธ/์ํธํ. ํ์ฌ crypto/cipher๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ ์ด์ ์ง์๋์ง ์๋๋ผ๋ Block ๊ฐ์ ๋ํด ์ฌ์ ํ ์ด๋ฌํ ๋ฉ์๋๋ฅผ ํ์ธํฉ๋๋ค.
์ํธ/์ํธํ
์๋ก์ด ๊ธฐ๋ฅ NewGCMWithRandomNonce ๋ฐํ AEADSeal ์ค์ ์์์ nonce๋ฅผ ์์ฑํ๊ณ ์ํธ๋ฌธ ์์ ๋ถ์ฌ AES-GCM์ ๊ตฌํํฉ๋๋ค.
ะ ะตะฐะปะธะทะฐัะธั ํ๋ฆ, ๋ฐํ ์๋ก์ด CTR ์ ํจ๊ป ์ฌ์ฉํ ๋ ์ํธ/AES ์ด์ amd64 ๋ฐ arm64์์ ๋ช ๋ฐฐ ๋ ๋นจ๋ผ์ก์ต๋๋ค.
๋ดOFB, ์๋ก์ดCFBEncrypter ะธ NewCFBDecrypter ์ด์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค๊ณ ์ ์ธ๋์์ต๋๋ค. OFB์ CFB ๋ชจ๋๋ ์ธ์ฆ๋์ง ์์ ์ผ๋ฐ์ ์ผ๋ก ๋ฅ๋์ ์ธ ๊ณต๊ฒฉ์ด ์ผ๋ฐ ํ ์คํธ๋ฅผ ์กฐ์ํ๊ณ ๋ณต๊ตฌํ ์ ์์ต๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค AEAD ๊ทธ ๋๊ฐ๋ก. ์ธ์ฆ๋์ง ์์ ๋ชจ๋์ ๊ฒฝ์ฐ ํ๋ฆ ํ์ํ, ์ฌ์ฉํ ์ ์์ต๋๋ค ์๋ก์ด CTR ๋์ ์.
ํฌ๋ฆฝํ /ECDSA
ํ๋ผ์ด๋นํค.์๋ช ์ด์ ๋ค์์ ๋ฐ๋ผ ๊ฒฐ์ ๋ก ์ ์๋ช ์ ์์ฑํฉ๋๋ค. RFC 6979, ๋์ ์์ค๊ฐ nil์ธ ๊ฒฝ์ฐ.
์ํธ/md5
๋ฐํ๊ฐ md5.์๋ก์ด, ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค. ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋.
ํฌ๋ฆฝํ /๋๋
๊ธฐ๋ฅ ์ฝ๊ธฐ ์ด์ ๋ ์คํจ๊ฐ ์ ํ ์๋ค๋ ๋ณด์ฅ์ด ์์ต๋๋ค. Read๊ฐ ์ฝ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๋ฆฌ๋, ํ๋ก๊ทธ๋จ์ด ์๊ตฌ์ ์ผ๋ก ์ข ๋ฃ๋ฉ๋๋ค. ๊ธฐ๋ณธ Reader๋ ํญ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋๋ก ๋ฌธ์ํ๋์ด ์์ผ๋ฏ๋ก ์ด ๋ณ๊ฒฝ ์ฌํญ์ Reader ๋ณ์๋ฅผ ์ฌ์ ์ํ๋ ํ๋ก๊ทธ๋จ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. 3.17 ์ด์ ์ Linux ์ปค๋์ ํ ๊ฐ์ง ์์ธ๋ก, ๊ธฐ๋ณธ Reader๊ฐ ์ฌ์ ํ /dev/urandom์ ์ด์ด ์คํจํ ์ ์์ต๋๋ค.
Linux 6.11 ์ด์์์๋ Reader๊ฐ ์ด์ vDSO๋ฅผ ํตํด getrandom ์์คํ ํธ์ถ์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์์ ์์ ์ฝ๊ธฐ ์์ ์ ๋นํด ๋ช ๋ฐฐ ๋ ๋น ๋ฆ ๋๋ค.
OpenBSD Reader๋ ์ด์ arc4random_buf(3)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ ๋ณธ๋ฌธ ์ด์ ์ํธํ๋์ด ์์ ํ ๋ฌด์์ ํ ์คํธ ๋ฌธ์์ด์ ์์ฑํ ์ ์์ต๋๋ค.
์ํธ/rsa
์ ๋ค๋ ์ดํธํค ์ด์ 1024๋นํธ ๋ฏธ๋ง์ ํค ๊ธธ์ด๊ฐ ์์ฒญ๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค. ๋ชจ๋ Sign, Verify, Encrypt, Decrypt ๋ฉ์๋๋ ์ด์ 1024๋นํธ๋ณด๋ค ์์ ํค ํฌ๊ธฐ์ ํจ๊ป ์ฌ์ฉ๋ ๊ฒฝ์ฐ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ฌํ ํค๋ ์์ ํ์ง ์์ผ๋ฏ๋ก ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค. GODEBUG ์ค์ ํ๊ธฐ rsa1024min=0์ ์ด์ ๋์์ ๋ณต์ํ์ง๋ง, Go ๊ฐ๋ฐ์๋ ํ์ํ ๋์๋ง ํ ์คํธ์์ ์ด ์์ ์ ์ํํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ ์คํธ ํ์ผ์ //go:debug rsa1024min=0 ์ค์ ์ถ๊ฐํฉ๋๋ค. ์๋ก์ด ์ GenerateKey๋ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ํ์ค 2024๋นํธ ํ ์คํธ ํค๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด์ ์ ํํ๋ ๊ฒ์ด ๋ ์์ ํ๊ณ ํจ์จ์ ์ ๋๋ค. PrivateKey.์ฌ์ ๊ณ์ฐ ์ PrivateKey.Validate. ์ด์ ๋ถ๋ถ์ ์ผ๋ก ์ฑ์์ง ๊ฒฝ์ฐ ์ฌ์ ๊ณ์ฐ์ด ๋ ๋นจ๋ผ์ก์ต๋๋ค. ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ๊ฐ์๋ฅผ ๋ค์ด JSON์์ ํค๋ฅผ ์ถ์ถํ ๋.
์ด์ ํจํค์ง๋ Validate๊ฐ ํธ์ถ๋์ง ์๋๋ผ๋ ๋ ๋ง์ ์๋ชป๋ ํค๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. ์ ๋ค๋ ์ดํธํค ์ด์ ์์๋ ๋ฌด์์์ฑ ์์ค์ ๋ํด ์๋ก์ด ์ค๋ฅ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. ์ ์ง ์ด๋ฆฌ ะธ ๋ฏธ๋ฆฌ ๊ณ์ฐ๋จ ๊ตฌ์กฐ ์ PrivateKey ์ด์ ์ผ๋ถ ๊ฐ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ๋๊ณ ๊ฒ์ฆ๋ฉ๋๋ค. ์๋์ ์ค๋ช ๋ ๋๋ก RSA ํค๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ถ์ถํ๊ธฐ ์ํ crypto/x509์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค.
์ฌ์ธPKCS1v15 ะธ PKCS1v15 ํ์ธ ์ด์ SHA-512/224, SHA-512/256 ๋ฐ SHA-3์ ์ง์ํฉ๋๋ค.
์ ๋ค๋ ์ดํธํค ์ด์ ์ฝ๊ฐ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ฐ์ธ ์ง์๋ฅผ ์์ฑํฉ๋๋ค(Euler ํจ์ ๋์ Carmichael ํจ์). ์์๋ก๋ง ํค๋ฅผ ์ธ๋ถ์์ ์ฌ์์ฑํ๋ ๋๋ฌธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅด์ง๋ง ํธํ๋๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด์ wasm์์ ๊ณต๊ฐ ํค์ ๊ฐ์ธ ํค์ ๋ํ ์์ ์ด ์ต๋ 2๋ฐฐ ๋ ๋นจ๋ผ์ก์ต๋๋ค.
์ํธํ/sha*
- ์ํธํ/sha1: ๋ฐํ๊ฐ sha1.์๋ก์ด ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋.
- ์ํธํ/sha256: ๋ฐํ๋ ๊ฐ sha256.์๋ก์ด ะธ sha256.๋ด224 ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋.
- ์ํธํ/sha512: ๋ฐํ๋ ๊ฐ sha512.์๋ก์ด, sha512.๋ด384, sha512.New512_224 ะธ sha512.New512_256, ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค. ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋.
์ํธ/๋ฏธ๋ฌํ
์๋ก์ด ๊ธฐ๋ฅ WithDataIndependentTiming ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ ๊ฐ์ ์๊ฐ์ ๋ฐ๋ผ ํน์ ๋ช ๋ น์ด๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก ๋ณด์ฅํ๋ ์ํคํ ์ฒ๋ณ ๊ธฐ๋ฅ์ ํ์ฑํํ์ฌ ํจ์๋ฅผ ์คํํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์์ ์๊ฐ์ ์คํ๋๋๋ก ์์ฑ๋ ์ฝ๋๊ฐ ํ๋ก์ธ์ ์์ค ํจ์์ ์ํด ์ต์ ํ๋์ด ๊ฐ๋ณ ์๊ฐ์ ์คํ๋์ง ์๋๋ก ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ฌ WithDataIndependentTiming์ arm64์์ PSTATE.DIT ๋นํธ๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ์ํคํ ์ฒ์์๋ ์๋ฌด๊ฒ๋ ํ์ง ์์ต๋๋ค. GODEBUG ์ค์ ํ๊ธฐ dataindependenttiming=1์ Go ํ๋ก๊ทธ๋จ ์ ์ฒด์ ๋ํด DIT ๋ชจ๋๋ฅผ ํ์ฑํํฉ๋๋ค.
์ถ๋ ฅ XOR๋ฐ์ดํธ ์ ๋ ฅ ๋ด์ฉ๊ณผ ์์ ํ ๊ฒน์น๊ฑฐ๋ ์ ํ ๊ฒน์น์ง ์์์ผ ํฉ๋๋ค. ์ด์ ์๋ ๊ทธ๋ ์ง ์์ ๋์์ด ์ ์๋์ด ์์ง ์์์ง๋ง ์ด์ XORBytes๊ฐ ํจ๋์ ์ผ์ผํต๋๋ค.
์ํธํ/TLS
TLS ์๋ฒ๋ ์ด์ ์ํธํ๋ ํด๋ผ์ด์ธํธ Hello(ECH)๋ฅผ ์ง์ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ค๋ฉด ํ๋์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ์ธ์. ๊ตฌ์ฑ.์ํธํ๋ํด๋ผ์ด์ธํธHelloKeys.
์๋ก์ด ํฌ์คํธ ์์ ํค ๊ตํ ๋ฉ์ปค๋์ฆ X25519MLKEM768 ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋๊ณ ํ์ฑํ๋ฉ๋๋ค. ๊ตฌ์ฑ.๊ณก์ ํ๊ฒฝ ์ค์ 0์ ๋๋ค. GODEBUG ์ค์ ํ๊ธฐ tlsmlkem=0์ ๊ธฐ๋ณธ๊ฐ์ ๋ฐํํฉ๋๋ค.
์คํ์ ์ธ X25519Kyber768Draft00 ํค ๊ตํ์ ๋ํ ์ง์์ด ์ ๊ฑฐ๋์์ต๋๋ค.
ํค ๊ตํ ์์๋ ์ด์ ์ ์ ์ผ๋ก crypto/tls ํจํค์ง์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ฃผ๋ฌธํ๋ค ๊ตฌ์ฑ.๊ณก์ ํ๊ฒฝ ์ค์ ์ด์ ๋ฌด์๋๊ณ ๋ด์ฉ์ ํ๋๊ฐ ์ฑ์์ง ๋ ํฌํจํ ํค ๊ตํ์ ๊ฒฐ์ ํ๋ ๋ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์๋ก์ด ๋ถ์ผ ํด๋ผ์ด์ธํธHelloInfo.ํ์ฅ ํด๋ผ์ด์ธํธ Hello ๋ฉ์์ง์์ ์์ ๋ ํ์ฅ ์๋ณ์ ๋ชฉ๋ก์ ๋์ดํฉ๋๋ค. ์ด๋ TLS ํด๋ผ์ด์ธํธ์ ๋ํ ์ง๋ฌธ ์ธ์์ ์ ์ฉํ ์ ์์ต๋๋ค.
ํฌ๋ฆฝํ /x509
GODEBUG ์ค์ ํ๊ธฐ x509sha1์ด ์ ๊ฑฐ๋์์ต๋๋ค. ์ธ์ฆ.ํ์ธ ๋ ์ด์ SHA-1 ๊ธฐ๋ฐ ์๋ช ์ ์ง์ํ์ง ์์ต๋๋ค.
OID ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋ ะธ ์ธ์ฝ๋ฉ.TextAppender.
๊ธฐ๋ณธ ์ธ์ฆ์ ์ ์ฑ ํ๋๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ธ์ฆ์.์ ์ฑ ์๋ณ์ ์ ์ธ์ฆ์.์ ์ฑ . ์ธ์ฆ์๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ ๋ ๋ ํ๋ ๋ชจ๋ ์ฑ์์ง์ง๋ง ์ธ์ฆ์ ์ ์ฑ ์ ์์ฑํ ๋ Certificate.PolicyIdentifiers ๋์ Certificate.Policies ํ๋์์ ๊ฐ์ ธ์ต๋๋ค. ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆด ์ ์์ต๋๋ค. GODEBUG ์ค์ x509usepolicies=0.
์ธ์ฆ์ ์์ฑ ์ด์ ํ ํ๋ฆฟ ํ๋๋ฅผ ์ ๋ฌํ ๋ RFC 5280 ํธํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ผ๋ จ ๋ฒํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ธ์ฆ์.์ผ๋ จ๋ฒํธ ์ถฉ๋ํ๋ ๋์ nil์ ๋๋ค.
์ธ์ฆ์.ํ์ธ ์ด์ RFC 5280 ๋ฐ RFC 9618์ ์ ์๋ ์ ์ฑ ๊ฒ์ฆ์ ์ง์ํฉ๋๋ค. ์ ํ๋ VerifyOptions.CertificatePolicies ํ์ฉ ๊ฐ๋ฅํ ์ ์ฑ ์งํฉ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. OID. ์ ํจํ ์ ์ฑ ๊ทธ๋ํ๊ฐ ์๋ ์ธ์ฆ์ ์ฒด์ธ๋ง ๋ฐํ๋ฉ๋๋ค. ์ธ์ฆ์.ํ์ธ.
๋ง์ฌPKCS8๊ฐ์ธํค ์ด์ ์๋ชป๋ RSA ํค๋ฅผ ๊ฒ์ํ๋ ๋์ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. (๋ง์ฌPKCS1๊ฐ์ธํค ์ค๋ฅ ๋ฐํ์ด ์์ผ๋ฉฐ ์๋ชป๋ ํค๊ฐ ์ ๊ณต๋ ๋์ ๋์์ ์ ์๋์ง ์์ต๋๋ค.)
ParsePKCS1PrivateKey ะธ ParsePKCS8PrivateKey ์ด์ ์ธ์ฝ๋ฉ๋ CRT ๊ฐ์ ์ฌ์ฉํ๊ณ ๊ฒ์ฆํ๋ฏ๋ก ์ด์ ์ ์๋ฝ๋ ์๋ชป๋ RSA ํค๋ฅผ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค. ์ฉ๋ฒ GODEBUG ์ค์ x509rsacrt=0์ CRT ๊ฐ์ ๋ค์ ๊ณ์ฐํฉ๋๋ค.
๋๋ฒ๊ทธ/์ํ
ํจํค์ง ๋๋ฒ๊ทธ/์ํ ๋์ ELF(์คํ ๊ฐ๋ฅ ๋ฐ ๋งํฌ ๊ฐ๋ฅ ํ์) ํ์ผ์์ ์ฌ๋ณผ ๋ฒ์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ง์์ ์ถ๊ฐํฉ๋๋ค. ์๋ก์ด ๋ฐฉ๋ฒ ํ์ผ.๋์ ๋ฒ์ ELF ํ์ผ์ ์ ์๋ ๋์ ๋ฒ์ ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค. ์๋ก์ด ๋ฐฉ๋ฒ ํ์ผ.๋์ ๋ฒ์ ํ์ ๋ค๋ฅธ ELF ๊ฐ์ฒด์ ์ ์๋ ์ด ELF ํ์ผ์ ํ์ํ ๋์ ๋ฒ์ ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค. ๋ง์นจ๋ด ์๋ก์ด ๋ถ์ผ๊ฐ ์๊ฒผ๋ค ์ฌ๋ณผ.๋ฒ์ ์์ ะธ ์ฌ๋ณผ.๋ฒ์ ์ธ๋ฑ์ค ๊ธฐํธ์ ๋ฒ์ ์ ๋ํ๋ ๋๋ค.
๋ถํธํ
๋ ๊ฐ์ ์๋ก์ด ์ธํฐํ์ด์ค ํ ์คํธ์ดํ๋ ะธ ๋ฐ์ด๋๋ฆฌ์ดํ๋ ๊ฐ์ฒด์ ํ ์คํธ๋ ์ด์ง ํํ์ ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค์ ์ถ๊ฐํ๊ธฐ ์ํด ๋์ ๋์์ต๋๋ค. ์ด๋ฌํ ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํ ์คํธ๋ง์ฌ๋ฌ ะธ ๋ฐ์ด๋๋ฆฌ๋ง์ฌ๋ฌํ์ง๋ง ๋งค๋ฒ ์๋ก์ด ์ฌ๋ผ์ด์ค๋ฅผ ํ ๋นํ๋ ๋์ ๊ธฐ์กด ์ฌ๋ผ์ด์ค์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฌํ ์ธํฐํ์ด์ค๋ ํ์ฌ TextMarshaler ๋ฐ/๋๋ BinaryMarshaler๋ฅผ ์ด๋ฏธ ๊ตฌํํ๊ณ ์๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
์ธ์ฝ๋ฉ/json
๋น๋ํ ๋, ๊ตฌ์กฐ ํ๋ ํ๊ทธ์ ์๋ก์ด omitzero ์ต์ ์ด ์๋ ๊ตฌ์กฐ ํ๋๋ ๊ฐ์ด 0์ด๋ฉด ์๋ต๋ฉ๋๋ค. ํ๋ ์ ํ์ IsZero() bool ๋ฉ์๋๊ฐ ์๋ ๊ฒฝ์ฐ, ์ด๋ ๊ฐ์ด 0์ธ์ง ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ์ 0์ด ๋ฉ๋๋ค. ํด๋น ์ ํ์ ๋ํ null ๊ฐ. omitzero ํ๋ ํ๊ทธ๋ null ๊ฐ์ ์๋ตํ๋ ๊ฒ์ด ์๋์ธ ๊ฒฝ์ฐ omitempty๋ณด๋ค ๊น๋ํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ํนํ omitempty์ ๋ฌ๋ฆฌ omitzero๋ 0์ ์๋ตํฉ๋๋ค. ์๊ฐ.์๊ฐ ์ด๋ ๋ฌธ์ ์ ์ผ๋ฐ์ ์ธ ์์ธ์ ๋๋ค.
omitempty์ omitzero๊ฐ ๋ ๋ค ์ง์ ๋ ๊ฒฝ์ฐ ๊ฐ์ด ๋น์ด ์๊ฑฐ๋ 0(๋๋ ๋ ๋ค)์ด๋ฉด ํด๋น ํ๋๊ฐ ์๋ต๋ฉ๋๋ค.
UnmarshalTypeError.Field ์ด์ ๋ ์์ธํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ ๋ด์ฅ ๊ตฌ์กฐ๊ฐ ํฌํจ๋์์ต๋๋ค.
๊ฐ๋ค/ํ์
Len() int ๋ฐ At(int) T์ ๊ฐ์ด ๋ฉ์๋ ์์ ์ํ์ค๋ฅผ ๋ ธ์ถํ๋ ๋ชจ๋ go/types ๋ฐ์ดํฐ ๊ตฌ์กฐ์๋ ์ด์ ๋ฐ๋ณต์๋ฅผ ๋ฐํํ๋ ๋ฉ์๋๋ ์์ด ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ๋จํ ์ฝ๋๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
params := fn.Type.(*types.Signature).Params() i := 0์ ๋ํด; i < params.Len(); i++ { ๋งค๊ฐ๋ณ์.At(i)๋ฅผ ์ฌ์ฉํ์ธ์.
์ด๊ฒ์ ๋ํด์:
param := range fn.Signature().Params().Variables()์ ๋ํด { use(param) }
๋ฐฉ๋ฒ : ์ธํฐํ์ด์ค.์๋ฒ ๋๋ํ์ ์ธํฐํ์ด์ค.๋ช ์์ ๋ฉ์๋ ์ธํฐํ์ด์ค.๋ฉ์๋ ๋ฉ์๋ ์งํฉ.๋ฉ์๋ ๋ช ๋ช ๋ ๋ฐฉ๋ฒ ๋ฒ์.์ด๋ฆฐ์ด ๊ตฌ์กฐ.ํ๋ ํํ.๋ณ์ ์ ํ ๋ชฉ๋ก.์ ํ TypeParamList.TypeParams ์ฐํฉ.์กฐ๊ฑด
ํด์์/*
- ํด์/adler32: ๋ฐํ๊ฐ New, ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค. ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋
- ํด์/crc32: ๋ฐํ๋ ๊ฐ New ะธ ์๋ก์ดIEEE, ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค. ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋
- ํด์/crc64: ๋ฐํ๊ฐ New, ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค. ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋
- ํด์/fnv: ๋ฐํ๋ ๊ฐ New32 ๋ด32a New64 ๋ด64a New128 ะธ ๋ด128a, ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค. ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋
- ํด์/๋งํ์: ์๋ก์ด ๊ธฐ๋ฅ ์ ์ฌํ ะธ ๋น๊ต ๊ฐ๋ฅํ ์ฐ๊ธฐ ๋น๊ตํ ์ ์๋ ๋ชจ๋ ๊ฐ์ ํด์๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด Go ์ฌ์ ์ ํค๋ก ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ํด์ํ ์ ์์ต๋๋ค.
๋ก๊ทธ/์ฌ๋ก๊ทธ
์๋ก์ด ์ญ์ ํธ๋ค๋ฌ ํ์ฑํ๋์ง ์๊ณ ํญ์ ์ถ๋ ฅ์ ์ญ์ ํ๋ ํธ๋ค๋ฌ์ ๋๋ค.
๋ ๋ฒจ ะธ ๋ ๋ฒจ๋ณ์ ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.TextAppender.
์ํ/*
- ์ํ/ํฐ: ํ์, INT ะธ ์ฅ ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.TextAppender.
- ์ํ/๋๋: ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ต์์ ํจ์ ํธ์ถ ์จ ๋ ์ด์ ํจ๊ณผ๊ฐ ์์ต๋๋ค. ์ด์ ๋์์ ๋ณต์ํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. GODEBUG ์ค์ ๋๋์๋๋ ธํ=0. ๋ ๋ง์ ๋งฅ๋ฝ ์ ์ 67273.
- ์ํ/๋๋/v2: ChaCha8 ะธ PCG ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋.
๊ทธ๋ฌผ
๋ฃ๊ธฐCondig ํ์ฌ๋ ์ง์๋๋ ์์คํ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก MPTCP๋ฅผ ์ฌ์ฉํฉ๋๋ค(ํ์ฌ๋ Linux์๋ง ํด๋น).
IP ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.TextAppender.
๋ท/http
์ ํ ์ฌํญ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค ๊ตํตํธ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก 1xx ์ ๋ณด ์๋ต์ ๋ฐ์์ต๋๋ค. ์ด์ ์๋ 5๊ฐ๊ฐ ๋๋ 1xx ์๋ต์ ๋ฐ์ผ๋ฉด ์์ฒญ์ด ์ค๋จ๋๊ณ ์ค๋ฅ๊ฐ ๋ฐํ๋์์ต๋๋ค. ์ด์ ๋ชจ๋ 1xx ์๋ต์ ์ด ํฌ๊ธฐ๊ฐ ๊ตฌ์ฑ ์ค์ ์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ์๋ง ์ค๋ฅ๊ฐ ๋ฐํ๋ฉ๋๋ค. ์ด์ก.MaxResponseHeaderBytes.
๋ํ ์์ฒญ์ ์ถ์ ํํฌ๊ฐ ์๋ ๊ฒฝ์ฐ net/http/httptrace.ํด๋ผ์ด์ธํธ์ถ์ .Got1xx์๋ต, ์ด์ ๋ต๋ณ ์ด ๊ฐ์์ ์ ํ์ด ์์ต๋๋ค 1xx. Got1xxResponse ํํฌ๋ ์ค๋ฅ๋ฅผ ๋ฐํํ์ฌ ์์ฒญ์ ์ค์งํ ์ ์์ต๋๋ค.
๊ตํตํธ ะธ ์๋ฒ ์ด์ HTTP/2 ํ๋กํ ์ฝ ์ค์ ์ ๊ตฌ์ฑํ ์ ์๋ HTTP2 ํ๋๊ฐ ์์ต๋๋ค.
์๋ก์ด ๋ถ์ผ ์๋ฒ.ํ๋กํ ์ฝ ะธ ์ด์ก.ํ๋กํ ์ฝ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ HTTP ํ๋กํ ์ฝ์ ๊ตฌ์ฑํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ์ํธํ๋์ง ์์ HTTP/2 ์ฐ๊ฒฐ์ ์ง์ํ๋๋ก ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค.
์ธ์ ์๋ฒ.ํ๋กํ ์ฝ UnencrypterHTTP2๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ ์๋ฒ๋ ์ํธํ๋์ง ์์ ํฌํธ์์ HTTP/2 ์ฐ๊ฒฐ์ ํ์ฉํฉ๋๋ค. ์๋ฒ๋ ๋์ผํ ํฌํธ์์ HTTP/1๊ณผ ์ํธํ๋์ง ์์ HTTP/2๋ฅผ ๋ชจ๋ ํ์ฉํ ์ ์์ต๋๋ค.
์ธ์ ์ด์ก.ํ๋กํ ์ฝ ์ํธํ๋์ง ์์ HTTP2๋ฅผ ํฌํจํ๊ณ HTTP1์ ํฌํจํ์ง ์๋ ๊ฒฝ์ฐ ์ ์ก์ ์ฃผ์์ ์ํธํ๋์ง ์์ HTTP/2๋ฅผ ์ฌ์ฉํฉ๋๋ค. http://. ์ ์ก์ด HTTP/1๊ณผ ์ํธํ๋์ง ์์ HTTP/2๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ HTTP/1์ ์ฌ์ฉํฉ๋๋ค.
์ํธํ๋์ง ์์ HTTP/2์ ๋ํ ์ง์์ "Forward-Learning์ ์ฌ์ฉํ HTTP/2"(RFC 9113, ์น์ 3.3)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ ์ด์ ์ง์๋์ง ์๋ ํค๋ "Upgrade: h2c"๋ ์ง์๋์ง ์์ต๋๋ค.
๋ท/๋ทํ
์ฃผ์, ์ฃผ์ ํฌํธ ะธ ์ ๋์ฌ ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋ ะธ ์ธ์ฝ๋ฉ.TextAppender.
๋คํธ/URL
URL ์ด์ ์ธํฐํ์ด์ค๋ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋.
์ด์ ์ฒด์ /์ฌ์ฉ์
Windows์์ Current ์ด์ Windows Nano Server์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Nano Server์์ ๋๋ฝ๋ NetApi32 ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ๊ตฌํ์ด ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
Windows์์ Current, ์กฐํ ะธ ์กฐํID ์ด์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ ๊ณต ์ฌ์ฉ์ ์๋น์ค ๊ณ์ ์ ์ง์ํฉ๋๋ค.
- NT ๊ถํ ์์คํ
- NT ๊ถํ์ง์ญ ์๋น์ค
- NT ๊ถํ ๋คํธ์ํฌ ์๋น์ค
Windows์์ Current ํ์ฌ ์ฌ์ฉ์๊ฐ ๋๋ฆฐ ๋๋ฉ์ธ์ ๊ฐ์ ํ ๊ฒฝ์ฐ ์๋๊ฐ ์๋นํ ๋นจ๋ผ์ง๋๋ฐ, ์ด๋ ๋ง์ ๊ธฐ์ ์ฌ์ฉ์์๊ฒ ์ผ๋ฐ์ ์ธ ํ์์ ๋๋ค. ์๋ก์ด ๊ตฌํ์ ์ฑ๋ฅ์ ์ด์ ๋ฐ๋ฆฌ์ด ๋จ์์ธ ๋ฐ๋ฉด, ์ด์ ๊ตฌํ์์๋ ์๋ฃํ๋ ๋ฐ ๋ช ์ด, ์ฌ์ง์ด ๋ช ๋ถ์ด ๊ฑธ๋ ธ์ต๋๋ค.
Windows์์ Current ํ์ฌ ์ค๋ ๋๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ๊ฐ์ฅํ๋ ๊ฒฝ์ฐ ํ๋ก์ธ์ค ์์ ์ ์ฌ์ฉ์๋ฅผ ๋ฐํํฉ๋๋ค. ์ด์ ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ ๊ท ํํ์
์ ๊ท์ ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.TextAdapter.
๋ฐํ์
๊ธฐ๋ฅ ๊ตฌ ๋ฃจํธ ํ์ฌ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ต์ ํ๊ฒฝ์์๋ ์์คํ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ "go" ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ์ํ๊ณ , go env GOROOT๋ฅผ ์ฌ์ฉํ์ฌ GOROOT๋ฅผ ์ ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ฌธ์์ด
ํจํค์ง ๋ฌธ์์ด ๋ฐ๋ณต์ ์์ ์ ์ํ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.
- ์ ๋ฌธ์์ด์์ ์ค ๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋ ์ค์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋ถํ ์ํ์ค ๊ตฌ๋ถ ๊ธฐํธ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์ ๋ชจ๋ ํ์ ๋ฌธ์์ด์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋ถํ ํ ์ํ์ค ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ๋ํ๋ ๋๋ง๋ค ๋ถํ ๋ ๋ฌธ์์ด์ ํ์ ๋ฌธ์์ด์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
- ํ๋์ํ์ค ์ ์๋ ๋๋ก ๊ณต๋ฐฑ ๋ฌธ์ ์ํ์ค ์ฃผ๋ณ์ ๋ฌธ์์ด ํ์ ๋ฌธ์์ด์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.์ ๋์ฝ๋.IsSpace
- ํ๋FuncSeq ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ ์ํ์ค ์ฃผ๋ณ์ ๋ฌธ์์ด ํ์ ๋ฌธ์์ด์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
๋๊ธฐํ
ะ ะตะฐะปะธะทะฐัะธั ๋๊ธฐํ ๋งต ํนํ ์ฌ์ ๋ณ๊ฒฝ์ ์์ด์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ณ๊ฒฝ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋๊ท๋ชจ ์ฌ์ ์์๋ ๋ถ๋ฆฌ๋ ์งํฉ ๋ณ๊ฒฝ ๊ฒฝํฉ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋ฎ๊ณ , ๋ฎ์ ๊ฒฝํฉ ์ฌ์ ๋ก๋๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ๋น๋์ ์๊ฐ์ด ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋น๋ ์ค์ GOEXPERIMENT=nosynchashtriemap์ ์ค์ ํ์ฌ ์ด์ ๊ตฌํ์ผ๋ก ๋๋๋ฆฌ๊ณ ๋ค์์ ์ํํ์ญ์์ค. ๋ฌธ์ ์์์ ์์ฑํ์ธ์.
ํ ์คํธ
์๋ก์ด ๋ฐฉ๋ฒ T. ๋ฌธ๋งฅ ะธ B. ๋ฌธ๋งฅ ํ ์คํธ๊ฐ ์๋ฃ๋๊ณ ํ ์คํธ ์ ๋ฆฌ ๊ธฐ๋ฅ์ด ์คํ๋๊ธฐ ์ ์ ์ญ์ ๋๋ ์ปจํ ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค.
์๋ก์ด ๋ฐฉ๋ฒ ํฐ.์น๋๋ฅด ะธ B.ํฌ๋๋ฅด ํ ์คํธ๋ ๋ฒค์น๋งํฌ ๊ธฐ๊ฐ ๋์ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ ์คํธ/ํ ํ๋ฆฟ
์ด์ ํ ํ๋ฆฟ์ range-over-func์ range-over-int๋ฅผ ์ง์ํฉ๋๋ค.
์๊ฐ
Time ์ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค ์ธ์ฝ๋ฉ.๋ฐ์ด๋๋ฆฌ์ดํ๋ ะธ ์ธ์ฝ๋ฉ.TextAppender.
ํฌํธ
Linux
๊ทธ๋๋ก ๋ฐํํ๋ค Go 1.23 ๋ฆด๋ฆฌ์ค ๋ ธํธ์ ๋ฐ๋ฅด๋ฉด, Go 1.24์๋ Linux ์ปค๋ ๋ฒ์ 3.2 ์ด์์ด ํ์ํฉ๋๋ค.
๋ค์
Go 1.24๋ macOS 11 Big Sur์์ ์คํ๋๋ ๋ง์ง๋ง ๋ฆด๋ฆฌ์ค์ ๋๋ค. Go 1.25์๋ macOS 12 Monterey ์ด์์ด ํ์ํฉ๋๋ค.
WebAssembly
Go ํ๋ก๊ทธ๋จ์ go:wasmexport ์ปดํ์ผ๋ฌ ์ง์์ด๊ฐ ์ถ๊ฐ๋์ด ํจ์๋ฅผ WebAssembly ํธ์คํธ๋ก ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
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๋นํธ ์๋์ฐ/arm ํฌํธ(GOOS=windows GOARCH=arm)๋ ์์๋ ๊ฒ์ผ๋ก ํ์๋์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ #70705
์ถ์ฒ : linux.org.ru
