Design: pThreads ๋ชจ๋“  ETA?

์— ๋งŒ๋“  2017๋…„ 02์›” 21์ผ  ยท  20์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: WebAssembly/design

WebAssembly์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜์Œ ๊ตฌํ˜„ํ•  ๋•Œ ETA๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

-- R

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ํ”„๋กœ์ ํŠธ์—๋Š” ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋‚˜ ๋‹ค๋ฅธ ํฌ๋Ÿผ์ด ์—†์œผ๋ฏ€๋กœ ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋””์ž์ธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์ด๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์ด ๊ณ„์†ํ•ด์„œ ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์งˆ๋ฌธํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

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

๋‹ค์Œ ๋ช‡ ๋ถ„๊ธฐ์˜ ์‹œ๊ฐ„์€ ์•„๋งˆ๋„ ๋ˆ„๊ตฌ๋‚˜ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ์ •ํ™•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๋ ค๋ฉด ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋ฅผ ์˜ˆ์•ฝํ•˜์‹ญ์‹œ์˜ค.

์ด ํ”„๋กœ์ ํŠธ์—๋Š” ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ๋‚˜ ๋‹ค๋ฅธ ํฌ๋Ÿผ์ด ์—†์œผ๋ฏ€๋กœ ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋””์ž์ธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์ด๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์ด ๊ณ„์†ํ•ด์„œ ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์งˆ๋ฌธํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

@sunfishcode , ์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ๋ชฉ๋ก์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด์Šˆ ํŠธ๋ž˜์ปค๊ฐ€ ๊ทธ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

w3 ๊ณต๊ฐœ ๋ชฉ๋ก ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฏฟ๋Š” IRC๋„ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋Š ์‹œ์ ์—์„œ ์›น ์‚ฌ์ดํŠธ์— ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ ์›น ์‚ฌ์ดํŠธ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„น์…˜์—์„œ ๋‘˜ ๋‹ค ์ง์ ‘ ๋งํฌ๋˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘๊ฐ€ ๋Œ€์ค‘๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ~๋…ธ์ถœ~์„ ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€์นจ:

์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ github๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์•ˆ๋‚ดํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ณณ๋ณด๋‹ค ํ•œ ๊ณณ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

@rossberg-chromium๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”. ์ ์‹œ์— ๋‹ต๋ณ€ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๋ ค๋ฉด ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋ฅผ ์˜ˆ์•ฝํ•˜์‹ญ์‹œ์˜ค.

@jfbastien ์ด ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํ‘œ์ค€ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ์žฅ์†Œ์ธ ๊ฒƒ ๊ฐ™์•„์„œ ์—ฌ๊ธฐ์— ์งˆ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฒŒ๋‹ค๊ฐ€ ์Šค๋ ˆ๋“œ ์ง€์›์€ webAssembly์˜ ์„ฑ๊ณต ์—ฌ๋ถ€ ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋””์ž์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
๋กœ๊ณ  ์ปจํ…์ŠคํŠธ์™€ "Java์—์„œ ๊ตฌํ˜„๋˜์ง€ ์•Š๋Š” ์ด์œ "๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์ œ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ / ์Šค๋ ˆ๋“œ ๊ตฌํ˜„์„ ๋”ฐ๋ผ์•ผ ํ•  ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.
์—ด๋ฆฐ ๊ณผ์ •์ด์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ œ ์˜๊ฒฌ์„ ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

--์•„๋ฅด ์žํ˜•

@RobertoMalatesta ์šฐ๋ฆฌ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ WebAssembly์˜ ์ตœ์†Œํ•œ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ œํ’ˆ์— ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐ€์–ด ๋„ฃ๋Š” ๊ฒƒ๋ณด๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์–ป๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๋ก ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. asm.js๋Š” ์ด ๊ธฐ๋Šฅ ์—†์ด๋„ ์„ฑ๊ณต์„ ๊ฑฐ๋’€์Šต๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋Š” ์ผ๋ถ€ ์ค‘์š”ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ™•์‹คํžˆ ์„ฑ๊ณต ๋˜๋Š” ์ค‘๋‹จ ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. GC, ์ œ๋กœ ๋น„์šฉ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋ณด์žฅ๋œ ๊ผฌ๋ฆฌ ํ˜ธ์ถœ ๋“ฑ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

