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