์ž„๋ฒ ๋””๋“œ JavaScript ์—”์ง„ Duktape 2.4.0 ์ถœ์‹œ

๊ฒŒ์‹œ ๋จ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ์ถœ์‹œ ๋•ํ…Œ์ดํ”„ 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€