MVP๋ฅผ ์„ ํƒํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ฒ˜์Œ ์ถœ์‹œํ•  ๋•Œ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ธฐ์˜๊ฒŒ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์„ค๊ณ„, ์‚ฌ์–‘ํ™” ๋ฐ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— WebAssembly ๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, WebAssembly์— JavaScript SharedArrayBuffer ์ ‘๊ทผ ๋ฐฉ์‹์„ ์–ด๋Š ์ •๋„ ์ฑ„ํƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•ด๋‹น ์‚ฌ์–‘์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. C++์— ์žˆ๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ๊ณผ futex์™€ ๊ฐ™์€ API๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์ฐจ ์ผ๊ด€์„ฑ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ๋ฌธ์œผ๋กœ ์„ฑ์žฅํ•  ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ํ˜•์‹์  ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

SAB๋Š” TC39์—์„œ "4๋‹จ๊ณ„"์— ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์™„๋ฃŒ, ๋ฐฐ์†ก ์ค€๋น„ ๋ฐ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. WebAssembly์— ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

@jfbastien ํ†ต์ฐฐ๋ ฅ ์žˆ๋Š” ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, WebAssembly์— JavaScript SharedArrayBuffer ์ ‘๊ทผ ๋ฐฉ์‹์„ ์–ด๋Š ์ •๋„ ์ฑ„ํƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.(...)
SAB๋Š” TC39์—์„œ "4๋‹จ๊ณ„"์— ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์™„๋ฃŒ, ๋ฐฐ์†ก ์ค€๋น„ ๋ฐ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. WebAssembly์— ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

์—„์ฒญ๋‚œ. ๋‚˜๋Š” ๋‹จ์ˆœํžˆ ์Šค๋ ˆ๋”ฉ์„ ์œ„ํ•ด ๊ตถ์ฃผ๋ฆฐ ๋งŽ์€ C++ ์ฝ”๋“œ๋กœ ๊ทธ๊ฒƒ์„ ๊ฑท์–ด์ฐจ๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์ •๊ธฐ์ ์œผ๋กœ WebWorkers๋ฅผ TS/JS ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉํ•˜๋ฉฐ ์ €๋Š” WebWorkers์˜ ํŒฌ์€ ์•„๋‹ˆ์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ์‹œ์ž‘์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋„ ๋งค์šฐ ์ค‘์š”ํ•˜์ง€๋งŒ WebAssembly์˜ ์ตœ์†Œํ•œ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ œํ’ˆ์— ์Šค๋ ˆ๋“œ๋ฅผ ์ง‘์–ด ๋„ฃ๋Š” ๊ฒƒ๋ณด๋‹ค ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๋ก ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. asm.js๋Š” ์ด ๊ธฐ๋Šฅ ์—†์ด๋„ ์„ฑ๊ณต์„ ๊ฑฐ๋’€์Šต๋‹ˆ๋‹ค.

MVP๊ฐ€ ๋นจ๋ฆฌ ๋น ์ ธ๋‚˜์™€์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ๊ณผ(์ด๊ฒƒ์ด ์Šคํƒ ๊ธฐ๋ฐ˜์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด AST๋ฅผ ์ค‘๋‹จํ•œ ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค) ์ถ”๊ฐ€ ๋‹จ๊ณ„๋ฅผ ๊ณ„ํšํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ฃผ์˜๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋Š” ์ผ๋ถ€ ์ค‘์š”ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ™•์‹คํžˆ ์„ฑ๊ณต ๋˜๋Š” ์ค‘๋‹จ ๊ธฐ๋Šฅ์ด์ง€๋งŒ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. GC, ์ œ๋กœ ๋น„์šฉ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋ณด์žฅ๋œ ๊ผฌ๋ฆฌ ํ˜ธ์ถœ ๋“ฑ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

