Guile์ ์ค์ฌ์๋ ํน๋ณํ ์ต์ ํ ์ปดํ์ผ๋ฌ์ ์ํด ์์ฑ๋ ์ด์ ๊ฐ๋ฅํ ๋ช
๋ น์ด ์ธํธ๋ฅผ ์คํํ๋ ํจ์จ์ ์ธ ๊ฐ์ ๋จธ์ ์ด ์์ต๋๋ค. Guile ๊ฐ์ ๋จธ์ ์ C ๋ฐ C++์ ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋์ ์ฝ๊ฒ ํตํฉ๋ฉ๋๋ค. Scheme ์ธ์ด ์ธ์ ์ฌ์ ์ง์์ด ๊ตฌํ๋ ์ธ์ด
GNU Guile 3.0์ ์ฃผ์ ํ์ ์ ์ด์ ์ ์ ๊ณต๋์๋ ์ธํฐํ๋ฆฌํฐ ๋ฐ ๋ฐ์ดํธ์ฝ๋ ์ปดํ์ผ๋ฌ์ ๋ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐ๋ ํน์ ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋ JIT ์ปดํ์ผ๋ฌ์ ๋์ ์ด์์ต๋๋ค. JIT๋ฅผ ์ฌ์ฉํ๋ฉด ์ฆ์ ๊ธฐ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๊ณ Guile ์ ํ๋ฆฌ์ผ์ด์ ์คํ ์๋๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค(ํ ์คํธ ๊ฒฐ๊ณผ ์ต๋ 4๋ฐฐ์ ์๋ ํฅ์์ด ๋ํ๋จ). JIT ์ปดํ์ผ๋ฌ๋ x86-64, i686, ARMv7 ๋ฐ AArch64 ์ํคํ ์ฒ๋ฅผ ์ง์ํฉ๋๋ค.
๊ธฐํ ๊ฐ์ ์ฌํญ:
- ์๋ก์ด Scheme ์ธ์ด ์ฌ์ ์ง์
R7RS ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋; - Guile ๊ฐ์ ๋จธ์ ์ ํ์ ์์ค ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ง์ํ์ฌ ๊ณ ๊ธ ์ต์ ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ด๋ถ ์ ์ ๋ฐ ํํ์ ๊ฒฐํฉ ์ง์(์: "(define _ (begin (foo) #f))")
- ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์ ํ(โ๊ธฐ๋กโ)์ ํตํฉ ๊ตฌํ์ด ์ ์๋์์ต๋๋ค.
- ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ณธ ์์(throw ๋ฐ catch)๊ฐ ์ฌ์์ ๋์์ต๋๋ค.
- ํ์ฅ ๊ตฌ๋ฌธ "else", "=>", "..." ๋ฐ "_"์ ๋ํด ์ ์๋ ๋ฐ์ธ๋ฉ์ ๋๋ค.
- http-request, http-get ๋ฐ ์น ํด๋ผ์ด์ธํธ์ ๊ด๋ จ๋ ๊ธฐํ ์ ์ฐจ์ ์ฌ๋ฐ๋ฅธ ์ธ์ฆ์ ํ์ธ๊ณผ ํจ๊ป TLS๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ ํต์ ์ฑ๋์ ํตํด ์ฝํ ์ธ ๋ฅผ ๋ค์ด๋ก๋ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru