Design: ๋ณด์•ˆ ์„ค๋ช…

์— ๋งŒ๋“  2015๋…„ 06์›” 19์ผ  ยท  26์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: WebAssembly/design

WebAssembly์˜ ๋ณด์•ˆ ๋ชจ๋ธ์€ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์•…์„ฑ .wasm ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด์•ˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์šฐ๋ฆฌ์˜ ๋””์ž์ธ์€ ๊ทธ ๊ตฌ๋ถ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ , WebAssembly๊ฐ€ ๊ทธ ๋ณด์•ˆ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•, WebAssembly๊ฐ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด์•ˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” WebAssembly์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ธฐ๋ณธ ์š”์†Œ ์ œ๊ณต์— ์˜์กด).

์ด๊ฒƒ์€ ๋””์ž์ธ์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋กœ ๋‚˜ ์ž์‹ ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  26 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”!

์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งฅ๋ฝ์—์„œ ๋‹ค์Œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

"๊ทธ ์™ธ์— ์†Œ์Šค ์–ธ์–ด ์ˆ˜์ค€์—์„œ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ํ˜ธ์ถœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํž™์˜ ๋‚ด์šฉ ์†์ƒ, ์ž„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ API ํ˜ธ์ถœ, ์ค‘๋‹จ, ํŠธ๋ž˜ํ•‘ ๋˜๋Š” ์ž„์˜์˜ ์–‘์˜ ๋ฆฌ์†Œ์Šค(ํ•œ๋„ ๋‚ด์—์„œ)."
https://github.com/WebAssembly/design/blob/master/CANdC++.md#undefined-and-implementation-defined-behavior

๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์˜ˆ์ œ์™€ ์ถ”๊ฐ€ ํ† ๋ก ์„ ์ œ๊ณตํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ๊ฐ€ ์•„๋‹Œ ๋ฐฐ๊ฒฝ์—์„œ ์˜จ ์›น ๊ฐœ๋ฐœ์ž์—๊ฒŒ (์•„๋งˆ๋„) ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…์ŠคํŠธ/์ฐธ์กฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, CERT์˜ MSC14-C. MSC15-CPP. ์ทจ์•ฝ์„ฑ ์— ์˜์กดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. C ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ผ๋ถ€ ๋žฉ์–ด๋ผ์šด๋“œ ๊ฒ€์‚ฌ๋ฅผ ์ž๋™์œผ๋กœ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด "๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ์˜ ์ž๋™ ์ œ๊ฑฐ" ์—์„œ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•จ).

๋ณด๋‹ค ์‹ฌ์ธต์ ์ธ ์น˜๋ฃŒ:

๊ธฐํƒ€ ์ž ์žฌ์ ์œผ๋กœ ๊ด€๋ จ๋œ ์กฐ์–ธ:

wasm ํŒŒ์ผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์œ ํ•œ CSP ํ—ค๋”๊ฐ€ ๋„์›€์ด ๋ ๊นŒ์š”? ์‚ฌ์ดํŠธ ์†Œ์œ ์ž๊ฐ€ ํ•˜์œ„ ๋ฆฌ์†Œ์Šค๊ฐ€ wasm์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. eval ๋ฐ Function ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์ดํŠธ์—์„œ WebAssembly์˜ ๋™์  ๋กœ๋“œ ๋ฐ ํ‰๊ฐ€๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” Loader ์— ๋Œ€ํ•œ ES6 ๋ชจ๋“ˆ ํ†ตํ•ฉ ๋ฐ CSP ๊ฒ€์‚ฌ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

