Tinygo 0.7.0, LLVM ๊ธฐ๋ฐ˜ Go ์ปดํŒŒ์ผ๋Ÿฌ ์ถœ์‹œ

์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ”„๋กœ์ ํŠธ ๋ฆด๋ฆฌ์Šค ํƒ€์ด๋‹ˆ๊ณ  0.7.0๋Š” ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ ์†Œํ˜• ๋‹จ์ผ ํ”„๋กœ์„ธ์„œ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์ด ๊ฒฐ๊ณผ ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐํ•œ ํ‘œํ˜„๊ณผ ๋‚ฎ์€ ๋ฆฌ์†Œ์Šค ์†Œ๋น„๊ฐ€ ํ•„์š”ํ•œ ์˜์—ญ์„ ์œ„ํ•ด Go ์–ธ์–ด ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธ ๋ฐฐํฌ์ž BSD ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

๋‹ค์–‘ํ•œ ํƒ€๊ฒŸ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์€ LLVM์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜๋ฉฐ, Go ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”์ธ ํˆดํ‚ท์— ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ง์ ‘ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Go๋ฅผ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์„ ์œ„ํ•œ ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํ˜„์žฌ Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary, Phytec ๋“ฑ ๋‹ค์–‘ํ•œ ์ œ์กฐ์‚ฌ์˜ 15๊ฐ€์ง€ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ ๋ชจ๋ธ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ์›น์–ด์…ˆ๋ธ”๋ฆฌ ํ˜•์‹์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋„๋ก ์ปดํŒŒ์ผํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. LinuxESP8266/ESP32 ์ปจํŠธ๋กค๋Ÿฌ ์ง€์› ์•„์ง, ๊ทธ๋Ÿฌ๋‚˜ LLVM์—์„œ Xtensa ์นฉ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด ์นฉ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ถˆ์•ˆ์ •ํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์œผ๋ฉฐ TinyGo์™€์˜ ํ†ตํ•ฉ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ๋ชฉํ‘œ:

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

    ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์‹œ์Šคํ…œ ์ง€์›์€ ์ฃผ์š” ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
    ์ˆ˜๋งŽ์€ ์ฝ”๋ฃจํ‹ด์˜ ํšจ์œจ์ ์ธ ์‹œ์ž‘(์ฝ”๋ฃจํ‹ด ์ž์ฒด์˜ ์‹œ์ž‘์€ ์™„์ „ํžˆ ์ง€์›๋จ), ์ฐธ์กฐ ์ปดํŒŒ์ผ๋Ÿฌ gc์˜ ์„ฑ๋Šฅ ์ˆ˜์ค€ ๋‹ฌ์„ฑ(์ตœ์ ํ™”๋Š” LLVM์— ๋งก๊ฒจ์ ธ ์žˆ์œผ๋ฉฐ ์ผ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” Tinygo๊ฐ€ gc๋ณด๋‹ค ๋น ๋ฅผ ์ˆ˜ ์žˆ์Œ) ๋ฐ ์™„๋ฃŒ ัะพะฒะผะตัั‚ะธะผะพัั‚ัŒ ๋ชจ๋“  Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ•จ๊ป˜.

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

    ๋ฆด๋ฆฌ์Šค 0.7์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘์—๋Š” "tinygo test" ๋ช…๋ น ๊ตฌํ˜„, ๋Œ€๋ถ€๋ถ„์˜ ๋Œ€์ƒ ๋ณด๋“œ(ARM Cortex-M ๊ธฐ๋ฐ˜)์— ๋Œ€ํ•œ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์ง€์› ์ œ๊ณต, WebAssembly, RISC- ๊ธฐ๋ฐ˜ HiFive1 rev B ๋ณด๋“œ ์ง€์› ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. V ์•„ํ‚คํ…์ฒ˜ ๋ฐ Arduino nano33 ๋ณด๋“œ,
    ํ–ฅ์ƒ๋œ ์–ธ์–ด ์ง€์›(getter ๋ฐ setter๋ฅผ ์‚ฌ์šฉํ•œ ๋น„ํŠธ ํ•„๋“œ ์ง€์›, ์ต๋ช… ๊ตฌ์กฐ ์ง€์›)

    ์ถœ์ฒ˜ : opennet.ru

  • DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster