๊ฒ์ ๋จ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง ์ถ์ ๋ํ
์ดํ 2.4.0, C/C++ ์ธ์ด๋ก ๋ ํ๋ก์ ํธ์ ์ฝ๋ ๋ฒ ์ด์ค์ ์ฝ์
ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์์ง์ ํฌ๊ธฐ๊ฐ ์๊ณ ํด๋์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์์ ์๋ชจ๊ฐ ์ ์ต๋๋ค. ์์ง์ ์์ค์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ, ํ์ฐ MIT ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ.
Duktape ์ฝ๋๋ ์ฝ 160kB๋ฅผ ์ฐจ์งํ๊ณ 70kB์ RAM๋ง ์๋นํ๋ฉฐ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ์๋น ๋ชจ๋์์๋ 27kB์ RAM์ ์๋นํฉ๋๋ค. Duktape๋ฅผ C/C++ ์ฝ๋์ ํตํฉํ๋ ค๋ฉด ์ถฉ๋ถํ๋ค ํ๋ก์ ํธ์ duktape.c ๋ฐ duktape.h ํ์ผ์ ์ถ๊ฐํ๊ณ ์ฌ์ฉํ์ญ์์ค. ๋ํ
์ดํ API C/C++ ์ฝ๋์์ JavaScript ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ํธ์ถํฉ๋๋ค. ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ๊ธฐ ์ํด ์ข
๋ฃ์๊ฐ ์๋ ๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ ์กฐํฉ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ฉ๋๋ค. ์ฐ์ฐ ๋งํน ์๊ณ ๋ฆฌ์ฆ(Mark and Sweep)์ ์ฌ์ฉํ ๋งํฌ ์นด์ดํ
. ์์ง์ ๋ธ๋ผ์ฐ์ ์์ JavaScript๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. NetSurf.
Ecmascript 5.1 ์ฌ์๊ณผ ๋ถ๋ถ์ ์ธ ํธํ์ฑ์ ์๋ฒฝํ๊ฒ ์ ๊ณตํฉ๋๋ค. ์ง์ ์์ฑ ๊ฐ์ํ๋ฅผ ์ํ ํ๋ก์ ๊ฐ์ฒด ์ง์, ํ์ํ๋ ๋ฐฐ์ด, ArrayBuffer, Node.js ๋ฒํผ, ์ธ์ฝ๋ฉ API, ๊ธฐํธ ๊ฐ์ฒด ๋ฑ์ ํฌํจํ๋ Ecmascript 2015 ๋ฐ 2016(E6 ๋ฐ E7) ์ฌ๊ธฐ์๋ ๋ด์ฅ๋ ๋๋ฒ๊ฑฐ, ์ ๊ท์ ์์ง ๋ฐ ์ ๋์ฝ๋ ์ง์์ ์ํ ํ์ ์์คํ
์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ฝ๋ฃจํด ์ง์, ๋ด์ฅ ๋ก๊น
ํ๋ ์์ํฌ, CommonJS ๊ธฐ๋ฐ ๋ชจ๋ ๋ก๋ฉ ๋ฉ์ปค๋์ฆ, ์ปดํ์ผ๋ ํจ์๋ฅผ ์ ์ฅํ๊ณ ๋ก๋ํ ์ ์๋ ๋ฐ์ดํธ์ฝ๋ ์บ์ฑ ์์คํ
๊ณผ ๊ฐ์ ํน์ ํ์ฅ๋ ์ ๊ณต๋ฉ๋๋ค.
์ ๋ฆด๋ฆฌ์ค์์ ๊ตฌํ ์คํ ์ถ์ ์ ๊ฐ์ ธ์ค๊ธฐ ์ํ duk_to_stacktrace() ๋ฐ duk_safe_to_stacktrace()์ ๋ํ ์๋ก์ด ํธ์ถ, ๋
๋ฆฝ ๋ฐฐ์ด ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํ duk_push_bare_array(). duk_require_constructable() ๋ฐ duk_require_constructor_call() ํจ์๊ฐ ๊ณต๊ฐ๋์์ต๋๋ค. ES2017 ์ฌ์๊ณผ์ ํธํ์ฑ์ด ํฅ์๋์์ต๋๋ค. ๋ฐฐ์ด ๋ฐ ๊ฐ์ฒด ์์
์ด ์ต์ ํ๋์์ต๋๋ค. ์
๋ ฅ ์๋ฃ๋ฅผ ๋นํ์ฑํํ๊ธฐ ์ํด duk CLI ์ธํฐํ์ด์ค์ "--no-auto-complete" ์ต์
์ ์ถ๊ฐํ์ต๋๋ค.
์ถ์ฒ : opennet.ru