๋™์  ์—ฐ๊ฒฐ๊ณผ ๊ด€๋ จ๋œ ๋ช‡ ๊ฐ€์ง€ ๋ณด์•ˆ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” #53์„ ์ฐธ์กฐํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@jfbastien yup CORS ๋ฐ SRI๋Š” ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@lukewagner ๋‚˜๋Š” wasm์ด ํ™œ์„ฑํ™”ํ•  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์•ก์„ธ์Šค์— ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ƒ์ž์—์„œ ๋งํ–ˆ๋“ฏ์ด ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ JS์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ wasm์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ชฉํ‘œ๋Š” ๊ธฐ๊ณ„ ๊ธˆ์†์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ „์—ญ ์ œ์–ด์— ๋Œ€ํ•œ CSP ์ง€์‹œ๋ฌธ์€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ณด๋‹ค ์„ธ๋ถ„ํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹๋„ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ฆ‰๊ฐ์ ์ธ ๊ฐ€๋Šฅ์„ฑ์€ ๋‹ค๋ฅธ ์ €์ˆ˜์ค€ ์•ก์„ธ์Šค์— ๊ถŒํ•œ API๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Œ, ์„ฑ๋Šฅ ๋ฉด์—์„œ ๊ธˆ์†์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ, ๊ถŒํ•œ ๋ฐ ์ƒŒ๋“œ๋ฐ•์‹ฑ ๊ด€์ ์—์„œ WebAssembly๊ฐ€ JS์—์„œ ๋ถ„๊ธฐ๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

MVP ์ดํ›„์™€ Brendan Eichs ๋ฐœํ‘œ์—์„œ ์–ป์€ ๋Š๋‚Œ์€ ์•„๋‹ˆ์—ˆ์ง€๋งŒ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. +1:

๋‚˜๋Š” ๋‹น์‹ ์ด ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐ ์— ๋™์˜ ํ›„ MVP, WebAssembly ์˜๋ฏธ๊ฐ€ ํšจ์œจ์ ์œผ๋กœ JS์—์„œ polyfilled ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์„ ๊ฐˆ๋ผ์ง€๋Š”์— ํ—ˆ์šฉ ๋  ๊ฒƒ์ด๋ผ๊ณ . ์ด ์ฐจ์ด๋Š” ๋ณด์•ˆ/๊ถŒํ•œ๊ณผ๋Š” ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋Š” ๊ณ„์‚ฐ ๊ธฐ๋Šฅ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ฆฌํ•„์„ _ํšจ์œจ์ ์œผ๋กœ_ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ JS( Emterpreter ์Šคํƒ€์ผ )๋กœ ์ž‘์„ฑ๋œ WebAssembly ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ _์‹œ๋ฎฌ๋ ˆ์ดํŠธํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ํšจ๊ณผ์— ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ "JS์—์„œ ๋ถ„๊ธฐ"๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ๋ฌถ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค, ํ™•์‹คํžˆ ๋ฌธ์„œ์— ์ข‹์€ ๊ฐœ์„  ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ์ฝ์—ˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ wass๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์–ป์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“  ๋” ๋งŽ์€ ์Šค๋ ˆ๋”ฉ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ Eichs์˜ ์ด์•ผ๊ธฐ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ๋“ค์ด JavaScript์—๋„ ์ถ”๊ฐ€๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์กฐ์‚ฌ์˜ ๋Œ€์ƒ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

"JS๋ณด๋‹ค ๋ณด์•ˆ POV์™€ ๋‹ค๋ฅด์ง€ ์•Š์Œ"์ด ์ด์ œ Web.md ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์ฐจ์ด๋ฅผ ๋” ์ž˜ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. JS๋ฅผ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์€ ์ž์ฒด์ ์ธ ๊ด€์ ์—์„œ ๊ทธ๋ฆฌ ์ข‹์ง€ ์•Š์œผ๋ฉฐ, ์ €๋Š” ์‹ค์ œ๋กœ JS๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณด์•ˆ ๋…ธ์ถœ ์˜์—ญ(์˜ˆ: cross-origin ์Šคํฌ๋ฆฝํŠธ ๋“ฑ)์„ ์ค„์ด๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

CppCon์—์„œ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด์œผ๋‹ˆ ์ด์ œ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค :-)

