ํ๋ก์ ํธ ๋ฆด๋ฆฌ์ค ๋ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ ๋ฐ ์ํ ๋จ์ผ ํ๋ก์ธ์ ์์คํ ๊ณผ ๊ฐ์ด ๊ฒฐ๊ณผ ์ฝ๋์ ๊ฐ๊ฒฐํ ํํ๊ณผ ๋ฎ์ ๋ฆฌ์์ค ์๋น๊ฐ ํ์ํ ์์ญ์ ์ํด Go ์ธ์ด ์ปดํ์ผ๋ฌ๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ํธ BSD ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ.
๋ค์ํ ํ๊ฒ ํ๋ซํผ์ ๋ํ ์ปดํ์ผ์ LLVM์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋๋ฉฐ, Go ํ๋ก์ ํธ์ ๋ฉ์ธ ํดํท์ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์์ ์ง์ ์คํ๋ ์ ์์ผ๋ฏ๋ก Go๋ฅผ ์๋ํ ์คํฌ๋ฆฝํธ ์์ฑ์ ์ํ ์ธ์ด๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ ค๋ ๋๊ธฐ๋ ์ํ ์ฅ์น์์ ์น์ํ Go ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ ์๊ตฌ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์ฉ Python ๋ฒ์ ์ด ์๋ค๋ฉด Go ์ธ์ด์ฉ์ผ๋ก ์ ์ฌํ ๋ฒ์ ์ ๋ง๋๋ ๊ฒ์ด ์ด๋ป๊ฒ ์ต๋๊น๋ผ๊ณ ์ถ๋ก ํ์ต๋๋ค. ๊ฐ๋ค Rust ๋์ ๋ฐฐ์ฐ๊ธฐ๊ฐ ๋ ์ฝ๊ธฐ ๋๋ฌธ์ ์ฝ๋ฃจํด ๊ธฐ๋ฐ ๋ณ๋ ฌํ๋ฅผ ์ํ ์ค๋ ๋ ๋ ๋ฆฝ์ ์ง์์ ์ ๊ณตํ๊ณ ๊ด๋ฒ์ํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ("๋ฐฐํฐ๋ฆฌ ํฌํจ")๋ฅผ ์ ๊ณตํฉ๋๋ค.
ะ ัะตะบััะตะผ ะฒะธะดะต ะฟะพะดะดะตัะถะธะฒะฐะตััั 15 ะผะพะดะตะปะตะน ะผะธะบัะพะบะพะฝััะพะปะปะตัะพะฒ, ะฒะบะปััะฐั ัะฐะทะปะธัะฝัะต ะฟะปะฐัั Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary ะธ Phytec. ะัะพะณัะฐะผะผั ัะฐะบะถะต ะผะพะณัั ะฑััั ัะพะฑัะฐะฝั ะดะปั ะทะฐะฟััะบะฐ ะฒ ะฑัะฐัะทะตัะต ะฒ ัะพัะผะฐัะต WebAssembly ะธ ะฒ ะฒะธะดะต ะธัะฟะพะปะฝัะตะผัั ัะฐะนะปะพะฒ ะดะปั Linux. ะะพะดะดะตัะถะบะธ ะบะพะฝััะพะปะปะตัะพะฒ ESP8266/ESP32 , ๊ทธ๋ฌ๋ LLVM์์ Xtensa ์นฉ์ ๋ํ ์ง์์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ณ๋์ ํ๋ก์ ํธ๊ฐ ๊ฐ๋ฐ ์ค์ ๋๋ค. ์ด ์นฉ์ ์ฌ์ ํ โโ๋ถ์์ ํ ๊ฒ์ผ๋ก ํ์๋์ด ์์ผ๋ฉฐ TinyGo์์ ํตํฉ ์ค๋น๊ฐ ๋์ด ์์ง ์์ต๋๋ค.
ํ๋ก์ ํธ์ ์ฃผ์ ๋ชฉํ:
๋ฉํฐ ์ฝ์ด ์์คํ
์ง์์ ์ฃผ์ ๋ชฉํ๊ฐ ์๋๋๋ค.
์๋ง์ ์ฝ๋ฃจํด์ ํจ์จ์ ์ธ ์์(์ฝ๋ฃจํด ์์ฒด์ ์์์ ์์ ํ ์ง์๋จ), ์ฐธ์กฐ ์ปดํ์ผ๋ฌ 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