emscripten์˜ ์˜ค๋žœ ์‚ฌ์šฉ์ž๋กœ์„œ WebAssembly๊ฐ€ Javascript ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํƒ ์ œํ•œ์—์„œ ๋” ๋ถ„๋ฆฌ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Wasm์€ 1) ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  2) ์ผ๋ถ€ Posix/Unix/BSD ํ‘œ์ค€๊ณผ ํ•จ๊ป˜ ์†Œ์ผ“, ๋ฉ”๋ชจ๋ฆฌ/์Šค๋ ˆ๋“œ, GDI, fs๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ํ†ตํ•ฉ ๋Œ€์ƒ ํ”Œ๋žซํผ์œผ๋กœ ๋ชจ๋ฐ”์ผ ์žฅ์น˜์™€ ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋†“๊ณ  ๊ฒฝ์Ÿํ•˜๋Š” ์„œ๋ฒ„์— ๋ชจ๋‘ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์–‡์€ OS์™€ ๊ฐ™์€ ๊ณ„์ธต์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด wasm์ด ์žฅ๊ธฐ์ ์ธ ๋ฏธ๋ž˜๋กœ ํ–ฅํ•˜๋Š” ๋ฐฉํ–ฅ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ์™„์ „ํžˆ ๋ฐฐ๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋…ธ๊ณ ์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ,

๋กœ๋ฒ ๋ฅดํ† 

Wasm์€ LLVM๊ณผ ๊ฐ™์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ๋„ฃ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋กœ์ปฌ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์Šคํƒ ์ œํ•œ์—์„œ ํ™•์‹คํžˆ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠนํžˆ ์ž‘์—…์ž ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋” ๋งŽ์€ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ •ํ™•ํ•œ ์•„์ด๋””์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์–ป๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ด๋ฉฐ C++์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด๋ฉฐ wasm ๊ตฌํ˜„์€ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋‹น์‹ ์ด ๋ชจ๋“  ๋‹ต์„ ์ƒ๊ฐํ•ด ๋‚ผ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์ง€๊ธˆ ์ƒ๊ฐ๋‚˜๋Š” ๊ฒƒ. Fwiw C++์—๋Š” ์Šคํƒ ์ œํ•œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. SG14 ํ•˜์œ„ ๊ทธ๋ฃน์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๐Ÿ‘ถ๐ŸŒฏ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋” ์ž˜ ๋Œ€๋‹ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋‚ฎ์€ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” :baby:: burrito: ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋” ์ž˜ ๋Œ€๋‹ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

์•„๊ธฐ ๋ถ€๋ฆฌ๋˜ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๊นŒ? ใ…‹ ใ…‹ ใ…‹

@qwertie

์•„๊ธฐ ๋ถ€๋ฆฌ๋˜ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๊นŒ? ใ…‹ ใ…‹ ใ…‹

๋ง ๊ทธ๋Œ€๋กœ ํฌ์žฅ๋œ ์•„๊ธฐ.

์•ˆ๋…•ํ•˜์„ธ์š” @jfbastien ,

์ •ํ™•ํ•œ ์•„์ด๋””์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์–ป๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ด๋ฉฐ C++์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด๋ฉฐ wasm ๊ตฌํ˜„์€ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ๊ณ„์‚ฐ ๋ถ€๋ถ„์—์„œ๋Š” C++, C/OpenCL ๋ฐ GPU ๊ธฐ์ˆ  ๋•๋ถ„์— ๊ธฐ๊ณ„๋กœ๋งŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ์—์„œ HTML5+CSS+Javascript+Typescript ์Šคํƒ์€ ์ค‘๊ฐ„ ๊ทœ๋ชจ์˜ ๋ณต์žกํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์œ ํšจํ•˜๊ณ , ์ž…์ฆ๋œ, ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ž„์ด ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

_ JS ์›น ์Šคํƒ(Typescript์™€ ๊ฐ™์€ ๊ตฌ์กฐํ™”๋œ ์–ธ์–ด ์ถ”๊ฐ€)์ด ์š”์ฆ˜ ๋„ˆ๋ฌด ์ข‹์•„์„œ ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ emscripten ์— ์˜์ง€ํ•˜๊ฑฐ๋‚˜ wasm์„ ์‹œ๋„ํ•  ํ•„์š”๋ฅผ ๋Š๋ผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค._

๋‚˜๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ๋ชฉํ‘œ ์™€ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์— ๊ฑฐ์˜ ์ „์ ์œผ๋กœ ๋™์˜ํ•˜๋ฉฐ ์›น์ด ์•„๋‹Œ ์ž„๋ฒ ๋”ฉ ๋ฌธ์„œ ์— ๋Œ€ํ•ด์„œ๋Š” ํ›จ์”ฌ ๋” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