WebAssembly๋ฅผ ์•”ํ˜ธํ™” ๊ตฌํ˜„์˜ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๊ณ ์ • ์‹œ๊ฐ„ ๊ตฌํ˜„ ์ง€์› ์ธก๋ฉด์—์„œ JS/asm.js JIT์™€ WebAssembly JIT์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„ํŠธ ์‹œํ”„ํŠธ, JIT ๋„์ž… ํ›„ ๋ถ„๊ธฐ, ์กฐ๊ฑด๋ถ€ ์ ํ”„ ๋˜๋Š” ์กฐํšŒ ๋˜๋Š” JIT๊ฐ€ ํƒ€์ด๋ฐ ๋ˆ„์ˆ˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๊ฐ™์€ ์ž‘์—…์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ WebAssembly๊ฐ€ ์ด๋ฏธ asm.js์— ๋Œ€ํ•ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ๊ณ ์ • ์‹œ๊ฐ„ ๊ตฌํ˜„์„ ์ง€์›ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„์— ๋Œ€ํ•œ WebAssembly์˜ ๋ณด์•ˆ ์˜๋ฏธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. WebAssembly๊ฐ€ ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋” ๋‚˜์€ ๊ฐ•ํ™” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•œ๋‹ค๋ฉด(ํ˜„์žฌ ๋˜๋Š” MVP ์ดํ›„, ์‚ฌ์–‘์„ ์ž์„ธํžˆ ์ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค), ๊ทธ๊ฒƒ๋„ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. https://github.com/jedisct1/libsodium.js/issues/24#issuecomment -128002942์—๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก JavaScript ์•”ํ˜ธํ™”์™€ ๊ด€๋ จ๋œ ๊ธฐ์กด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ด๊ฒƒ์€ ๋ชจ๋‘ ๋งค์šฐ ํฅ๋ฏธ ์ง„์ง„ํ•ฉ๋‹ˆ๋‹ค. :NS

@dconnolly๊ฐ€ ์ œ์•ˆํ•œ ๋Œ€๋กœ ๋ช…ํ™•ํ•œ ์ง„์ˆ ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋…ผ์˜ํ•œ ๋‚ด์šฉ์€ MVP์˜ ๊ฒฝ์šฐ JIT๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ณด์žฅ์ด ์—†์œผ๋ฉฐ, ์ผ์ • ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์–ด๋„ MVP์—์„œ๋Š” wasm์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ–ฅํ›„ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” ์ ์ ˆํ•œ ๊ณ ์ • ์‹œ๊ฐ„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์–ด์…ˆ๋ธ”๋ฆฌ์™€ ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ API(์›น ํ”Œ๋žซํผ๊ณผ ๊ฐ™์€ ์ž„๋ฒ ๋”์—์„œ ์ œ๊ณตํ•˜๋Š”)๊ฐ€ ๊ทธ๋Ÿฌํ•œ ๋ณด์ฆ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๋” ๋‚˜์€ ์œ„์น˜์— ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์  ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” CPU์˜ ๊ทน๋‹จ์ ์ธ ์˜ˆ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. WebAssembly๋Š” CPU๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฌํ•ด๋Š” WebAssembly๊ฐ€ ์ง„์ •ํ•œ ์ƒ์ˆ˜ ์‹œ๊ฐ„ ์ฝ”๋“œ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋†’์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์— ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฟจ, ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์›น ํ”Œ๋žซํผ API๋ฅผ ํŠนํžˆ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ, ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ฌผ๊ฑด์„์œ„ํ•œ ์ตœ์ ์˜ ์žฅ์†Œ์ž„์„ ํ•ฉ์˜ ( WebCrypto์ด ์žˆ๋‹ค /๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํƒ€์› ๊ณก์„ ๊ณผ ๊ฐ™์€ ํ–ฅํ›„ ์ถ”๊ฐ€๋ฅผ์œ„ํ•œ ๊ณต๊ฐ„, ํ•„์ˆ˜ ์ง€์›๋ฉ๋‹ˆ๋‹ค ๋…ธํŠธ ). ๋ณด์•ˆ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์–ธ์–ด๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉด WebAssembly์˜ ์˜๋ฏธ๋ฅผ ์ž˜๋ชป ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :+1:

@jfbastien , wasm ํƒ€์ด๋ฐ ๋ณด์žฅ์— ๋Œ€ํ•ด ๋งํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์˜ค๋Š˜๋‚ ์—๋„ ์—ฌ์ „ํžˆ ์ ์šฉ๋ฉ๋‹ˆ๊นŒ?

