Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค 1.14

๋„์ž… ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค 1.14๋กœ ์ด๋™๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด์˜ ๋†’์€ ์„ฑ๋Šฅ๊ณผ ์ฝ”๋“œ ์ž‘์„ฑ ์šฉ์ด์„ฑ, ๊ฐœ๋ฐœ ์†๋„, ์˜ค๋ฅ˜ ๋ฐฉ์ง€ ๋“ฑ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์†”๋ฃจ์…˜์œผ๋กœ Google์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ฐธ์—ฌ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฐฐํฌ์ž BSD ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

Go์˜ ๊ตฌ๋ฌธ์€ Python ์–ธ์–ด์—์„œ ์ผ๋ถ€ ์ฐจ์šฉํ•œ C ์–ธ์–ด์˜ ์นœ์ˆ™ํ•œ ์š”์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์–ธ์–ด๋Š” ๋งค์šฐ ๊ฐ„๊ฒฐํ•˜์ง€๋งŒ ์ฝ”๋“œ๋Š” ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. Go ์ฝ”๋“œ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋…๋ฆฝํ˜• ๋ฐ”์ด๋„ˆ๋ฆฌ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค(ํ”„๋กœํŒŒ์ผ๋ง, ๋””๋ฒ„๊น… ๋ฐ ๊ธฐํƒ€ ๋Ÿฐํƒ€์ž„ ๋ฌธ์ œ ๊ฐ์ง€ ํ•˜์œ„ ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค). ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด C ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋น„์Šทํ•œ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์ฒ˜์Œ์—๋Š” ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ณ‘๋ ฌ ์‹คํ–‰ ๋ฐฉ๋ฒ• ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•œ ์šด์˜์ž ์ˆ˜์ค€ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์‹œ์Šคํ…œ์˜ ํšจ์œจ์ ์ธ ์ž‘๋™์— ์ดˆ์ ์„ ๋งž์ถฐ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์–ธ์–ด๋Š” ๊ณผ๋„ํ•˜๊ฒŒ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํ˜์‹ Go 1.14 ๋ฆด๋ฆฌ์Šค์— ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • "go" ๋ช…๋ น์˜ ์ƒˆ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ์„ ์–ธ๋˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜๋ฉฐ GOPATH ๋Œ€์‹  ์ข…์†์„ฑ ๊ด€๋ฆฌ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์€ ํ†ตํ•ฉ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ง€์›, ํŒจํ‚ค์ง€ ์ œ๊ณต ๊ธฐ๋Šฅ ๋ฐ ํ–ฅ์ƒ๋œ ์ข…์†์„ฑ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๋” ์ด์ƒ GOPATH ํŠธ๋ฆฌ ๋‚ด ์ž‘์—…์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ๋ฒ„์ „๋ณ„ ์ข…์†์„ฑ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ  ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋จ ๋ฉ”์†Œ๋“œ ์„ธํŠธ๊ฐ€ ๊ฒน์น˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์žฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด์žฅ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋Š” ์ด์ œ ๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ์™€ ๋™์ผํ•œ ์ด๋ฆ„๊ณผ ์„œ๋ช…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋Š” ์ด์ „๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณ ์œ ํ•œ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • "์ง€์—ฐ" ํ‘œํ˜„์‹์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์–ด ์ง€์—ฐ๋œ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋งŒํผ ๋นจ๋ผ์กŒ์œผ๋ฉฐ ์„ฑ๋Šฅ์— ๋ฏผ๊ฐํ•œ ์ฝ”๋“œ์—์„œ ์ง€์—ฐ๋œ ํ•จ์ˆ˜ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋ฃจํ‹ด(๊ณ ๋ฃจํ‹ด)์˜ ๋น„๋™๊ธฐ ์„ ์ ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋ฃจํ”„๋Š” ์ด์ œ ์ž ์žฌ์ ์œผ๋กœ ์Šค์ผ€์ค„๋Ÿฌ ๊ต์ฐฉ ์ƒํƒœ๋กœ ์ด์–ด์ง€๊ฑฐ๋‚˜ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์‹œ์ž‘์„ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ํ• ๋‹น ์‹œ์Šคํ…œ์˜ ํšจ์œจ์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ ์ด์ œ ํฐ GOMAXPROCS ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์„ฑ์—์„œ ์ž ๊ธˆ ๊ฒฝํ•ฉ์ด ํ›จ์”ฌ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค๊ณ  ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋Š” ๋™์‹œ์— ๋Œ€๊ทœ๋ชจ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์ง‘์ค‘์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • time.After, time.Tick, net.Conn.SetDeadline ํ•จ์ˆ˜์— ์‚ฌ์šฉ๋˜๋Š” ๋‚ด๋ถ€ ํƒ€์ด๋จธ ์‹คํ–‰ ์‹œ ์ž ๊ธˆ์ด ์ตœ์ ํ™”๋˜์—ˆ์œผ๋ฉฐ ์ปจํ…์ŠคํŠธ ์ „ํ™˜ ํšŸ์ˆ˜๊ฐ€ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.
  • go ๋ช…๋ น์—์„œ ๋ฃจํŠธ์— ํŠน์ • ๊ณต๊ธ‰์—…์ฒด์— ์—ฐ๊ฒฐ๋œ ์™ธ๋ถ€ ์ข…์†์„ฑ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ธ‰์—…์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ "-mod=vendor" ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. "vendor" ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“ˆ ์บ์‹œ์—์„œ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ "-mod=mod" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. go.mod ํŒŒ์ผ์ด ์ฝ๊ธฐ ์ „์šฉ์ธ ๊ฒฝ์šฐ ์ตœ์ƒ์œ„ "๊ณต๊ธ‰์—…์ฒด" ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ "-mod=readonly" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ ๋Œ€์‹  ๋Œ€์ฒด go.mod ํŒŒ์ผ์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด "-modfile=file" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • go ๋ช…๋ น์œผ๋กœ ์„ค์ •ํ•  ๋•Œ HTTPS ์‚ฌ์šฉ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“ˆ์„ ์ง์ ‘ ๋กœ๋“œํ•  ๋•Œ ์ธ์ฆ์„œ ํ™•์ธ์„ ๊ฑด๋„ˆ๋›ฐ๋Š” GOINSECURE ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ๋Š” unsafe.Pointer์˜ ์•ˆ์ „ํ•œ ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜๋Š” "-d=checkptr" ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ ํŒจํ‚ค์ง€๊ฐ€ ๋ฐฐ์†ก์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ/๋งˆํŒŒ์‹œ ๋น„์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์˜์˜ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค ๋˜๋Š” ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Linux์—์„œ 64๋น„ํŠธ RISC-V ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์‹คํ—˜์  ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • 64๋น„ํŠธ ARM ์‹œ์Šคํ…œ์— FreeBSD์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€