_ WebAssembly ๋Š” ๋” ๋น ๋ฅธ ์†๋„(๋„ค์ดํ‹ฐ๋ธŒ C ์•ฑ์˜ ๋ผˆ๋Œ€์— ๋”ํ•˜์—ฌ 5% ์˜ค๋ฒ„ํ—ค๋“œ)๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋” ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ํฌํŠธ/์†Œ์ผ“์„ ์™„์ „ํžˆ ๊ตฌํ˜„ํ•˜๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค๋ฉด ๊ด€๋ จ ๊ธฐ์ˆ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ ์–ด๋„ ์ €์—๊ฒŒ๋Š”) ์ผ๋ฐ˜ OS์ฒ˜๋Ÿผ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค._

Wasm ๊ธฐ๊ณ„๋Š” ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ๋งค๋„๋Ÿฝ๊ณ  ๋น ๋ฅด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ GC์— ์ง‘์ฐฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. GC๋Š” IT์˜ Ponzi Scheme์ž…๋‹ˆ๋‹ค. ๋ถ€์ฑ„๋ฅผ ์ง€๊ณ  ๋„ˆ๋ฌด ๋Šฆ๊ณ  ์ฃผ๊ธฐ๊ฐ€ ๋Š์Šจํ•ด์งˆ ๋•Œ๊นŒ์ง€ ํ• ๋‹น์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. . ๊ฒŒ๋‹ค๊ฐ€, ์šฐ๋ฆฌ๊ฐ€ ๊ณ ์„ฑ๋Šฅ wasm ์ฝ”์–ด ๋จธ์‹ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ๊ทธ ์œ„์— GC๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค๋„๋Ÿฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด Javascript์—์„œ ์ ์ง„์ ์œผ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์–ธ์–ด๋กœ๋“  ๊ธฐ๋ณธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žˆ์œผ๋ฉด ์Šคํฌ๋ฆฝํŒ…์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์–ด์จŒ๋“  Duktape/Lua/๋ฌด์—‡์ด๋“  ๋‹จ์ˆœํžˆ C ์†Œ์Šค์—์„œ ์ปดํŒŒ์ผํ•˜์—ฌ ์ž„๋ฒ ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Mozilla ์‚ฌ์ดํŠธ ์–ด๋”˜๊ฐ€์—์„œ wasm ๋„ค์ดํ‹ฐ๋ธŒ DOM ์กฐ์ž‘ ๊ตฌํ˜„์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. DOM ์กฐ์ž‘์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ˆœ์ฐจ์ ์ด๊ณ  HTML5/CSS/JS ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์ธก๋ฉด ์ค‘ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ดˆ๊ณ ์† ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ wasm์„ ์ž‘์„ฑํ•˜์—ฌ ๋‚ด DOM ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋Œ€๊ธฐ์—ด์—์„œ ์ง๋ ฌํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๋ชจ๋“  ์„ฑ๋Šฅ์ด ์‚ฌ๋ผ์ง€๊ณ  C/C++๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ผ๋ถ€ Typescript๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ง์ ‘ OpenGL ์•ก์„ธ์Šค๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค(์ฒ˜์Œ์—๋Š” ์ผ๋ถ€ WebGL ๊ตฌํ˜„ ํ›„ OpenGL ๋„ค์ดํ‹ฐ๋ธŒ ์‚ฌ์šฉ). ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์— ์•ก์„ธ์Šคํ•˜๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๊ฑฐ๋‚˜ ์—†๋Š” GPU/CUDA ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
(๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋Œ€ํ•ด ํ™•์ธํ•˜๋Ÿฌ ๊ฐ”๊ณ  ์ด์— ๋Œ€ํ•œ ๋ฌธ์ œ #273์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค)

๋ชจ๋“  ๊ณต๊ธ‰์—…์ฒด์™€ ๋…๋ฆฝ ๊ธฐ์—…์ด ๊ณต์œ ํ•˜๋Š” ์ž‘์€ wasm ๋จธ์‹ ์„ ๋ณด์œ ํ•˜๋ฉด ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์˜ ์•…๋ชฝ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋‹ค๋ฅธ OS, ๋ฒ„์ „ ๋ฐ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ตœ์†Œ 4๊ฐœ์˜ ๋„๊ตฌ ์ฒด์ธ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜ํ”ฝ ๋ฐ ์ž…๋ ฅ ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•˜๋‚˜์˜ wasm์œผ๋กœ ๊ฐœ๋ฐœํ•œ ๋‹ค์Œ ๊ธฐ๋Šฅ API๋ฅผ ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์•ฑ ์Šคํ† ์–ด์— ๋™์ผํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์žฅ๊ธฐ์ ์œผ๋กœ: ์„œ๋ฒ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™์ผํ•˜๊ฒŒ ์‹œ์„ค(DB ์—ฐ๊ฒฐ ํ”„๋กœํ† ์ฝœ ๋ฐ ํ’€, ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ ์‹œ์Šคํ…œ, ๋ฉ”์‹œ์ง• ํ”„๋กœํ† ์ฝœ ๋ฐ ์‹œ์Šคํ…œ ๋“ฑ)์— ๋Œ€ํ•œ ์ผ์ข…์˜ ํ•ฉ์˜์— ๋„๋‹ฌํ•˜๊ณ  JEE ํ”Œ๋žซํผ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ํ‘œ์ค€ ์‚ฌ์–‘์œผ๋กœ ํฌ์žฅํ•ฉ๋‹ˆ๋‹ค. (๋งŽ์€ ๊ฐœ๋… ์ž‘์—…์ด ์ด๋ฏธ ์ง€๋‚œ 20๋…„ ๋™์•ˆ ๋ฐฐ์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค).

๋‚˜๋Š” ๋‹น์‹ ์ด ๋ชจ๋“  ๋‹ต์„ ์ƒ๊ฐํ•ด ๋‚ผ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์ง€๊ธˆ ์ƒ๊ฐ๋‚˜๋Š” ๊ฒƒ. Fwiw C++์—๋Š” ์Šคํƒ ์ œํ•œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. SG14 ํ•˜์œ„ ๊ทธ๋ฃน์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋ฌผ๋ก  ๋‚ด๊ฐ€ ํ• ๊ฑฐ์•ผ.

๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋กญ

์ž‘์€ ์ถ”๊ฐ€ ์‚ฌํ•ญ์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์Šคํƒ ํฌ๊ธฐ๋ฅผ ์ž„์˜๋กœ ํฌ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๊ทธ ๋Œ€์‹  ์ตœ์†Œ 64MB๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” 2๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๊ณ  ๋น„์ฃผ ์Šค๋ ˆ๋“œ์—๋Š” ๊ฝค ํฐ ์Šคํƒ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@jjpe ๋Š” wasm ํ”Œ๋žซํผ ์ž์ฒด์— ๋Œ€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋„๊ตฌ ์ฒด์ธ์˜ ๊ตฌํ˜„ ๋˜๋Š” ABI ์„ ํƒ์˜ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ €์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ wasm์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํŠน์ • ๋„๊ตฌ ์ฒด์ธ(์˜ˆ: emscripten)์— ๋Œ€ํ•œ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. (์˜ˆ: https://github.com/kripken/emscripten/์—์„œ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ์Œ)

๋‚ด๊ฐ€ ์ด์ „ ๋ฉ”์‹œ์ง€์—์„œ ์ œ์•ˆํ•œ ๊ฒƒ ์ค‘ ์ผ๋ถ€๋Š” ์ตœ์‹  WASI ์ œ์•ˆ์— ํฌํ•จ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ณด๋‹ค:
https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/

๊ต์ฐจ ์†๊ฐ€๋ฝ.

--์•„๋ฅด ์žํ˜•

FWIW ํ˜„์žฌ ์ƒํƒœ๋Š” Chrome์ด ๋ฒ„์ „ 74์—์„œ wasm ์Šค๋ ˆ๋“œ ์ง€์›์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Firefox์—๋Š” ์•„์ง ์ œ๊ณต๋˜์ง€ ์•Š์€ ๊ตฌํ˜„์ด ์žˆ์œผ๋ฉฐ Emscripten์—๋Š” pthreads ์ง€์›(https://emscripten.org/docs/porting/pthreads.html)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

(๋˜ํ•œ WASI๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ API๋กœ, ์ฃผ์–ด์ง„ wasm ์ž„๋ฒ ๋”ฉ ๋˜๋Š” ํˆด์ฒด์ธ์ด ์Šค๋ ˆ๋“œ/์›์žํ•™์„ ์ง€์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์™€ ๋Œ€๋ถ€๋ถ„ ์ง๊ตํ•ฉ๋‹ˆ๋‹ค.)

Chrome ๋ฐ Firefox ์Šค๋ ˆ๋“œ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ผ์ข…์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์˜ wasm ์—”์ง„์€ wasm ์‚ฌ์–‘(https://github.com/WebAssembly/threads/tree/master/proposals/threads)์— ๋Œ€ํ•œ ์Šค๋ ˆ๋“œ/์›์žํ•™ ํ™•์žฅ์„ ๊ตฌํ˜„ํ•˜์—ฌ ๊ณต์œ ๋œ wasm ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น์—์„œ ์›น ์ž‘์—…์ž๋ฅผ ๋งŒ๋“ค๊ณ  postMessage๋ฅผ ํ†ตํ•ด ์ž‘์—…์ž์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ(๋ฐ ์—ฐ๊ฒฐ๋œ wasm ๋ชจ๋“ˆ)๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ž‘์—…์ž(๋ฐ ๊ธฐ๋ณธ ์Šค๋ ˆ๋“œ ๋˜๋Š” ๋‹ค๋ฅธ ์ž‘์—…์ž)์˜ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ชจ๋“ˆ์„ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ณ  ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์–‘ ์ œ์•ˆ ๊ฐœ์š”(https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md)์— ์ž‘์€ ์˜ˆ๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @dschuff ์ด๋ฉฐ ์œ„์˜ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์ด์ „ ๋ฉ”์‹œ์ง€์—์„œ ๋‚˜๋Š” pthreads๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 2010๋…„๋ถ€ํ„ฐ emscripten์„ ๋”ฐ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋‹น์‹œ๋ฅผ ์ง„์ •ํ•œ ํš๊ธฐ์ ์ธ ๊ธฐ์ˆ ๋กœ ์—ฌ๊ฒผ๋˜ ๋” ์ปค๋„๊ณผ ์œ ์‚ฌํ•œ ๊ฒƒ์œผ๋กœ wasm์˜ ๋ฐ”๋žŒ์งํ•œ ์ง„ํ™”๋ฅผ ํฌํ•จํ•˜๋Š” ์ด์ „ ๋ฉ”์‹œ์ง€๋ฅผ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ฐธ์กฐ: https://github.com/WebAssembly/design/issues/992#issuecomment -285055578 .

emscripten์ด ๋‚˜์˜จ ์ง€ 9๋…„, ๊ทธ๋ฆฌ๊ณ  wasm์ด ๋ฐœํ‘œ๋œ ์ง€ ๊ฑฐ์˜ 5๋…„์ด ์ง€๋‚ฌ์ง€๋งŒ wasm์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„ ๊ธฐ์ˆ ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ๊ฑฐ์˜ ์ง„์ „์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์Šฌํ”„๊ฒŒ๋„ ์šฐ๋ฆฌ๋Š” ํœด๋Œ€์šฉ ์•ฑ์— ๋Œ€ํ•œ ํ‘œ์ค€์ด ํ•„์š”ํ•˜๊ณ  ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ POSIX ์Šค๋ ˆ๋“œ ๋ฐ ๋ฒ„ํด๋ฆฌ โ€‹โ€‹์†Œ์ผ“ + ์ž๊ธ‰์‹ ๋ณด์•ˆ ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ(์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค). ๋‚˜๋Š” H.Spencer์˜ ์˜› ๋ง์„ ํ™•๊ณ ํžˆ ํ•ฉ๋‹ˆ๋‹ค. "UNIX๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ์€ UNIX๋ฅผ ์žฌ๋ฐœ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."

๊ทธ๋ž˜๋„ ๋ฏฟ์Œ์„ ๊ฐ–๊ณ  ์‹ถ๊ธฐ์— WASI๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ํ•œ ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.

--์•„๋ฅด ์žํ˜•

์ถ”์‹ : 2010 emscripten์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์—…์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ถˆ๋ฉธ์˜ ๋ธŒ๋ผ์šฐ์ €์ธ ๋ถˆ๋ฉธ์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ํ”๋“ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ด€๋ จ ๋ฌธ์ œ

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

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

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

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

Artur-A picture Artur-A  ยท  3์ฝ”๋ฉ˜ํŠธ