ํ˜„์žฌ ๋ฌธ์„œ์—์„œ ๋ฌธ์„œํ™”๋œ ์—์ง€ ์ผ€์ด์Šค์˜ ์ž‘์€ ๋ชฉ๋ก์„ ์ œ์™ธํ•˜๊ณ  ๊ฒฐ์ •๋ก ์  ์‹คํ–‰์ด ๋ชฉํ‘œ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ์ˆ˜ ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์ž ์žฌ์ ์œผ๋กœ ๊ธ์ •์ ์œผ๋กœ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ webassembly.org/docs/security ๋Š” ํƒ€์ด๋ฐ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ž ์žฌ์ ์ธ ๋ฏธ๋ž˜ ์™„ํ™”๋ฅผ ๋‚˜์—ดํ•˜์ง€๋งŒ ์˜๋ฏธ๊ฐ€ "๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” C ์ฝ”๋“œ๊ฐ€ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์ˆ˜์ •๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ์•„์ง" ๋˜๋Š” "์ผ๋ฐ˜์ ์ธ C ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์‚ฌ์ด๋“œ ์ฑ„๋„ ์ทจ์•ฝ์ ์ด ๋„์ž…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

ํ™•์‹คํ•œ ๋ณด์žฅ์€ ์ œ์ณ๋‘๊ณ , "์ผ์ • ์‹œ๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ™•์‹คํžˆ 100% ์—‰๋ง์ด ๋  ๊ฒƒ"๊ณผ "ํ•ญ์ƒ clang์˜ ๊ธฐ๋ณธ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ถœ๋ ฅ์— ํ•„์ ํ•˜๋Š” ํƒ€์ด๋ฐ ํŠน์„ฑ์„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์„ ๋ถ„๋ช…ํ•œ ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค" ์‚ฌ์ด์— ์šฐ๋ฆฌ๊ฐ€ ์„œ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. @dconnolly ์˜ ์š”์ ์— ๋”ฐ๋ฅด๋ฉด ์ด๊ฒƒ์„ asm.js์™€ ๊ตฌ์ฒด์ ์œผ๋กœ ๋น„๊ตํ•˜๋Š” ์ผ๋ถ€ ์–ธ์–ด๋„ ์ •๋ง ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ 'use asm' ๋ฌธ์„ ์™„์ „ํžˆ ์กด์ค‘ํ•˜๋Š” Firefox์™€ ๊ฐ™์€ ๊ตฌํ˜„๊ณผ ์ข€ ๋” ๋Š์Šจํ•˜๊ฒŒ ์žฌ์ƒํ•˜๋Š” Chrome๊ณผ ๊ฐ™์€ ๊ตฌํ˜„์„ ๋ชจ๋‘ ๊ณ ๋ คํ•˜๋ฉด .

@buu700 ๋ชจ๋“  opcode์— ๋Œ€ํ•œ ๊ฒฐ์ •์  ๊ฒฐ๊ณผ๋Š” ๋ชจ๋“  opcode์— ๋Œ€ํ•ด ํƒ€์ด๋ฐ์ด ๋ณด์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Clang์€ ์ผ์ • ์‹œ๊ฐ„ ์‹คํ–‰์„ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ •๋ณด ๋ˆ„์ถœ์— ๋ฏผ๊ฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ผ์ • ์‹œ๊ฐ„๋งŒ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ˜„์žฌ WebAssembly๋Š” ์ •๋ณด ๋ˆ„์ถœ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์–ด๋–ค ๊ฒƒ๋„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. @jfbastien์˜ ๊ฒฐ์ •๋ก ์— ๋Œ€ํ•œ ์„น์…˜์„ ๋ช…ํ™•ํžˆ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ด๋ฐ/์‚ฌ์ด๋“œ ์ฑ„๋„(๋ฐ ๋ณด์žฅ ๋˜๋Š” ๋ถ€์กฑ ๋ฌด์‹œ)์— ๊ด€ํ•ด์„œ๋Š” ํ˜„์žฌ ์‚ฌ์–‘์— ๊ด€๋ จ์„ฑ์ด ์—†๊ณ  ์‹ค์ œ ๊ตฌํ˜„์ด clang๊ณผ ์–ด๋–ป๊ฒŒ ๋น„๊ต๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ด์ „ ์˜๊ฒฌ์„ ์ฝ์€ ํ›„ ๋‚ด๊ฐ€ ์‹ค์ œ๋กœ ํŒŒ์•…ํ•œ ๊ฒƒ์€ wasm ๊ตฌํ˜„์ด ์ด ์˜์—ญ์—์„œ ๋ฐ˜๋“œ์‹œ gcc/clang๋ณด๋‹ค _๋‚˜์œ_ ๊ณ ์œ ํ•œ ์ด์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ์ถ”์ƒํ™” ์ˆ˜์ค€์„ ์šฐ๋ ค ์‚ฌํ•ญ์œผ๋กœ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ "์ถฉ๋ถ„ํžˆ ์ข‹์€"์ผ์ •ํ•œ ํƒ€์ด๋ฐ(๋„ค์ดํ‹ฐ๋ธŒ C, ์–ด์…ˆ๋ธ”๋ฆฌ, ํ•˜๋“œ์›จ์–ด ๋“ฑ)์— ๋Œ€ํ•œ ๊ธฐ์ค€ ๋น„๊ต๋กœ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•ด, clang์—์„œ ์ •๋ณด ๋ˆ„์ถœ์— ๋ฏผ๊ฐํ•œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ์˜ค๋Š˜๋‚  WebAssembly ์‚ฌ์–‘์— ๋Œ€ํ•œ ๊ฐ€์ƒ์˜ ์ตœ๊ณ /๊ฐ€์žฅ ์„ฑ์ˆ™ํ•œ/๊ฐ€์žฅ ์ •๋ณด ๋ˆ„์ถœ ๊ฐ•ํ™” ๊ตฌํ˜„ ์ค‘์—์„œ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์–ด์ง„๋‹ค๋ฉด ์ „์ž๊ฐ€ ์—ฌ์ „ํžˆ ๋ถ„๋ช…ํžˆ ์„ ํ˜ธ๋ฉ๋‹ˆ๊นŒ?

์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ์ •๋ณด ์œ ์ถœ์— ๋ฏผ๊ฐํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•ด clang์ด๋‚˜ WebAssembly์— ์˜์กดํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ณด์žฅ์„ ์‹ค์ œ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๋‚ด๊ฐ€ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํŠน์ • CPU์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๋ฅผ ์ฝ๊ณ  ์ปค๋„๊ณผ ๊ธด๋ฐ€ํ•œ ํ˜‘๋ ฅ์„ ํ†ตํ•ด ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "x86" ๋˜๋Š” "ARM 64"๋ฅผ ์•„๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ํƒ€์ด๋ฐ์— ๋…๋ฆฝ์ ์ด๊ณ  ์‹ถ๋‹ค๋ฉด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์ปดํŒŒ์ผ๋Ÿฌ/์–ธ์–ด๋กœ ์ผ๋ถ€ ๋ณด์žฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•˜๋‚˜์˜ ์ •๋ณด ๋ˆ„์ถœ์ด ์ฝ”๋“œ๋ฅผ ๋ฌด๋ ฅํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ „๋ถ€์ธ ๊ฒฝ์šฐ "์ผ๋ถ€"๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ •๋ณด ์œ ์ถœ ์œ„ํ˜‘ ๋ชจ๋ธ๋ง์— ๋Œ€ํ•œ ๋ชจ๋“  ์‚ฌํ•ญ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ƒฅ wasm์ด ๋‹ค๋ฅธ ์–ด๋–ค (asm-free) C ์ปดํŒŒ์ผ ํƒ€๊ฒŸ๋ณด๋‹ค ๋” ์ƒˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์–ป๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” "๋” ๋งŽ์€ ๋ˆ„์ถœ"์ด ์œ ์šฉํ•œ ์ธก์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉ”ํŠธ๋ฆญ์€ "์ „ํ˜€ ์ƒˆ๋Š”๊ฐ€?"์ž…๋‹ˆ๋‹ค. WebAssembly, clang, C++ ๋ฐ C์— ๋Œ€ํ•œ ๋Œ€๋‹ต์€ "์˜ˆ"์ž…๋‹ˆ๋‹ค.

์Œ, ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด @dconnolly๋กœ ์—ฐ๊ฒฐ๋œ libsodium/NaCl์˜ ์˜ˆ์™€ ๊ฐ™์ด ์ˆœ์ˆ˜ํ•œ C ๊ตฌํ˜„์œผ๋กœ ํŠน์ • ๋ถ€์ฑ„๋„ ์ €ํ•ญ ์†์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ด์•„๋‚จ๋Š”๋‹ค๋ฉด ํ™•์‹คํžˆ ์ด์ƒ์ ์ด์ง€๋งŒ ๋‘ ๊ฐ€์ง€ ์‚ฌ์ด์˜ ๋ธํƒ€๋ฅผ ์•„๋Š” ๊ฒƒ๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ ์€ libsodium์˜ ์˜๋„๋œ ์œ„ํ˜‘ ๋ชจ๋ธ์„ ๊นจ๋œจ๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

libsodium ๋ฌธ์ œ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋งํฌ๋œ ์ฃผ์„์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ asm.js์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋งค์šฐ ์œ ์ตํ•˜์ง€๋งŒ ๋น„์ „๋ฌธ๊ฐ€๋กœ์„œ ํ•ด๋‹น ํŠน์ • ๋ถ„์„์ด WebAssembly์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ž‘์„ฑ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆด์ง€ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(i64 ์ง€์› ๋ฐ ๋ธŒ๋ผ์šฐ์ € ์ œ์™ธ asm.js๋ณด๋‹ค wasm์„ ๋” ์ผ๊ด€๋˜๊ฒŒ ์ฒ˜๋ฆฌํ•จ).

ํ•˜์ง€๋งŒ ์–ด์จŒ๋“ , ๋‚˜๋Š” 1๋…„ ์ „ ๋‹น์‹ ์˜ ์›๋ž˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ณ , ๋‚ด๊ฐ€ ์ •๋ง๋กœ ๊ฑฑ์ •ํ•œ ๊ฒƒ์€ ๋‹น์‹ ์ด ์‹ค์ œ๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•œ ์ง„์ˆ ์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์˜€์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ C/clang์—๋Š” ์—†์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ๋ชฉ์ ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ), ๋ช…ํ™•ํžˆ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

>

๋‚˜๋Š” "๋” ๋งŽ์€ ๋ˆ„์ถœ"์ด ์œ ์šฉํ•œ ์ธก์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jfbastien , ์–‘์  ๋ณด์•ˆ์€
์ €๊ฒƒ. ์ผ๋ฐ˜์ ์ธ ๋ฉ”ํŠธ๋ฆญ์€ ์ •๋ณด์˜ ๋น„ํŠธ ์ˆ˜์ž…๋‹ˆ๋‹ค.
์„ฑ๊ณต์ ์ธ ๊ณต๊ฒฉ -- ์˜ˆ๋ฅผ ๋“ค์–ด 1๋น„ํŠธ์™€ 32๋น„ํŠธ๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์—ฐ์Šต ๊ฑฐ์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ์€ ์ธก๋ฉด์„ ํ†ตํ•ด ์ž ์žฌ์ ์ธ ๋ˆ„์ถœ ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Šต๋‹ˆ๋‹ค.
์ฑ„๋„). ๊ทธ๋Ÿฌ๋‚˜ ์ข…์ข… ๊ทธ๋Ÿฌํ•œ ์ •๋Ÿ‰ํ™”๋Š” ๋‹ค์†Œ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

>

๋‚˜๋Š” "๋” ๋งŽ์€ ๋ˆ„์ถœ"์ด ์œ ์šฉํ•œ ์ธก์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jfbastien , ์–‘์  ๋ณด์•ˆ์€
์ €๊ฒƒ. ์ผ๋ฐ˜์ ์ธ ๋ฉ”ํŠธ๋ฆญ์€ ์ •๋ณด์˜ ๋น„ํŠธ ์ˆ˜์ž…๋‹ˆ๋‹ค.
์„ฑ๊ณต์ ์ธ ๊ณต๊ฒฉ -- ์˜ˆ๋ฅผ ๋“ค์–ด 1๋น„ํŠธ์™€ 32๋น„ํŠธ๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์—ฐ์Šต ๊ฑฐ์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ์€ ์ธก๋ฉด์„ ํ†ตํ•ด ์ž ์žฌ์ ์ธ ๋ˆ„์ถœ ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Šต๋‹ˆ๋‹ค.
์ฑ„๋„). ๊ทธ๋Ÿฌ๋‚˜ ์ข…์ข… ๊ทธ๋Ÿฌํ•œ ์ •๋Ÿ‰ํ™”๋Š” ๋‹ค์†Œ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ณ , ๋ˆ„์ถœ์€ ๋ˆ„์ถœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒ ์ €ํžˆ ๋ฌด๊ด€์‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋ฉด ๊ฒฐ๊ตญ ์šฐ๋ฆฌ(WebAssembly ๊ตฌํ˜„์ž)๋ฅผ ๋ฌผ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” WebAssembly๊ฐ€ ์šฐ๋ฆฌ์˜ ๋‹ค๋ฅธ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ์ด ๋ฌธ์ œ๋ฅผ ๊ณง ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  WebCrypto๊ฐ€ ์ด๋ฏธ ๋…ธ๋ ฅ์œผ๋กœ ์กด์žฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ). ๋ฌผ๋ก  ์—ฌ๊ฐ€ ์‹œ๊ฐ„์— ์ด๊ฒƒ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jfbastien , ์ด ์ฃผ์ œ๊ฐ€ ํ˜„์žฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์—†๋‹ค๋Š” ๋ฐ ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
Wasm์€ C๋ณด๋‹ค ๋” ์ƒˆ์ง€ ์•Š์œผ๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๋Œ€์ฒ˜ํ•  ์ข‹์€ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ. ๊ทธ๋Ÿฌ๋‚˜ "๋ˆ„์ถœ์€ ๋ˆ„์ถœ์ด๋‹ค"์™€ ๊ฐ™์€ ์ง€๋‚˜์น˜๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ -- ๋ชจ๋“  ์‹œ์Šคํ…œ์ด ์–ด๋Š ์ •๋„ ๋ˆ„์ถœ๋˜๋ฏ€๋กœ ์ˆ˜๋Ÿ‰์€ ์‚ฌ์‹ค ์ „๋ถ€์ž…๋‹ˆ๋‹ค.
์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๋ฅผ ๋ฌผ๋ฆด ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€" ์ „๋žต์ด ์•„๋‹™๋‹ˆ๋‹ค.
์‹ค์ œ ์ž ์žฌ์  ํฌ์ƒ์ž๋“ค ์‚ฌ์ด์— ๋งŽ์€ ์‹ ๋ขฐ๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๋Š” ๊ฒƒ, ์ฆ‰
๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ์ž.

๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค ... Wasm์€ C๋ณด๋‹ค ๋” ์ƒˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ข‹์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ํ™•์ธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์— ์˜จ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ "๋ˆ„์ˆ˜๋˜์ง€ ์•Š์„ ๊ฒƒ"์ด๋ผ๋Š” ๋ณด์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@rossberg-chromium ๋‚˜๋Š” wasm์ด C๋ณด๋‹ค ๋” ์ƒˆ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ƒ๊ฐ์— ๋™์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ฐ ์—”์ง„์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JavaScriptCore๋Š” ์ฝ”๋“œ๋ฅผ ๊ณ„์ธตํ™”ํ•˜๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ์ฝ”๋“œ ๊ณ„์ธตํ™”๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ C ์ฝ”๋“œ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ˆ„์ˆ˜์ž…๋‹ˆ๋‹ค. wasm ์—”์ง„์ด ๋” ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ wasm์ด JVM๊ณผ ๊ฐ™์€ ๋ˆ„์ˆ˜๊ฐ€ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ, ๋‚˜๋Š” ์‚ฌ์–‘์ด๋‚˜ ๊ตฌํ˜„์ž๊ฐ€ ํŠนํžˆ ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜์ง€ ์•Š๊ณ  ์ •๋ณด ๋ˆ„์ถœ ๋ฐฉ์ง€๋ฅผ ์ˆ˜์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

beriberikix picture beriberikix  ยท  7์ฝ”๋ฉ˜ํŠธ

ghost picture ghost  ยท  7์ฝ”๋ฉ˜ํŠธ

cretz picture cretz  ยท  5์ฝ”๋ฉ˜ํŠธ

JimmyVV picture JimmyVV  ยท  4์ฝ”๋ฉ˜ํŠธ

artem-v-shamsutdinov picture artem-v-shamsutdinov  ยท  6์ฝ”๋ฉ˜ํŠธ