Design: ๋ชจ๋“  ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ์„ ์œ„ํ•œ UTF-8

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

ํ˜„์žฌ:

  • ์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ WebAssembly์˜ ์ด์ง„ ์ •์ˆ˜ ์ธ์ฝ”๋”ฉ์— var[u]int๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ์™€ ๊ฐ™์€ ๋ชจ๋“  "๋ฌธ์ž์—ด"์— ๊ธธ์ด + ๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ž„๋ฒ ๋” ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ๋Œ€๋กœ ์ถ”๊ฐ€ ์ œํ•œ์„ ์ ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค(

984๋Š” ๋ฌธ์ž์—ด์— UTF-8์„ ์‚ฌ์šฉํ•˜์—ฌ ์›œ ์บ”์„ ์—ฝ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ ๋ฐ”์ดํŠธ์— ๋Œ€ํ•ด ๊ธธ์ด + UTF-8์— ๋Œ€ํ•ด varuint๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค. ๋˜๋Š”
  • ์ฝ”๋“œ ํฌ์ธํŠธ ์ˆ˜์— ๋Œ€ํ•ด varuint + ๊ฐ ์ฝ”๋“œ ํฌ์ธํŠธ์— ๋Œ€ํ•ด UTF-8์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

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

์ด ๋ฌธ์ œ์—์„œ ๋ชจ๋“  ๋ฌธ์ž์—ด( ์œ ๋‹ˆ์ฝ”๋“œ ์•„๋‹˜)์— ๋Œ€ํ•ด UTF-8์— ๋Œ€ํ•œ ์ฐฌ์„ฑ/๋ฐ˜๋Œ€ ์ฃผ์žฅ์„ ๋…ผ์˜ํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ๊ฐ์ • ๋ฌธ์ œ์— ๋Œ€ํ•ด ๐Ÿ‘ ๋˜๋Š” ๐Ÿ‘Ž์— ํˆฌํ‘œํ•ฉ์‹œ๋‹ค.

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

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

"dev-facing"์€ "์ž„์˜์˜ toolchain-facing"์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Š” ์‚ฌ์ „์— ์ธ์ฝ”๋”ฉ์— ๋™์˜ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋„๊ตฌ๊ฐ€ ์ธ์ฝ”๋”ฉ "ํƒ์ง€"(์ฆ‰, ์ถ”์ธก, ํŠนํžˆ ์งง์€ ๊ฐ’์— ์ ์šฉ๋จ) ๋˜๋Š” ๋Œ€์—ญ ์™ธ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ^_^

๋งŽ์€ ๋„๊ตฌ ์ฒด์ธ์ด ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ž„์˜์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ์„ ์ดํ•ดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์˜ ํ•œ๊ณ„๋ผ๋ฉด ์–ด๋””์—์„œ๋‚˜ 100% ์ง€์›๋˜๋Š” ASCII๋ฅผ ์ง€์ •ํ•˜๊ณ  ์š”๊ตฌํ•˜์‹ญ์‹œ์˜ค. ASCII๋กœ ์ œํ•œํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ASCII๊ฐ€ ์•„๋‹Œ ๋‹จ์ผ ์ธ์ฝ”๋”ฉ ์ฒด๊ณ„์ธ UTF-8์ด ํ—ˆ์šฉ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"์–ด, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ์ด ASCII๋งŒ ์ง€์›ํ•˜์ง€๋งŒ ๋งŒ์ผ์„ ๋Œ€๋น„ ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ๋‘ ์„ธ๊ณ„ ๋ชจ๋‘์—์„œ ์ตœ์•…์ž…๋‹ˆ๋‹ค.

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

UTF-8์— ๋Œ€ํ•œ ์ธ์ˆ˜: ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. JavaScript์˜ ์ธ์ฝ”๋” ๋ฐ ๋””์ฝ”๋” . ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค .

UTF-8์— ๋Œ€ํ•œ ์ฃผ์žฅ: ๊ธธ์ด + ๋ฐ”์ดํŠธ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ๋ณต์žกํ•˜์—ฌ ์ž ์žฌ์ ์ธ ๊ตฌํ˜„ ์ฐจ์ด๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ฌด์Šจ ๋ง์„ ํ•˜๋Š” ๊ฒ๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋ง๋„ ์•ˆ๋˜๋Š” ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ UTF-8์€ ๋ง ๊ทธ๋Œ€๋กœ ์œ ๋‹ˆ์ฝ”๋“œ ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์ง„์ˆ ์€ ์“ฐ์—ฌ์ง„ ๋Œ€๋กœ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ^_^

๊ทธ๋Ÿฌ๋‚˜ UTF-8์€ ๋ง ๊ทธ๋Œ€๋กœ ์œ ๋‹ˆ์ฝ”๋“œ ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์ง„์ˆ ์€ ์“ฐ์—ฌ์ง„ ๋Œ€๋กœ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ^_^

์˜ˆ, ์ €๋Š” ํŠนํžˆ UTF-8์ด ์„ค๋ช…ํ•˜๋Š” ์ฝ”๋“œํฌ์ธํŠธ ์ธ์ฝ”๋”ฉ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด์ง€ ์ ์ ˆํ•œ ์ฝ”๋“œํฌ์ธํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค(์ด ์ œ์•ˆ์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ์ฝ”๋“œํฌ์ธํŠธ๋Š” ๋ถˆํˆฌ๋ช…ํ•œ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค). wasm-isms์— ๋„ฃ์œผ๋ฉด UTF-8์€ var[u]int์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฌธ์ž์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ UTF-8์€ ์œ ์ผํ•œ ์œ ๋‹ˆ์ฝ”๋“œ ์ธ์ฝ”๋”ฉ์ด ์•„๋‹ˆ๋ฉฐ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ œ์•ˆ์€ ๊ฐœ๋ณ„ ์ฝ”๋“œํฌ์ธํŠธ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทธ ์ œ์•ˆ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿด ์ด์œ ๊ฐ€ ์—†์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ i18n API๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์—„๊ฒฉํ•œ ํ‰๋“ฑ ๋น„๊ต ๋ฐ โ€‹โ€‹์ •๋ ฌ์„ ๋„˜์–ด ์ฝ”๋“œ ํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ž์ฒด ๊ฒ€์‚ฌ์˜ ํ•„์š”์„ฑ์„ ๋ฐœ๊ฒฌํ•œ Web API๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ๊ฐ ์ฝ”๋“œ ํฌ์ธํŠธ์— ๋Œ€ํ•œ ๋ฐ”์ดํŠธ ๊ธธ์ด + UTF-8์ž…๋‹ˆ๋‹ค( @jfbastien ์ด ๊ฐ ๋ฐ”์ดํŠธ์— ๋Œ€ํ•ด UTF-8์ด๋ผ๊ณ  ๋งํ–ˆ์„ ๋•Œ ์˜๋ฏธํ•œ ๊ฒƒ์ด ์•„๋‹Œ ํ•œ, ์ €์—๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค). ์ •๊ตํ•œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด, ์˜คํ”„์…‹ ๋ฐ ๊ธธ์ด๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด์„œ ์‹ค์ œ๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ์›์‹œ ํŒŒ์„œ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ •์ˆ˜์ธ "UTF-8 ์ฝ”๋“œ ํฌ์ธํŠธ"๋ผ๋Š” ์ •์˜์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ์‚ฌ์–‘์€ ๊ทธ๋Œ€๋กœ ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ์ž„๋ฒ ๋”๋Š” ํ—ˆ์šฉ๋œ ์ฝ”๋“œ ํฌ์ธํŠธ, ์ •๊ทœํ™” ๋ฐ ๊ธฐํƒ€ ๋‰˜์•™์Šค์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์„ ๋„๊ตฌ๋Š” ์ž ์žฌ์ ์ธ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ์€ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ์™€ ๊ทธ ์ด์œ ๋ฅผ ์š”์•ฝํ•˜๋ ค๋Š” ์‹œ๋„์ž…๋‹ˆ๋‹ค. ์ˆ˜์ • ๋ฐ ์ถ”๊ฐ€๋ฅผ ๊ฐ€์žฅ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

wasm ํ•„์ˆ˜ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์‹๋ณ„์ž๊ฐ€ ์œ ํšจํ•œ UTF-8์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋ฐ˜๋Œ€ ์ด์œ ์— ๋Œ€ํ•œ ๋‚˜์˜ ์ดํ•ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ ์ฒ˜๋ฆฌ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์˜ ์ค‘์š”ํ•œ ๊ฒฝ๋กœ์— ์žˆ์œผ๋ฉฐ ์†๋„๋ฅผ ๋Šฆ์ถœ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํ”ผํ•˜๋ ค๋Š” ์š•๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ด‘๋ฒ”์œ„ํ•œ ๋ถˆ๋ณ€ "ํ•ต์‹ฌ wasm ์‚ฌ์–‘์€ ๋ฌธ์ž์—ด์„ ํ•ด์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค". ๋ฌธ์ž์—ด ํ•ด์„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณต์žกํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ์บก์Šํ™”ํ•˜๊ณ  ๋†’์€ ์ˆ˜์ค€์—์„œ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ๋„“์€ ๋ถˆ๋ณ€์„ฑ๊ณผ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ–๊ณ ์ž ํ•˜๋Š” ์š•๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • WebAssembly ๋””์ฝ”๋”๋Š” ๋ณด์•ˆ์— ๋ฏผ๊ฐํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ๊ด€๋ จ๋œ ์ฝ”๋“œ์˜ ์–‘์„ ์ตœ์†Œํ™”ํ•˜๋ ค๋Š” ์ผ๋ฐ˜์ ์ธ ์š•๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ WebAssembly ์ƒ์‚ฐ์ž๋Š” ์ด๋Ÿฌํ•œ ์‹๋ณ„์ž์— ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ธฐ๋ฅผ ์›ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ๋งน๊ธ€๋งํ•˜๋Š” ๋Œ€์‹  ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

was๋Š” UTF-8์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ์˜์—ญ์—์„œ UTF-8์„ ๊ถŒ์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ ์ด์œ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์š”๊ตฌํ•  ์ˆ˜ ์—†๋”๋ผ๋„ UTF-8์„ ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹์ƒํƒœ๊ณ„ ๊ฐ„์˜ ๋ถˆํ•„์š”ํ•œ ๋น„ํ˜ธํ™˜์„ฑ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€ ์ด์œ ์— ๋Œ€ํ•œ ๋‚˜์˜ ์ดํ•ด๋Š” UTF-8์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์กฐ์ฐจ ๋ฌธ์ž์—ด ํ•ด์„ ๋ฌธ์ œ์˜ ๊ฐœ๋…์  ์บก์Šํ™”๋ฅผ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

was๋Š” ์ด๋ฆ„ ์„น์…˜ ์ด๋ฆ„์— UTF-8์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฆ„์˜ ์ „์ฒด ๋ชฉ์ ์€ ํ‘œ์‹œ๋ฅผ ์œ„ํ•ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ ์ธ์ฝ”๋”ฉ ์—†์ด๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋„๊ตฌ๊ฐ€ ์ถ”์ธกํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก UTF-8์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€ ์ด์œ ์— ๋Œ€ํ•œ ๋‚ด ์ดํ•ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. wasm์ด ์ง€์ •๋œ ์ธ์ฝ”๋”ฉ์ด ์—†๋Š” ๋‹ค๋ฅธ ์˜์—ญ์— ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๊ณผ ์œ ์‚ฌํ•œ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ(์ฆ‰, ์œ„์—์„œ ๋…ผ์˜ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ) ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. .

@sunfishcode ๋Š” ์ข‹์€ ์š”์•ฝ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์„ธ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@jfbastien , ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๋ฐ”์ด๋„ˆ๋ฆฌ _syntax_(์ธ์ฝ”๋”ฉ)๋ฅผ ์ œํ•œํ•˜์ง€๋งŒ _semantics_(๋ฌธ์ž ์ง‘ํ•ฉ)๋ฅผ ์ œํ•œํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋ชจ๋“  ๋Œ€์•ˆ ์ค‘์—์„œ ๊ฐ€์žฅ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์‹ค์šฉ์ ์ธ ๋ชฉ์ ์„ ์œ„ํ•ด UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์—”์ง„์— ๊ด€ํ•œ ๊ฒƒ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ •์˜ํ•˜๋ฉด ๋ชจ๋“  ํ™˜๊ฒฝ์˜ ๋ชจ๋“  Wasm ์—์ฝ” ์‹œ์Šคํ…œ์—์„œ ๊ฐ•์ œ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ํ™˜๊ฒฝ์— ์•ฝ๊ฐ„์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ง€์›์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@tabatkins , ๊ท€ํ•˜์˜ ์ฃผ์žฅ์— ๊ธฐ๋ณธ ๋„๋ฉ”์ธ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” ๋ฌธ์ž์—ด์€ _user-facing_์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ _dev-facing_ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋งŽ์€/๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ์‹๋ณ„์ž๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋„๊ตฌ๋„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด gdb๊ฐ€ ์œ ๋‹ˆ์ฝ”๋“œ ์†Œ์Šค ์‹๋ณ„์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์†Œ๋น„์ž๊ฐ€ _์ด ๊ณต๊ฐ„์—์„œ_ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ˆ˜๋ ดํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋‚™๊ด€์ (๋˜๋Š” ์˜คํžˆ๋ ค ๋น„ํ˜„์‹ค์ )์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ, ์˜๊ฒฌ ๋ถˆ์ผ์น˜๋Š” ์›น์ƒ์˜ Wasm์ด UTF-8์„ ๊ฐ€์ •ํ•ด์•ผ ํ•˜๋Š”์ง€ _์—ฌ๋ถ€_๊ฐ€ ์•„๋‹ˆ๋ผ _์–ด๋””์„œ_ ์šฐ๋ฆฌ๊ฐ€ ์ง€์ •ํ•˜๋Š”์ง€์ž…๋‹ˆ๋‹ค.

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

"dev-facing"์€ "์ž„์˜์˜ toolchain-facing"์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Š” ์‚ฌ์ „์— ์ธ์ฝ”๋”ฉ์— ๋™์˜ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋„๊ตฌ๊ฐ€ ์ธ์ฝ”๋”ฉ "ํƒ์ง€"(์ฆ‰, ์ถ”์ธก, ํŠนํžˆ ์งง์€ ๊ฐ’์— ์ ์šฉ๋จ) ๋˜๋Š” ๋Œ€์—ญ ์™ธ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ^_^

๋งŽ์€ ๋„๊ตฌ ์ฒด์ธ์ด ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ž„์˜์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ์„ ์ดํ•ดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์˜ ํ•œ๊ณ„๋ผ๋ฉด ์–ด๋””์—์„œ๋‚˜ 100% ์ง€์›๋˜๋Š” ASCII๋ฅผ ์ง€์ •ํ•˜๊ณ  ์š”๊ตฌํ•˜์‹ญ์‹œ์˜ค. ASCII๋กœ ์ œํ•œํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ASCII๊ฐ€ ์•„๋‹Œ ๋‹จ์ผ ์ธ์ฝ”๋”ฉ ์ฒด๊ณ„์ธ UTF-8์ด ํ—ˆ์šฉ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"์–ด, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ์ด ASCII๋งŒ ์ง€์›ํ•˜์ง€๋งŒ ๋งŒ์ผ์„ ๋Œ€๋น„ ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ๋‘ ์„ธ๊ณ„ ๋ชจ๋‘์—์„œ ์ตœ์•…์ž…๋‹ˆ๋‹ค.

"์–ด, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ์ด ASCII๋งŒ ์ง€์›ํ•˜์ง€๋งŒ ๋งŒ์ผ์„ ๋Œ€๋น„ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ๋‘ ์„ธ๊ณ„ ๋ชจ๋‘์—์„œ ์ตœ์•…์ž…๋‹ˆ๋‹ค.

@tabatkins , ์•„๋ฌด๋„ ์œ„์˜ ๊ฒƒ์„ ์ œ์•ˆํ•˜์ง€

์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค, tho! ์ž„๋ฒ ๋”ฉ ํ™˜๊ฒฝ์ด ๋น„ ASCII๋ฅผ ์ง€์› ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฌธ์ž์—ด์— ๋น„ ASCII๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค . (์ด ๊ฒฝ์šฐ์—๋„ ์ธ์ฝ”๋”ฉ ๋ณด์ฆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด UTF-16์€ ASCII์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!)

ํ™˜๊ฒฝ์ด ๋น„ ASCII๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ธ์ฝ”๋”ฉ์„ ์•Œ์•„์•ผ ํ•˜๋ฉฐ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์„ ํƒ์€ UTF-8์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด์˜ ์ธ์ฝ”๋”ฉ์„ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€ ์ƒ์ƒํ•˜๋Š” ํ™˜๊ฒฝ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์˜๋ฏธ๋ก (๋ฌธ์ž ์ง‘ํ•ฉ)์ด ์•„๋‹Œ ์ด์ง„ ๊ตฌ๋ฌธ(์ธ์ฝ”๋”ฉ)์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ๋Œ€์•ˆ ์ค‘์—์„œ ๊ฐ€์žฅ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์‹ค์šฉ์ ์ธ ๋ชฉ์ ์„ ์œ„ํ•ด UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์‹œ์— (a) ๋ฌธ์ž์—ด์„ ASCII ๋ฌธ์ž๋กœ ์ œํ•œํ•˜๊ณ  (b) UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•˜๋„๋ก ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ASCII ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ธ์ฝ”๋”ฉ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์ธ์ฝ”๋”ฉ์ด ASCII์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค! (์˜ˆ๋ฅผ ๋“ค์–ด UTF-16์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) ๋”ฐ๋ผ์„œ ์—ฌ์ „ํžˆ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "ASCII ํ˜ธํ™˜"์ธ UTF-8์€ ์ด์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ์ด๋ฆ„์„ ASCII ์ „์šฉ์œผ๋กœ ์ œํ•œํ•ด๋„ ๊ดœ์ฐฎ๋‹ค๋ฉด ์ธ์ฝ”๋”ฉ์„ US-ASCII๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ASCII๋ฅผ ๋„˜์–ด์„œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ ค๋ฉด ์ธ์ฝ”๋”ฉ์„ UTF-8๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์„ ์š”๊ตฌํ•˜๊ฑฐ๋‚˜ ์ „ํ˜€ ์š”๊ตฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ(๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์†Œ๋น„์ž๊ฐ€ ๋Œ€์—ญ ์™ธ ์ •๋ณด๋ฅผ ์ถ”์ธกํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ)๋Š” ์œ ์ผํ•œ ๋ถˆํ•ฉ๋ฆฌํ•œ ๊ฐ€๋Šฅ์„ฑ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์—”์ง„์— ๊ด€ํ•œ ๊ฒƒ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ •์˜ํ•˜๋ฉด ๋ชจ๋“  ํ™˜๊ฒฝ์˜ ๋ชจ๋“  Wasm ์—์ฝ” ์‹œ์Šคํ…œ์—์„œ ๊ฐ•์ œ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ํ™˜๊ฒฝ์— ์•ฝ๊ฐ„์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ง€์›์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๊ตญ์ œํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ๋งํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋ฅผ ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ์‚ฌ์†Œํ•˜๊ณ  ๋งค์šฐ ๋น ๋ฅธ UTF-8์„ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์‹๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

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

์‹ค์งˆ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•ต์‹ฌ wasm ์‚ฌ์–‘์— UTF8 ๊ฐ•์ œํ•˜์ง€ ์•Š์•˜๋”๋ผ๋„, ๋งํ•˜๊ธฐ, ๋‹น์‹ ์€ ๋‹น์‹ ์ด ์ด ์„ฌ ์•„๋‹ˆ๋ผ๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ํˆด ์ฒด์ธ๋„ UTF8์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋‚˜์œ ์‹œ๊ฐ„์€ ๋ฌด์—‡๊ณผ ์ƒํ˜ธ ๊ฑฐ๋ผ๊ณ  ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ ๋‹น์‹ ์€ ๋งํ•œ๋‹ค "๋‚˜์‚ฌ"ํ•˜๊ณ  ์–ด์จŒ๋“  ์ž์‹ ์˜ ๋น„ utf8 ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

๋‚ด๊ฐ€ realllly ๊ฐ™์ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ๋ฌด์—‡์„ํ•˜์ง€๋งŒ, ์ด๊ฒƒ์— ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ ํ•ด๊ฒฐ # 984์ž…๋‹ˆ๋‹ค ...

@lukewagner ๋‚˜๋Š” #984๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ฐจ๋‹จ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„

๋‚œ ๋‹น์‹ ์ด ์˜ณ์€ ๊ฒƒ ๊ฐ™์•„์š”.

๋ฌธ์ž์—ด์˜ ์ธ์ฝ”๋”ฉ์„ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€ ์ƒ์ƒํ•˜๋Š” ํ™˜๊ฒฝ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@tabatkins , ์•„์ง ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋Ÿฐ ํ™˜๊ฒฝ์„ ์ƒ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ํ™˜๊ฒฝ์„ ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด UTF-8์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Latin1์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ™˜๊ฒฝ ๋‹ค์–‘์„ฑ์„ ๋ฐฉํ•ดํ•˜๋Š” ๋ถˆํ•„์š”ํ•œ ๋Œ์„ ๋„ฃ๋Š” ๊ฒƒ์€ ํ•ต์‹ฌ Wasm ์ŠคํŽ™์˜ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ „์ฒด ์„ฌ์ด ์•„๋‹Œ ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋„๊ตฌ ๋ชจ์Œ์ด utf8๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌด์—‡๊ณผ๋„ ์ƒํ˜ธ ์šด์šฉํ•˜๋Š” ๋ฐ ๋‚˜์œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@lukewagner , ์ €๋Š” ์‹ค์ œ๋กœ Wasm์ด ์ž ์žฌ์ ์œผ๋กœ ๊ฑฐ์˜ ๊ฒน์น˜์ง€ ์•Š๋Š” ๋‹ค์–‘ํ•œ "๋Œ€๋ฅ™"์—์„œ ์‚ฌ์šฉ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์ดํ•˜๋Š” ๊ณณ์—์„œ interop์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์‹ค์ œ๋กœ ์ด๋ฆ„ ์ธ์ฝ”๋”ฉ์€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ๊ฐ„์— ๋ชจ๋“ˆ์„ ๊ณต์œ ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ ์€ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค). ์ „์ฒด ์„ฌ์กฐ์ฐจ๋„ ๋น„ํ˜„์‹ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ wrt ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ(์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Œ)์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๋น„ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ WebAssembly ์—”์ง„์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์žˆ์–ด ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” ๋ธŒ๋ผ์šฐ์ €(์ฃผ๋กœ JS ๋ถ€๋ถ„)์—์„œ ํ•˜๋Š” ๋ฐฉ์‹๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ์ด ํ‘œ์ค€ํ™”๋˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์›น ๋Œ€์ƒ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋œ ์ž‘์—…์„ ๋ณต์‚ฌํ•˜๋Š” ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ด ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ž์—ด์„ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

์ผ๋ถ€ ํ™˜๊ฒฝ์—์„œ ํ—ˆ์šฉ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”๊ฐ€๋กœ ์ œํ•œํ•˜๋Š” ๋ฐ ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ UTF-8์„ ์š”๊ตฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

@MI3Guy , ๋ฐ˜๋Œ€ ์ œ์•ˆ์€ JS API์˜ ์ผ๋ถ€๋กœ UTF-8 ์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ JS ์ž„๋ฒ ๋”ฉ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋Š ์ชฝ์ด๋“  UTF-8๋กœ ์ •์˜๋˜๋ฉฐ ์•„๋ฌด๋Ÿฐ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. (๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์›น๋„ JavaScript๋„ ์•„๋‹Œ ๋‹ค๋ฅธ ์ž„๋ฒ ๋” API๋„ ํ—ˆ์šฉํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.)

์˜ค๋ฅธ์ชฝ. ์š”์ ์€ JS ์ž„๋ฒ ๋”ฉ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ WebAssembly ๋„๊ตฌ ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด JS ์ž„๋ฒ ๋”๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋งŽ์€ ์ž‘์—…์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ ํฌ์ธํŠธ ์ˆ˜์— ๋Œ€ํ•ด varuint + ๊ฐ ์ฝ”๋“œ ํฌ์ธํŠธ์— ๋Œ€ํ•ด UTF-8์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

์ €๋Š” ์ด ์˜ต์…˜์— ๋Œ€ํ•ด ๋ฐ˜๋Œ€ ์˜๊ฒฌ์„ ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒํ™ฉ์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ์ž๋ณ„ ์„น์…˜์— ์ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ด์ ๋„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UTF-8 ๋ฌธ์ž์—ด์˜ ์ฝ”๋“œ ํฌ์ธํŠธ ์ˆ˜๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด ์‹ค์ œ๋กœ๋Š” ํ•ญ์ƒ ๋ฌธ์ž์—ด์„ ์Šค์บ”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์ธ์ฝ”๋”ฉ์ด๋ฏ€๋กœ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด UTF-8์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Latin1์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ™˜๊ฒฝ ๋‹ค์–‘์„ฑ์„ ๋ฐฉํ•ดํ•˜๋Š” ๋ถˆํ•„์š”ํ•œ ๋Œ์„ ๋„ฃ๋Š” ๊ฒƒ์€ ํ•ต์‹ฌ Wasm ์ŠคํŽ™์˜ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์˜ณ์€; UTF-8์€ ASCII ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ์ธ์ฝ”๋”ฉ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ Latin-1 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ์€ ๋˜‘๊ฐ™์•„ ๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์ด ๋งŽ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•˜๊ฒŒ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Wasm ์ฝ”๋“œ์—์„œ "รฆther"๋ผ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์ด๋ฅผ Latin-1๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด (๋‹น๋‹นํ•˜๊ฒŒ) UTF-8 ํˆด์ฒด์ธ์œผ๋กœ ์ด๋ฆ„์„ ์ฝ์œผ๋ ค๊ณ  ํ•˜๋ฉด ๋””์ฝ”๋”ฉ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋น„์Šทํ•œ ์‹ค์ˆ˜๋ฅผ ํ–ˆ์ง€๋งŒ ๋Œ€์‹  Windows-1250 ์ธ์ฝ”๋”ฉ(์ค‘๋ถ€/๋™๋ถ€ ์œ ๋Ÿฝ ์–ธ์–ด์šฉ)์„ ์‚ฌ์šฉํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ "ฤ‡ther"๋ผ๋Š” ๋ง๋„ ์•ˆ๋˜๋Š” ๋‹จ์–ด๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ณดํ˜ธํ•˜๋ ค๋Š” "๋‹ค์–‘์„ฑ"์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ฌด๋Ÿฐ ์ด์ ์ด ์—†์œผ๋ฉฐ ์ˆ˜๋งŽ์€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์ž๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์กด์žฌํ•˜๋ฉฐ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ๋ฐ˜๋Œ€๋Š” ๊ฑฐ์˜ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  UTF-8์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ด€๋ จ ๋„๊ตฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์€ ๋ง ๊ทธ๋Œ€๋กœ 20๋…„์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค .

๋‚˜๋Š” ์›น ํ‘œ์ค€์ด ๋ช‡ ๋…„ ์ „์— ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ๊ณ„์† ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Wasm์ด ์›น ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ์›น ์‚ฌ์–‘์ด๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ์ด ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ  ์›น์ด ์ด๋ฏธ ์ฒ˜๋ฆฌํ•œ ์ƒํƒœ๊ณ„ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•˜๋Š” ๊ณ ํ†ต์„ ๊ฒช๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. Wasm์—์„œ ๋‹ค์‹œ ํ‹€๋ฆฌ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ๋ฏธ๋•์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋ฅผ ์ธ์ฝ”๋”ฉํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ํ™˜๊ฒฝ์€ ์ฒ˜์Œ๋ถ€ํ„ฐ UTF-8๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๊ฒช๋Š” ๋™์ผํ•œ ์‹ค์ˆ˜์™€ ๊ณ ํ†ต์„ ๊ฒช๊ณ  ๊ฒฐ๊ตญ UTF-8๋กœ ์ •์ฐฉํ•ฉ๋‹ˆ๋‹ค. (๋˜๋Š” ๋“œ๋ฌผ๊ฒŒ ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ํ‘œ์ค€ํ™”ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ฆฝ๋œ ํ™˜๊ฒฝ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์™ธ๋ถ€ ํ™˜๊ฒฝ๊ณผ ํ†ต์‹ ํ•˜๋Š” ๋Œ€๊ฐ€๋ฅผ ๊ฑฐ์˜ ์ง€๋ถˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ์ฝ”๋”ฉ์œผ๋กœ ํ‘œ์ค€ํ™” ํ•˜๋Š” ๊ฒƒ์ด ์ด ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

๋”ฐ๋ผ์„œ JS ์ž„๋ฒ ๋”ฉ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋Š ์ชฝ์ด๋“  UTF-8๋กœ ์ •์˜๋˜๋ฉฐ ์•„๋ฌด๋Ÿฐ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. (๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์›น๋„ JavaScript๋„ ์•„๋‹Œ ๋‹ค๋ฅธ ์ž„๋ฒ ๋” API๋„ ํ—ˆ์šฉํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.)

์ด ๋ฌธ์ œ๋Š” ์›น ๋˜๋Š” JS์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ƒํƒœ๊ณ„์˜ ๋ชจ๋“  ๋ถ€๋ถ„์€ ์•Œ๋ ค์ง„ ์ผ๊ด€๋œ ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ์„ ์›ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ, ๊ตญ๊ฐ€ ๋ฐ ์–ธ์–ด ์ „๋ฐ˜์— ๊ฑธ์ณ ๋„๋ฆฌ ๋™์˜๋˜๋Š” ๋‹จ์ผ ์ธ์ฝ”๋”ฉ์ธ UTF-8์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” '๊ธธ์ด(๋ฐ”์ดํŠธ ๋‹จ์œ„) + UTF-8 ๊ฐ ๋ฐ”์ดํŠธ์— ๋Œ€ํ•œ varuint ์ˆ˜ํ–‰'์— ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์—†๋Š” ์„ ํƒ์ด ์•„๋‹ˆ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด - ๊ฑฐ์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด ๊ตฌํ˜„์€ "์ฝ”๋“œ ํฌ์ธํŠธ ์ˆ˜"๊ฐ€ ์•„๋‹Œ "์ฝ”๋“œ ๋‹จ์œ„ ์ˆ˜"๋กœ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์‹ค์ œ ์งˆ๋ฌธ์€ "๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์œ ํšจํ•œ UTF-8"?

#970์—์„œ ์ง€์ ํ–ˆ๋“ฏ์ด ์œ ํšจํ•˜์ง€ ์•Š์€ UTF-8์€ UTF-16

์ „๋ฐ˜์ ์œผ๋กœ UTF-8์„ ์˜๋ฌดํ™”ํ•˜์ž๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ UTF-8๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๋ฐ”์ดํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์ƒํ•œ ๊ฒฝ์šฐ(์•„๋งˆ๋„ ์ธ์ฝ”๋”ฉ์„ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—), ์ž„์˜์˜ ๋ฐ”์ดํŠธ๋ฅผ UTF-8๋กœ ์Œ์—ญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ณดํ˜ธํ•˜๋ ค๋Š” "๋‹ค์–‘์„ฑ"์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@tabatkins ๋„ค, ๊ทธ๊ฒŒ ์˜คํ•ด์˜ ํ•ต์‹ฌ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

WebAssembly๋Š” ์ด๋ฆ„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์›น์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ธ์‹ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ ˆ์ด์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋„๋ก ์ ์ ˆํ•œ ๋ ˆ์ด์–ด๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‹ ์ค‘ํ•ฉ๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค _core_ Wasm์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ž ์žฌ ๊ณ ๊ฐ์—๊ฒŒ ์ด ํ‘œ์ค€์„ ์œ„๋ฐ˜ํ•˜๋„๋ก ๊ฐ•์š”ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋“์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ _concrete_ ํ™˜๊ฒฝ(์˜ˆ: JavaScript)์—์„œ ์ž„๋ฒ ๋”ฉ ๋ฐ API๋ฅผ ์ •์˜ํ•˜๋Š” ์ด ํ•ต์‹ฌ ์‚ฌ์–‘ ์œ„์— ์ถ”๊ฐ€ ์‚ฌ์–‘ ๋ ˆ์ด์–ด๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ˆ˜์ค€์—์„œ ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜๋ฉฐ, ๋ฐ˜๋“œ์‹œ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์‹ : Wasm์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๋Š” ์Šฌ๋กœ๊ฑด์€ ๊ณตํ†ต ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ์ถ”์ƒํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณตํ†ต ํ•˜๋“œ์›จ์–ด์— ๋Œ€ํ•œ ์ถ”์ƒํ™”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜๋“œ์›จ์–ด๋Š” ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ๊ณผ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฌธ์ œ์— ๋ถˆ๊ฐ€์ง€๋ก ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ABI์˜ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

@rossberg-chromium

๋”ฐ๋ผ์„œ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ”์–ด Wasm์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ž ์žฌ ๊ณ ๊ฐ์—๊ฒŒ ์ด ํ‘œ์ค€์„ ์œ„๋ฐ˜ํ•˜๋„๋ก ๊ฐ•์š”ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋“์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ •์ˆ˜๋ฅผ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ์ •์ˆ˜ ์ธ์ฝ”๋”ฉ์ธ UTF-8์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์— ๋™์˜ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. UTF-8์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@jfbastien , ๋ชจ๋“  C ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์— UTF-8 ์ค€์ˆ˜๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์ƒ์‚ฐ์ ์ž…๋‹ˆ๊นŒ?

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ธ์ฝ”๋”ฉ์€ ์ œํ•œํ•˜์ง€๋งŒ ๋ฌธ์ž ์ง‘ํ•ฉ์€ ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์˜๋ฏธ ์—†์ด ๊ตฌ๋ฌธ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”? ์ƒํ˜ธ ์šด์šฉ์„ฑ ์ธก๋ฉด์—์„œ 0์„ ์–ป์ง€๋งŒ UTF-8์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ(์–ด์จŒ๋“  ์œ ๋‹ˆ์ฝ”๋“œ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ)์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ์ „ํžˆ ์ธ์œ„์ ์ธ ์žฅ์• ๋ฌผ์„ ์„ธ์›๋‹ˆ๋‹ค.

@jfbastien , ๋ชจ๋“  C ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์— UTF-8 ์ค€์ˆ˜๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์ƒ์‚ฐ์ ์ž…๋‹ˆ๊นŒ?

์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š”๋ฐ ์„ค๋ช…ํ•ด์ฃผ์‹ค์ˆ˜์žˆ๋‚˜์š”?

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ธ์ฝ”๋”ฉ์€ ์ œํ•œํ•˜์ง€๋งŒ ๋ฌธ์ž ์ง‘ํ•ฉ์€ ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์˜๋ฏธ ์—†์ด ๊ตฌ๋ฌธ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”? ์ƒํ˜ธ ์šด์šฉ์„ฑ ์ธก๋ฉด์—์„œ 0์„ ์–ป์ง€๋งŒ UTF-8์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ(์–ด์จŒ๋“  ์œ ๋‹ˆ์ฝ”๋“œ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ)์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ์ „ํžˆ ์ธ์œ„์ ์ธ ์žฅ์• ๋ฌผ์„ ์„ธ์›๋‹ˆ๋‹ค.

ํ† ๋ก ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@tabatkins ๋Š” ์ •ํ™•ํžˆ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์„ ๋ก€๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๊ตญ์ œํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ๋งํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋ฅผ ๋‹ค์‹œ ๋ฌธ์ž์—ด๋กœ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ์‚ฌ์†Œํ•˜๊ณ  ๋งค์šฐ ๋น ๋ฅธ UTF-8์„ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์‹๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜์„œ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ œ์•ˆ์€ ๊ท€ํ•˜์˜ ๋ง๋กœ "์˜๋ฏธ ์—†๋Š” ๊ตฌ๋ฌธ ์ •์˜"์ž…๋‹ˆ๋‹ค. ์•„์ฃผ ํ”ํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค, WebAssembly์˜ ํ˜„์žฌ ๊ธธ์ด + ๋ฐ”์ดํŠธ ์‚ฌ์–‘์€ ์ด๋ฏธ ์ด๊ฒƒ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

์žฅ์• ๋ฌผ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚œ ์ •๋ง ํ•˜๋‚˜๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

WebAssembly๋Š” ์ด๋ฆ„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์›น์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ธ์‹ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์›น๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ๋ฐ”๋กœ ์•ž์˜ ๋…ผํ‰์—์„œ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด ์ฃผ์žฅ์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๊ณ , ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์ •๋ง ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ ์›น๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐฐ์šด ๊ตํ›ˆ์˜ ์ค‘์š”ํ•œ ์˜ˆ๋กœ์„œ ์›น์˜ ๊ฒฝํ—˜์„ ์ง€์ ํ•˜๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ”์–ด Wasm์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ž ์žฌ ๊ณ ๊ฐ์—๊ฒŒ ์ด ํ‘œ์ค€์„ ์œ„๋ฐ˜ํ•˜๋„๋ก ๊ฐ•์š”ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋“์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด ASCII ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— C ์—๋Š” ๋‚ด์žฅ ์ธ์ฝ”๋”ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (๋‹ค๋ฅธ ๊ฒƒ์„ ์›ํ•˜๋ฉด ์ ์ ˆํ•œ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•˜์—ฌ ์ง์ ‘ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.) ์ตœ์‹  C++์—์„œ๋Š” UTF-16 ๋ฐ UTF-8 ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์ž„์˜์˜ ๋ฐ”์ดํŠธ๋ฅผ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. \x ์ด์Šค์ผ€์ดํ”„, \u ์ด์Šค์ผ€์ดํ”„ ์ ์–ด๋„ ๊ฐ’์ด ์œ ํšจํ•œ ์ฝ”๋“œ ํฌ์ธํŠธ์ธ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

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

์ƒํ˜ธ ์šด์šฉ์„ฑ ์ธก๋ฉด์—์„œ 0์„ ์–ป์ง€๋งŒ UTF-8์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ(์–ด์จŒ๋“  ์œ ๋‹ˆ์ฝ”๋“œ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ)์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ์ „ํžˆ ์ธ์œ„์ ์ธ ์žฅ์• ๋ฌผ์„ ์„ธ์›๋‹ˆ๋‹ค.

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

์–ด๋–ค ๋‹ค์–‘์„ฑ์„ ๋ณดํ˜ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ? ํ•˜๋‚˜์˜ ์˜ˆ๋ผ๋„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :/

@tabatkins :

WebAssembly๋Š” ์ด๋ฆ„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ 
์›น์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๊ณ  ๋ฐ”๋กœ ์•ž์˜ ์ฝ”๋ฉ˜ํŠธ์—์„œ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
์›น์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด ์ฃผ์žฅ์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๊ณ , ๊ทธ๊ฒƒ์€ ์ •๋ง
๋‚˜๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•œ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ ์›น๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€
๋ฐฐ์šด ๊ตํ›ˆ์˜ ์ค‘์š”ํ•œ ์˜ˆ๋กœ์„œ ์›น์˜ ๊ฒฝํ—˜์„ ์ง€์ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐ•์กฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ Wasn์ด
๊ฐ€๋Šฅํ•œ ํ•œ ํ˜„๋Œ€์ ์ด๋“  ์•„๋‹ˆ๋“  ํ”Œ๋žซํผ. ๋„Œ ํ•ดํ”ผ์—”๋”ฉ๋ถ€ํ„ฐ ๊ณ„์† ๋ง๋‹คํˆผ์„ ํ•ด
๋ชจ๋“  ๊ฒƒ์ด ์œ ๋‹ˆ์ฝ”๋“œ ๋ฐ/๋˜๋Š” UTF-8์ด๊ณ  ๋ชจ๋“  ๊ฒƒ์ด
else๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๋Š” ์š”์ ์„ ๋งŒ๋“ค๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค - C

๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด ASCII ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์žฅ ์ธ์ฝ”๋”ฉ. (๋„ค๊ฐ€ ์›ํ•œ๋‹ค๋ฉด
๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์ ์ ˆํ•œ ๋ฐ”์ดํŠธ๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•˜์—ฌ ์†์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‹œํ€€์Šค.) ์ตœ์‹  C++์—์„œ๋Š” UTF-16 ๋ฐ UTF-8 ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฆฌํ„ฐ๋Ÿด, ๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ ์ž„์˜์˜ ๋ฐ”์ดํŠธ๋ฅผ ๋ฌธ์ž์—ด์— ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ
\x ์ด์Šค์ผ€์ดํ”„, \u ์ด์Šค์ผ€์ดํ”„ ์ ์–ด๋„ ๊ฐ’์ด ์œ ํšจํ•œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค
์ฝ”๋“œ ํฌ์ธํŠธ.

์•„๋‹ˆ์š”, ๊ทธ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. C ์‚ฌ์–‘์—๋Š” ASCII๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋„ ์•Š๋Š”๋‹ค
ASCII์™€์˜ ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ์˜ ์ž„์˜์˜ "์†Œ์Šค
๋ฌธ์ž ์ง‘ํ•ฉ" ๋ฐ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ์ „์ฒด์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์„ธํŠธ. ์ธ์ฝ”๋”ฉ์— ๊ด€ํ•œ ์ œ์•ฝ์€ ์—†์œผ๋ฉฐ ์ „์ ์œผ๋กœ
๊ตฌํ˜„ ์ •์˜. C์—์„œ ์‹คํ–‰๋˜๋Š” ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค.
EBCDIC ํ”Œ๋žซํผ์ด๋ฉฐ ํ˜„์žฌ ํ‘œ์ค€์—์„œ ์—ฌ์ „ํžˆ ์ง€์›๋ฉ๋‹ˆ๋‹ค. GCC
๋ชจ๋“  iconv ์ธ์ฝ”๋”ฉ์œผ๋กœ ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ์ค‘ ์•ฝ 140
UTF-8 ์™ธ์—), ์˜ˆ๋ฅผ ๋“ค์–ด ์•„์‹œ์•„์—์„œ ์ธ๊ธฐ ์žˆ๋Š” UTF-16์ž…๋‹ˆ๋‹ค. C++๋„ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(๊ทธ๊ฒƒ์€ @jfbastien ์˜ ์งˆ๋ฌธ์—๋„ ๋Œ€๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

๊ณ ์œ ํ•œ ๋งคํ•‘์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.๋ฌธ์ž๋ฅผ ๋ฐ”์ดํŠธ๋กœ . ๊ทธ๊ฒƒ์ด ์ธ์ฝ”๋”ฉ ์ด ํ•˜๋Š” ์ผ ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€
์ง€์ •๋œ ์ธ์ฝ”๋”ฉ์€ ์–ธ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์‹ ํ•  ๋•Œ
๋‹ค๋ฅธ ๋‹น์‚ฌ์ž์˜ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋Š” ์ธ์ฝ”๋”ฉ์„ ์ถ”์ธกํ•ด์•ผ
๊ทธ๊ฒƒ๋“ค์„ ๋‹ค์‹œ ํ…์ŠคํŠธ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ์ด _will_์€ ํ™˜๊ฒฝ๋ณ„๋กœ ์ ์ ˆํ•˜๊ฒŒ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๋•Œ ๋ˆ„๊ตฐ๊ฐ€
๋™์ผํ•œ ์ƒํƒœ๊ณ„์—์„œ ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๋กœ๋ถ€ํ„ฐ Wasm ๋ชจ๋“ˆ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค JS ๊ฐœ๋ฐœ์ž๋„ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ˆ„๊ตฐ๊ฐ€ _๋‹ค๋ฅธ ์ƒํƒœ๊ณ„_์—์„œ ๋ชจ๋“ˆ์„ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒฝ์šฐ
๊ฑฑ์ •ํ•  ๋น„ํ˜ธํ™˜์„ฑ์˜ ๋‹ค๋ฅธ ์›์ธ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด
API, ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€์น˜. ์–‘ ๋‹น์‚ฌ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์–ด์จŒ๋“  ์ƒํ˜ธ ์šด์šฉ์„ฑ ๊ฐ€์ •์— ๋Œ€ํ•ด ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์— ๋™์˜
์ธ์ฝ”๋”ฉ์€ ๊ฐ€์žฅ ์ž‘์€ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒํ˜ธ ์šด์šฉ์„ฑ ์ธก๋ฉด์—์„œ 0์„ ์–ป์ง€๋งŒ ์—ฌ์ „ํžˆ

UTF-8์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ(์œ ๋‹ˆ์ฝ”๋“œ ํ™˜๊ฒฝ์—์„œ๋งŒ
๊ทธ๋ž˜๋„).

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

์–ด๋–ค ๋‹ค์–‘์„ฑ์„ ๋ณดํ˜ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ? ๋ณด๊ธฐ์—๋„ ์ข‹์„ ๊ฒƒ์ด๋‹ค.
ํ•˜๋‚˜์˜ ์˜ˆ. :/

์˜ˆ๋ฅผ ๋“ค์–ด ์ž„๋ฒ ๋””๋“œ OS ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://en.wikipedia.org/wiki/
๋ฒ”์ฃผ:Embedded_operating_systems
๊ทธ๋“ค ์ค‘ ์ผ๋ถ€๋Š” ์•„๋งˆ๋„ UTF-8์„ ์‚ฌ์šฉํ•˜๊ณ  ์ผ๋ถ€๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” Wasm์˜ ์šฉ๋„๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์€ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ๋œ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋“ค์—๊ฒŒ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋ชฉ๋ก์—์„œ ์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜๋Š” DOS์ž…๋‹ˆ๋‹ค. ๊ฐ™์ด
์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์ฃฝ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ DOS ์‹œ์Šคํ…œ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ™œ๋ฐœํ•˜๋ฉฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
OEM.

@jfbastien :

๊ทธ๋ž˜์„œ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ œ์•ˆ์€ ๊ท€ํ•˜์˜ ๋ง๋กœ "๊ตฌ๋ฌธ์„ ์ •์˜ํ•˜์ง€ ์•Š๊ณ 
์˜๋ฏธ๋ก ". ์ด๋Š” ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ์ผ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ WebAssembly์˜
ํ˜„์žฌ ๊ธธ์ด + ๋ฐ”์ดํŠธ ์‚ฌ์–‘์€ ์ด๋ฏธ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค!

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

์žฅ์• ๋ฌผ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚œ ์ •๋ง ํ•˜๋‚˜๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
>
์ผ๋ถ€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹จ์ˆœํžˆ ๋ชจ๋“  ๋ฐ”์ดํŠธ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ
์ƒํƒœ๊ณ„์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ค‘๋ณต UTF ์ธ์ฝ”๋”ฉ. ๊ทธ ๋ชจ๋“ 
๊ทธ๋“ค์˜ ๋„๊ตฌ ์ฒด์ธ์— ์žˆ๋Š” ๋„๊ตฌ๋„ ์ด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ
์ถ”๊ฐ€ ์˜ค๋ฅ˜ ์‚ฌ๋ก€(๋ฒ”์œ„ ๊ฐ’์„ ๋ฒ—์–ด๋‚จ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ทธ๋“ค์„ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์งˆ๋ฌธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์ƒํƒœ๊ณ„์—์„œ) ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๋‚œ ์ •๋ง ํ•˜๋‚˜๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@tabatkins
๊ตฌ๋ถ„์„ ์ด ์–ด๋””์— ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์กฐํ•ฉ์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์€์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์ฝ”๋“œ ํฌ์ธํŠธ์˜ utf-8 ์ธ์ฝ”๋”ฉ๋งŒ ์ œ์•ˆํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(10์ค„์˜ ์ฝ”๋“œ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ).
์˜ˆ๋ฅผ ๋“ค์–ด ๊ตต๊ฒŒ ํ‘œ์‹œ๋œ ๋Œ€๋ฌธ์ž๋Š” ๋‹ค์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์–‘์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Wasm์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ตญ์ œํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์งˆ๋ฌธ?

  • ์ด๊ฒƒ์ด ๋” ๋งŽ์€ ๊ฒ€์ฆ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ถ„์•ผ์—์„œ ์ €์˜ ํ•ต์‹ฌ ๊ด€์‹ฌ์‚ฌ๋Š” ICU๋ฅผ ์˜์กด์„ฑ์œผ๋กœ ์‚ผํ‚ค๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๋ถˆํ•ฉ๋ฆฌํ•œ ๋ถ€๋‹ด์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์ด UTF-8๊ณผ ์ถฉ๋Œํ•˜๋Š” Latin1๊ณผ ๊ฐ™์€ ์ธ์ฝ”๋”ฉ์„ ์ ๊ทน์ ์œผ๋กœ ์žฅ๋ คํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ทธ๊ฒƒ์„ ๋ฐฉ์ถœํ•˜๋Š” ํˆด์ฒด์ธ์€ ๋น„์ค€์ˆ˜์ผ ๊ฒƒ์ด๊ณ  ์œ ์‚ฌํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๋Š” ๊ตฌํ˜„์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋‚˜๋Š” ์›น์ด ์—ญ์‚ฌ์ ์œผ๋กœ ์ด์ „์— ์„ฌ์„ ์ธ์ฝ”๋”ฉํ•˜๋˜ ์˜์—ญ์˜ ๋น„ํŠธ๋ฅผ ๊ฒน์น˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ณต๊ฐ„์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋‚ด ์ธ์ƒ์€ UTF-8์ด ์ „ํ™˜ ๋น„์šฉ์ด ASCII๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค์— ์˜ํ•ด ๋ถˆ๊ท ํ˜•์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ณ  ์ผ๋ถ€ ์ง€์—ญ์—๋Š” ๋” ๋งŽ์€ ๋ฒ ์ดํฌ์ธ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ ์ „ํ™˜์€ ์‹ค์šฉ์ ์ธ ํ•„์—ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ๊ฑฐ์˜ ์™„๋ฃŒ). ์œ ๋‹ˆ์ฝ”๋“œ์™€ ๊ด€๋ จ๋œ ์ผ๋ถ€ ์ •์น˜์  ๋ฐ ์ง€์—ญ์  ๋ฌธ์ œ๊ฐ€ ์›น์—์„œ ํ•ด๊ฒฐ๋œ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ๋ฌธ์„œ/์—”ํ‹ฐํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@rossberg-chromium

  • ์ธ์ฝ”๋”ฉ์˜ ์ผ๋ถ€ ์ธก๋ฉด์€ ๊ฒ€์ฆํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์ธก๋ฉด์€ ๊ฒ€์ฆํ•  ๋•Œ ๋…ผ๋ฆฌ์  ๋ถˆ์ผ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋‚ด ์ธ์ƒ์€ utf8์ด ์ด ์‹œ์ ์—์„œ ๋„๋ฆฌ ํผ์ ธ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์–‘ ๋ถˆ์ผ์น˜ ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์— ๋ฒ ์–ด utf-8 ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋ถˆํŽธํ•ฉ๋‹ˆ๊นŒ?

๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์กฐํ•ฉ์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์€์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์ฝ”๋“œ ํฌ์ธํŠธ์˜ utf-8 ์ธ์ฝ”๋”ฉ๋งŒ ์ œ์•ˆํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(10์ค„์˜ ์ฝ”๋“œ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ).

์˜ˆ, ์ž˜๋ชป๋œ ์กฐํ•ฉ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๊ฐœ๋ณ„ ์ฝ”๋“œํฌ์ธํŠธ(UTF-16 ๋Œ€๋ฆฌ์šฉ์œผ๋กœ ์˜ˆ์•ฝ๋œ ์ฝ”๋“œํฌ์ธํŠธ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ „์ฒด ๋ฐ”์ดํŠธ ์ œ์–ด๊ฐ€ ๋ฐ”๋žŒ์งํ•˜๋‹ค๋ฉด WTF-8 ์ธ์ฝ”๋”ฉ ์ด ์กด์žฌํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ชฉํ‘œ๋กœ "์˜ˆ, ์ด ๋ฌธ์ž์—ด์ด ๋•Œ๋•Œ๋กœ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ํฌํ•จํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค"์— ๋Œ€ํ•ด ๋งค์šฐ ๋ช…์‹œ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ์ชฝ์œผ๋กœ ๊ฐ„๋‹ค. WTF-8(๋ฐ WTF-16) ํ˜•์‹์€ UTF-* well-formedness๋ฅผ ์‹œํ–‰ํ•˜๋Š” ๋ฐ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์ œ์•ฝ์ด ์žˆ๋Š” ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ณต์‹ ์‚ฌ์–‘์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ตต๊ฒŒ ํ‘œ์‹œ๋œ ๋Œ€๋ฌธ์ž๋Š” ๋‹ค์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์–‘์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Wasm์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ตญ์ œํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์˜ˆ, i18n์€ ์–ด๋–ค ๋ฐฉ์‹, ๋ชจ์–‘ ๋˜๋Š” ํ˜•ํƒœ๋กœ๋“  ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CSS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ UTF-8์„ ์‚ฌ์šฉํ•˜๋ฉฐ ASCII ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•  ๋•Œ ์›์‹œ ์ฝ”๋“œํฌ์ธํŠธ ๋น„๊ต/์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Wasm์ด ์ด ์ด์ƒ์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ด์œ ๋„ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋” ๋งŽ์€ ๊ฒ€์ฆ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ถ„์•ผ์—์„œ ์ €์˜ ํ•ต์‹ฌ ๊ด€์‹ฌ์‚ฌ๋Š” ICU๋ฅผ ์˜์กด์„ฑ์œผ๋กœ ์‚ผํ‚ค๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๋ถˆํ•ฉ๋ฆฌํ•œ ๋ถ€๋‹ด์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›น ํ”Œ๋žซํผ์€ ์ง€๊ธˆ๊นŒ์ง€ ๋ฒ ์–ด ์ด๋ฆ„์— ์ถ”๊ฐ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋ถ€๊ณผํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ๊ฒฐ์ฝ” ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด UTF-8๊ณผ ์ถฉ๋Œํ•˜๋Š” Latin1๊ณผ ๊ฐ™์€ ์ธ์ฝ”๋”ฉ์„ ์ ๊ทน์ ์œผ๋กœ [dis-ed]์šฉ๊ธฐํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ทธ๊ฒƒ์„ ๋ฐฉ์ถœํ•˜๋Š” ํˆด์ฒด์ธ์€ ๋น„์ค€์ˆ˜์ผ ๊ฒƒ์ด๊ณ  ์œ ์‚ฌํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๋Š” ๊ตฌํ˜„์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๊ท€ํ•˜์˜ ๋‹จ์–ด์— "DIS couraging"๋กœ ๋ณ€ํ™”. ^_^ ์š”์ ์€ ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ๋‹ค๋ฅธ ๋์ ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ถ”์ธกํ•  ํ•„์š” ์—†์ด ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋กœ/์—์„œ ๋ฌธ์ž์—ด์„ ์•ˆ์ •์ ์œผ๋กœ ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด์ œ๊นŒ์ง€ ๋ฐœ์ƒํ•œ ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ ๋”์ฐํ•œ ๊ณ ํ†ต์ด์—ˆ์œผ๋ฉฐ ํ˜„์žฌ ๋„๋ฆฌ ์ฑ„ํƒ๋œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์›น์ด ์—ญ์‚ฌ์ ์œผ๋กœ ์ด์ „์— ์„ฌ์„ ์ธ์ฝ”๋”ฉํ•˜๋˜ ์˜์—ญ์˜ ๋น„ํŠธ๋ฅผ ๊ฒน์น˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ณต๊ฐ„์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋‚ด ์ธ์ƒ์€ UTF-8์ด ์ „ํ™˜ ๋น„์šฉ์ด ASCII๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค์— ์˜ํ•ด ๋ถˆ๊ท ํ˜•์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ณ  ์ผ๋ถ€ ์ง€์—ญ์—๋Š” ๋” ๋งŽ์€ ๋ฒ ์ดํฌ์ธ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ ์ „ํ™˜์€ ์‹ค์šฉ์ ์ธ ํ•„์—ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ๊ฑฐ์˜ ์™„๋ฃŒ). ์œ ๋‹ˆ์ฝ”๋“œ์™€ ๊ด€๋ จ๋œ ์ผ๋ถ€ ์ •์น˜์  ๋ฐ ์ง€์—ญ์  ๋ฌธ์ œ๊ฐ€ ์›น์—์„œ ํ•ด๊ฒฐ๋œ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ๋ฌธ์„œ/์—”ํ‹ฐํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ํ™•์‹คํžˆ ์ „ํ™˜์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. HTML์€ ์—ฌ์ „ํžˆ โ€‹โ€‹back-compat์œผ๋กœ ์ธํ•ด Latin-1๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์—ฌ์ „ํžˆ ์–ธ์–ด๋ณ„ ์ธ์ฝ”๋”ฉ(๋Œ€๋ถ€๋ถ„ Shift-JIS, ์ผ๋ณธ์–ด ์ธ์ฝ”๋”ฉ)์„ ์„ ํ˜ธํ•˜๋Š” ์›น ์ฝ˜ํ…์ธ ์˜ ์ผ๋ถ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ธ๊ณ„์˜ ๋Œ€๋‹ค์ˆ˜๋Š” ์ง€๋‚œ 20๋…„ ๋™์•ˆ ์ „ํ™˜ํ–ˆ์œผ๋ฉฐ ์ „ํ™˜์€ ์ด์ œ ์–ด๋Š ์ •๋„ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

"UTF-8์ด ASCII๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ถ€๋‹ด์„ ์ค€๋‹ค"๋Š” ๊ฒƒ์€ ์œ ํ•ดํ–ˆ์ง€๋งŒ ์˜ค๋žซ๋™์•ˆ ๊ฑฐ์˜ ์™„์ „ํžˆ ์‚ฌ์‹ค์ด ์•„๋‹Œ ์†Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์œ ๋Ÿฝ ์–ธ์–ด๋Š” ์ฒ˜์Œ์— ๋Œ€๋ถ€๋ถ„์˜ ASCII ์•ŒํŒŒ๋ฒณ์„ ํฌํ•จํ•˜๋ฏ€๋กœ ๋Œ€๋ถ€๋ถ„์˜ ํ…์ŠคํŠธ๋Š” ๋‹จ์ผ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค์ด๋ฉฐ UTF-16๋ณด๋‹ค ์ž‘๊ฒŒ ๋๋‚ฉ๋‹ˆ๋‹ค. ๋ณ‘์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ž ์ฒด๊ณ„์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. CJK ์–ธ์–ด๋Š” ๋Œ€๋ถ€๋ถ„ 3๋ฐ”์ดํŠธ UTF-8 ์˜์—ญ์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ ํŠนํžˆ ๋งˆํฌ์—… ์–ธ์–ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋งŽ์€ ์–‘์˜ ASCII ๋ฌธ์ž๋„ ํฌํ•จํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด UTF-8์— ๋Œ€ํ•ด ๋” ์ž‘๊ฑฐ๋‚˜ ์œ ์‚ฌํ•œ ์ธ์ฝ”๋”ฉ ํฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. UTF-16 ๋˜๋Š” ํŠน์ˆ˜ ์ธ์ฝ”๋”ฉ.

UTF-8์ด ์‹ค์ œ๋กœ ํŠน์ˆ˜ ์ธ์ฝ”๋”ฉ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์€ CJK ๋˜๋Š” ํ‚ค๋ฆด ์ž๋ชจ์™€ ๊ฐ™์€ ๋น„ASCII ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋œ ๋‹ค๋Ÿ‰์˜ ์›์‹œ ํ…์ŠคํŠธ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ์šฉ๋Ÿ‰์ด ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„ ๋กœ ์ธก์ •๋˜๊ณ  ํ…์ŠคํŠธ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์•ฝ๊ฐ„ ์ฆ๊ฐ€ํ•ด๋„ ์‹ค์ œ๋กœ ์ƒ๋‹นํ•œ ์ˆ˜์ค€์ด ๋  ์ˆ˜ ์žˆ์—ˆ๋˜ 90๋…„๋Œ€ ์ดˆ๋ฐ˜ ์— ๋Œ€ํ•œ ์šฐ๋ ค์˜€์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฑฐ์˜ 20๋…„ ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํฌ๊ธฐ ์ฐจ์ด๋Š” ์ด์ œ ์™„์ „ํžˆ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

"์œ ๋‹ˆ์ฝ”๋“œ ์ „ํ™˜"์€ ์ด๋ฏธ ๋ณดํŽธ์ ์œผ๋กœ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ํ…์ŠคํŠธ ํ˜•์‹์€ ๋”์ฐํ•˜๊ณ  ์—ญ์‚ฌ์ ์ธ ์‹ค์ˆ˜๋ฅผ ์ €์ง€๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋Š” ํŠน์ • ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์–ด๋”˜๊ฐ€์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ^_^

๋ชฉํ‘œ๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ์‚ฌ์–‘์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์ด๋ฆ„์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•ฉ์‹œ๋‹ค. ์–ด์จŒ๋“  ๋ชจ๋“  ๋‚ด๋ถ€ ์ฐธ์กฐ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹  UTF-8์ด ํ•„์š”ํ•œ JavaScript ์‚ฌ์–‘์— ํ•„์ˆ˜ ์‚ฌ์šฉ์ž ์ •์˜ ์„น์…˜์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. @rossberg-chromium์ด ์•”์‹œํ•˜๋Š” ์†Œ๋น„์—ํŠธ ์‹œ๋Œ€์˜ ๋ฉ”์ธํ”„๋ ˆ์ž„๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ๋Š” ์ž์ฒด ์‚ฌ์šฉ์ž ์ •์˜ ์„น์…˜์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ WASM ํŒŒ์ผ์€ ๋‘ ์‚ฌ์šฉ์ž ์ •์˜ ์„น์…˜์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜์—ฌ ๋‘ ํ”Œ๋žซํผ์„ ๋ชจ๋‘ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ๋„๊ตฌ๊ฐ€ ๋” ์ธ๊ธฐ ์žˆ๋Š” ๊ฒƒ์„ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ชจํ˜ธํ•œ ํ”Œ๋žซํผ์˜ ๋ˆ„๋ฝ๋œ ์„น์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋น„๊ต์  ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋ชฉํ‘œ๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ์‚ฌ์–‘์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์ด๋ฆ„์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•ฉ์‹œ๋‹ค. ์–ด์จŒ๋“  ๋ชจ๋“  ๋‚ด๋ถ€ ์ฐธ์กฐ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์žฌ์ž‘์—…ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ…Œ์ด๋ธ”์— ์—†์œผ๋ฉฐ ์ด ๋ฌธ์ œ์™€ ๋‹ค๋ฅธ ๋ฌธ์ œ์—์„œ ์ œ์•ˆ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@bradnelson , AFAICS, ํŠน์ • ์ธ์ฝ”๋”ฉ์„ ๊ทœ์ •ํ•˜์ง€๋งŒ ๋ฌธ์ž ์ง‘ํ•ฉ์€ ์—†์Œ
๋‘ ์„ธ๊ณ„์˜ ์ตœ์•…์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๋ฉด์—์„œ ์‹ค์งˆ์ ์ธ ์ด์ ์ด ์—†๋Š” ์ œํ•œ, ๋ณต์žก์„ฑ ๋ฐ ์˜ค๋ฒ„ํ—ค๋“œ
์ƒํ˜ธ ์šด์šฉ์„ฑ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@rossberg-chromium ์—ฌ๊ธฐ์—์„œ ์ถ”๊ตฌํ•˜๋Š” ์ฃผ์š” ์ด์ ์€ ์ถ”์ธก์˜ ๋ถ€๋‹ด์—์„œ ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋œ์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ถ”๊ตฌํ•˜๋Š” ์ฃผ์š” ์ด์ ์€ ์ถ”์ธก์˜ ๋ถ€๋‹ด์—์„œ ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋œ์–ด์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋…ผ์˜๋˜๋Š” ์œ„์˜ ๋ณ€ํ˜•(UTF-8 ๋Œ€ WTF-8 ๋“ฑ)์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ ์—†๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. "์ด ๋ฐ”์ดํŠธ๋ฅผ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ํŠธ๋žœ์Šค์ฝ”๋”ฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค."๊ฐ€ "์ด ๋ฐ”์ดํŠธ๋Š” windows-1252์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค."๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค. ์ถ”์ธก์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์—์„œ ์ถ”๊ตฌํ•˜๋Š” ์ฃผ์š” ์ด์ ์€ ์ถ”์ธก์˜ ๋ถ€๋‹ด์—์„œ ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋œ์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@sunfishcode , ์–ด๋–ป๊ฒŒ? ๋‚˜๋Š” ์•„์ง๋„ ๊ธธ์„ ์žƒ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ๊ตฌ์ฒด์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ์žˆ๊ณ  ๋‚ด๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋ชจ๋“ˆ์„ ์ „๋‹ฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”Œ๋žซํผ์ด EBCDIC์™€ ๋‹น์‹ ์˜ ASCII๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ํ˜„์žฌ ์ œ์•ˆ์— ๋”ฐ๋ฅด๋ฉด ์™„์ „ํžˆ ํ•ฉ๋ฒ•์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๋ชจ๋“ˆ์€ ๋‹น์‹ ๊ณผ ๋‹น์‹ ์˜ ๋„๊ตฌ ์ฒด์ธ์— ์™„์ „ํžˆ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋‘ ์ธ์ฝ”๋”ฉ์€ ๋ชจ๋‘ 7๋น„ํŠธ์ด๋ฏ€๋กœ UTF-8์€ ๊ทธ๋ฆผ์— ์ž…๋ ฅ์กฐ์ฐจ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด UTF-8์€ ๋ฌด์—‡์„ ํ…Œ์ด๋ธ”์— ๊ฐ€์ ธ์˜ฌ๊นŒ์š”? ๊ธ€์Ž„, ๋‚˜๋Š” ๋‚ด๊ฐ€ ์–ป๋Š” ์•Œ ์ˆ˜์—†๋Š” ๋ฌธ์ž์—ด์„ "๋””์ฝ”๋”ฉ"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๊ฒฐ๊ณผ๋Š” 31๋น„ํŠธ ๊ฐ’์˜ _๋˜ ๋‹ค๋ฅธ ๋ถˆํˆฌ๋ช…ํ•œ ์ด์ง„ ์–ผ๋ฃฉ_์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ •๋ณด๋„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‚ด ์ž์‹ ์˜ ๋ฌธ์ž์—ด๊ณผ ๊ด€๋ จ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋‚ด๊ฐ€ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด์„ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ๊ท€์ฐฎ๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ธ€์Ž„, _ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค_! 8๋น„ํŠธ ๊ฐ’์˜ ์›๋ž˜ ์ด์ง„ ๋ฉ์–ด๋ฆฌ๋กœ ์ž‘์—…ํ•˜๊ณ  ๊ณต๊ฐ„๊ณผ ์ฃผ๊ธฐ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์–‘์—์„œ๋Š” ์—ฌ์ „ํžˆ ์ธ์ฝ”๋”ฉ์„ ํ—ˆ์ˆ ํ•˜๊ฒŒ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ดํด์„ ์†Œ๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ณ ๋ คํ•  ๋•Œ, ์ด ํŠน์ • ์ œ์•ˆ์„ ์ฑ„ํƒํ•จ์œผ๋กœ์จ (ํ•ต์‹ฌ) Wasm ๋˜๋Š” ๋„๊ตฌ๊ฐ€ ์–ป๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

AFAICS, ํŠน์ • ์ธ์ฝ”๋”ฉ์„ ๊ทœ์ •ํ•˜์ง€๋งŒ ๋ฌธ์ž ์ง‘ํ•ฉ์€ ์ง€์ •ํ•˜์ง€ ์•Š์Œ
๋‘ ์„ธ๊ณ„์˜ ์ตœ์•…์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๋ฉด์—์„œ ์‹ค์งˆ์ ์ธ ์ด์ ์ด ์—†๋Š” ์ œํ•œ, ๋ณต์žก์„ฑ ๋ฐ ์˜ค๋ฒ„ํ—ค๋“œ
์ƒํ˜ธ ์šด์šฉ์„ฑ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ๋ฌธ์ž ์ง‘ํ•ฉ์ธ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ๋ถ€๊ณผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JF๋Š” ์ด์ „์— ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ํ‘œํ˜„์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์‹ค์ œ๋กœ ์ด๋ฅผ ์‹œํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Wasm์— ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋””์ฝ”๋”๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ์›น์€ ์ผ๋ฐ˜์ ์œผ๋กœ U+FFFD REPLACEMENT CHARACTER๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.)

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ๊ตฌ์ฒด์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ์žˆ๊ณ  ๋‚ด๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋ชจ๋“ˆ์„ ์ „๋‹ฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”Œ๋žซํผ์ด EBCDIC์™€ ๋‹น์‹ ์˜ ASCII๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ํ˜„์žฌ ์ œ์•ˆ์— ๋”ฐ๋ฅด๋ฉด ์™„์ „ํžˆ ํ•ฉ๋ฒ•์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๋ชจ๋“ˆ์€ ๋‹น์‹ ๊ณผ ๋‹น์‹ ์˜ ๋„๊ตฌ ์ฒด์ธ์— ์™„์ „ํžˆ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

๋งŽ์€ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ด ์ด ๋ชจ๋“  ํ˜ผ๋ž€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ ์ „์Ÿ์€ ์žฌ๋ฏธ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋งŽ์€ ๋ˆ๊ณผ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ–ˆ๊ณ  ๋งŽ์€ ํ…์ŠคํŠธ๊ฐ€ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ ์ „์Ÿ์„ ๋๋ƒˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๊ณตํฌ๋˜์–ด ์ „ ์„ธ๊ณ„์— ๊ฑธ์ณ ์ง€๋ฐฐ์ ์ธ ๋ฌธ์ž ์ง‘ํ•ฉ์ด ๋˜์—ˆ์œผ๋ฉฐ, ์ด ์‹œ์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฌธ์ž ์ง‘ํ•ฉ์€ ๋ง ๊ทธ๋Œ€๋กœ ์ด ์‹œ์ ์—์„œ ์—ญ์‚ฌ์  ํ˜ธ๊ธฐ์‹ฌ์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ UTF-16 ๋Œ€ UTF-8์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ์ €์ˆ˜์ค€์˜ ๋“์–ด์˜ค๋ฅด๋Š” ์‹ธ์›€์„ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ ์–ด๋„ ๊ทธ ๋‘˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์‰ฝ๊ณ (BOM์„ ๋ณด๊ฑฐ๋‚˜ null ๋ฐ”์ดํŠธ์˜ ์šฐ์„ธ๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค) ์ „์ฒด UTF -8์ด ์‰ฝ๊ฒŒ ์ง€๋ฐฐํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฝ”๋”ฉ ์ž์œ ์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ์ฃผ์žฅ์€ ์ด ๋ชจ๋“  ์—ญ์‚ฌ, ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋„์ž…๋œ ์ดํ›„ 20๋…„ ๋™์•ˆ ๋ฐฐ์šด ๋ชจ๋“  ๊ตํ›ˆ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ํŠน์ • ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ์ตœ์‹  ์‹œ์Šคํ…œ ์„ค๊ณ„์— ๋“ค์–ด๊ฐ„ ๋ชจ๋“  ๊ฒฝํ—˜๊ณผ ์ „๋ฌธ ์ง€์‹์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ชจ์ง€๋ฐ”์ผ€๋ฅผ ๊ณ ์ง‘ํ•œ๋‹ค๋ฉด ์‹ฌ๊ฐํ•˜๊ณ  ์น˜๋ช…์ ์ด๋ฉฐ ๊ฐ’๋น„์‹ผ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@rossberg-chromium

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ๊ตฌ์ฒด์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ์žˆ๊ณ  ๋‚ด๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋ชจ๋“ˆ์„ ์ „๋‹ฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”Œ๋žซํผ์ด EBCDIC์™€ ๋‹น์‹ ์˜ ASCII๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ํ˜„์žฌ ์ œ์•ˆ์— ๋”ฐ๋ฅด๋ฉด ์™„์ „ํžˆ ํ•ฉ๋ฒ•์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๋ชจ๋“ˆ์€ ๋‹น์‹ ๊ณผ ๋‹น์‹ ์˜ ๋„๊ตฌ ์ฒด์ธ์— ์™„์ „ํžˆ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด UTF-8์€ ๋ฌด์—‡์„ ํ…Œ์ด๋ธ”์— ๊ฐ€์ ธ์˜ฌ๊นŒ์š”? ๊ธ€์Ž„, ๋‚˜๋Š” ๋‚ด๊ฐ€ ์–ป๋Š” ์•Œ ์ˆ˜์—†๋Š” ๋ฌธ์ž์—ด์„ "๋””์ฝ”๋”ฉ"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๊ฒฐ๊ณผ๋Š” 31๋น„ํŠธ ๊ฐ’์˜ ๋˜ ๋‹ค๋ฅธ ๋ถˆํˆฌ๋ช…ํ•œ ์ด์ง„ ์–ผ๋ฃฉ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ •๋ณด๋„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‚ด ์ž์‹ ์˜ ๋ฌธ์ž์—ด๊ณผ ๊ด€๋ จ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

UTF-8์€ ๊ทธ๊ฒƒ์„ ์ž์‹ ์˜ ๋ฌธ์ž์—ด๊ณผ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€์‹œํ‚ค๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. (WTF-8๋„ ๊ฐ€๋Šฅํ•  ๋•Œ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ด๊ณ , ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ๋งน๊ธ€๋ง๋œ ๋‹ค์Œ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์„ ํ•ด์ฒดํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ, ๋ง๊ฐ€์ง„ ์ด๋ฆ„์„ ๋ฌธ์ž์—ด๋กœ ์ตœ์†Œํ•œ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐœ์„ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

UTF-8์„ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋ถˆํˆฌ๋ช…ํ•œ ์ •์ˆ˜์˜ ์ธ์ฝ”๋”ฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์œ„์˜ ๋…ผ์˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๋…ผ์˜๊ฐ€ ๋‹ค์†Œ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์ง„ ๊ฒƒ ๊ฐ™์•„์š”. "๊ตฌ๋ฌธ"๊ตญ์ œํ™” "์˜๋ฏธ"๋ฅผ ์ธ์ฝ”๋”ฉ ์ „ํ™”๋ฅผ ์œ ํ˜น,ํ•˜์ง€๋งŒ ๊ทธ ์œ ์šฉํ•œ ๊ตฌ๋ถ„์„ ๋ชจํ˜ธํ•˜๊ฒŒ : UTF-8์€ ์•„์ง ๋งํ•  ์ˆ˜์žˆ๋Š” ์†Œ๋น„์ž๊ฐ€ ์ •๋ณด์™€ ํ•จ๊ป˜ ํ•  ๋ฌด์Šจ ๋ง์„ํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ๋ฐ”์ดํŠธ ์‹œํ€€์Šค ์ˆ˜๋‹จ "ร–"๋ฅผ. ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์œ ๋‹ˆ์ฝ”๋“œ์˜ ์ธ์ฝ”๋”ฉ์ด์ง€๋งŒ ์œ„์—์„œ ์ œ์•ˆํ•œ "์œ ๋‹ˆ์ฝ”๋“œ ์ง€์›"์— ์‚ฌ์šฉ๋œ ์ข…๋ฅ˜์˜ ๋น„์šฉ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋‚ด๊ฐ€ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด์„ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ๊ท€์ฐฎ๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ธ€์Ž„, ๋‚˜๋Š”ํ•˜์ง€ ์•Š์„๊ฑฐ์•ผ! 8๋น„ํŠธ ๊ฐ’์˜ ์›๋ž˜ ์ด์ง„ ๋ฉ์–ด๋ฆฌ๋กœ ์ž‘์—…ํ•˜๊ณ  ๊ณต๊ฐ„๊ณผ ์ฃผ๊ธฐ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์–‘์—์„œ๋Š” ์—ฌ์ „ํžˆ ์ธ์ฝ”๋”ฉ์„ ํ—ˆ์ˆ ํ•˜๊ฒŒ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ดํด์„ ์†Œ๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ overlong ๋ฐ surrogate๋ฅผ ํฌํ•จํ•˜์—ฌ wasm ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์‹๋ณ„์ž์˜ ์ „์ฒด UTF-8 ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SpiderMonkey๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. AngryBots ๋˜๋Š” ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  30๊ฐœ์˜ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์žˆ๋Š” ์ž‘์€ emscripten ์ปดํŒŒ์ผ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ WebAssembly.validate ์—์„œ ์„ฑ๋Šฅ ์ฐจ์ด๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์–‘์€ ์—ฌ๋Ÿฌ ๊ด€์‹ฌ์‚ฌ ์‚ฌ์ด์˜ ์ ˆ์ถฉ์•ˆ์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๊ด€์‹ฌ์— ๊ฐ์‚ฌํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฏ€๋กœ ์ด์ œ ๋ช‡ ๊ฐ€์ง€ ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋“ค ์ž์‹ ์˜ ์‹คํ—˜์„ ํ•˜๋„๋ก ๊ฒฉ๋ คํ•œ๋‹ค.

๋˜ํ•œ UTF-8์€ ์œ ์ผํ•œ ์œ ๋‹ˆ์ฝ”๋“œ ์ธ์ฝ”๋”ฉ์ด ์•„๋‹ˆ๋ฉฐ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์œ ๋‹ˆ์ฝ”๋“œ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ(์ฆ‰, U+0000์—์„œ U+10FFFF ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ) UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ˆ˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ ๋ง์€ ๊ฑฐ์ง“์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๋ฌธ์ž์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์œผ๋ฉด 21๋น„ํŠธ ์ •์ˆ˜๋ฅผ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ์šฐ๋ฆฌ๊ฐ€ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์„์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

@flagxor https://encoding.spec.whatwg.org/ ๋Š” ์›น์— ๋…ธ์ถœ๋œ ๋‹ค์–‘ํ•œ ์ธ์ฝ”๋”ฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์ง€๋งŒ ๋ถ„๋ช…ํžˆ ์„œ๋กœ ๋ฐ”์ดํŠธ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

"๊ฒ€์ฆ"์€ ๋ฌด์—‡์„ ํ•ฉ๋‹ˆ๊นŒ? ๋‹น์‹ ์˜ was ํ”„๋กœ๊ทธ๋žจ์„ ๋ฌดํšจ๋กœ ๋งŒ๋“œ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ถ€๊ณผ๋  ์ˆ˜ ์žˆ๋Š” ์‹ค์งˆ์ ์ธ ๊ฒฐ๊ณผ๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

CSS์—์„œ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ด์Šค์ผ€์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํƒ€์ผ์‹œํŠธ์— U+FFFD๋ฅผ ๋„ฃ์„ ๋ฟ ์ด์ƒํ•œ ์ผ์€ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@annevk :

๋˜ํ•œ UTF-8์€ ์œ ์ผํ•œ ์œ ๋‹ˆ์ฝ”๋“œ ์ธ์ฝ”๋”ฉ์ด ์•„๋‹ˆ๋ฉฐ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ •์ˆ˜๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์œ ๋‹ˆ์ฝ”๋“œ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ(์ฆ‰, U+0000์—์„œ U+10FFFF ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ) UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ˆ˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ ๋ง์€ ๊ฑฐ์ง“์ธ ๊ฒƒ ๊ฐ™๋‹ค.

์ตœ์†Œํ•œ U+FFFE ๋ฐ U+FFFF๋Š” ์œ ๋‹ˆ์ฝ”๋“œ์—์„œ ๋ฌธ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฝ”๋“œ ํฌ์ธํŠธ(์ •์ˆ˜ ๊ฐ’)๋Š” ์œ ๋‹ˆ์ฝ”๋“œ์—์„œ ๋ฌธ์ž๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” "์บ๋ฆญํ„ฐ"์— ๋„ˆ๋ฌด ์ง‘์ค‘ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@tabatkins ๋ฅผ U+FFFD๋กœ ๋””์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ด์ง€๋งŒ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ •์ˆ˜์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ”์–ด Wasm์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ž ์žฌ ๊ณ ๊ฐ์—๊ฒŒ ์ด ํ‘œ์ค€์„ ์œ„๋ฐ˜ํ•˜๋„๋ก ๊ฐ•์š”ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋“์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹น์‹ ์€ C11์ด ์ถ”๊ฐ€ ํ•œ ๋ฉ”๋ชจ๋ฅผ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค char16_t ๋ฐ char32_t ์œ ํ˜•์„ ์ž˜ ํ•œ u ์ ‘๋‘์‚ฌ UTF-16 ์ธ์ฝ”๋”ฉ ๋œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด๋ฅผ ๋“ค์–ด, U ์ ‘๋‘์–ด UCS-4๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด ๋ฐ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์— ๋Œ€ํ•œ u8 ์ ‘๋‘์‚ฌ. ์ถ”๊ฐ€์— ๋Œ€ํ•œ ๊ทผ๊ฑฐ๋ฅผ ์ฐพ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๊นŠ์ด ํŒŒ๊ณ  ๋“ค์ง€๋Š” ์•Š์•˜์ง€๋งŒ "ํ‘œ์ค€ C/C++์—์„œ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ์•…๋ชฝ"์ด๋ผ๋Š” ๊ฒƒ์ด ์ ์–ด๋„ ๋™๊ธฐ์˜ ์ผ๋ถ€๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

@tabatkins , @sunfishcode , ์ข‹์•„์š”, ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๊ฐ™์€ ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ AFAICT @jfbastien ์€ ๊ทธ์˜ ์ œ์•ˆ์ด ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž ์ง‘ํ•ฉ ์—†์ด UTF-8์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž„์„ ๋ช…์‹œ ์ ์ด๊ณ  ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐํ˜”์Šต๋‹ˆ๋‹ค.

์ €๋น„์šฉ์ด๋ผ๋Š” ์ฃผ์žฅ์ด ๋’ท๋ฐ›์นจ๋˜๋Š” ์œ ์ผํ•œ ํ•ด์„์ด๊ธฐ๋„ ํ•˜๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ UTF-8์ด ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด ์ด ์š”๊ตฌ์‚ฌํ•ญ์€ ์•„์ง ์œ ๋‹ˆ์ฝ”๋“œ(ํ•˜์œ„ ์ง‘ํ•ฉ)๋ฅผ ๋งํ•˜์ง€ ์•Š๋Š” ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ๋„๊ตฌ์— ๋Œ€ํ•œ UTF-8 ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ๋ณด๋‹ค ํ™•์‹คํžˆ ํ›จ์”ฌ ๋” ๋น„์Œ‰๋‹ˆ๋‹ค. ์ „์ฒด ํŠธ๋žœ์Šค์ฝ”๋”ฉ ๋ ˆ์ด์–ด๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋“ค ๋ชจ๋‘์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋ ค๋Š” _์‹œ๋„_์˜ ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ๊ฒฐ๊ณผ๋Š” ์ผ๋ถ€ ์ž ์žฌ์ ์ธ ๊ฒƒ๋“ค์ด ๋‹จ์ˆœํžˆ ์‚ฌ์–‘์˜ ํ•ด๋‹น ๋ถ€๋ถ„์„ ์œ„๋ฐ˜ํ•˜์—ฌ ์™„์ „ํžˆ ๋ฌด์˜๋ฏธํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋˜๋Š” ๋” ๋‚˜์˜๊ฒŒ๋Š” Wasm์„ ์™„์ „ํžˆ ๋ฌด์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค).

OTOH๊ฐ€ ์ ์ ˆํ•œ ๊ณ„์ธต์—์„œ ์ง€์ •๋˜๋ฉด ์‹ค์ œ๋กœ ์†์‹ค ์—†์ด ๊ทธ๋Ÿฌํ•œ ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ UTF-8์ด ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด ์ด ์š”๊ตฌ์‚ฌํ•ญ์€ ์•„์ง ์œ ๋‹ˆ์ฝ”๋“œ(ํ•˜์œ„ ์ง‘ํ•ฉ)๋ฅผ ๋งํ•˜์ง€ ์•Š๋Š” ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ๋„๊ตฌ์— ๋Œ€ํ•œ UTF-8 ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ๋ณด๋‹ค ํ™•์‹คํžˆ ํ›จ์”ฌ ๋” ๋น„์Œ‰๋‹ˆ๋‹ค. ์ „์ฒด ํŠธ๋žœ์Šค์ฝ”๋”ฉ ๋ ˆ์ด์–ด๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ASCII๊ฐ€ ์•„๋‹Œ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๊ธฐ๋ณธ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ/์—์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฉฐ Wasm์—์„œ ASCII๊ฐ€ ์•„๋‹Œ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํ”Œ๋žซํผ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? (๋„์Šค์—์„œ Wasm์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฐ€์ƒ์˜ ๋Ÿฌ์‹œ์•„ ์กฐ์ง์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ์กด์žฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.)

@rocallahan ์ €๋Š” @rossberg-chromium์ด ์ „์ฒด ICU ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ถ”๊ฐ€ ๋น„์šฉ์„ ์›ํ•˜์ง€ ์•Š๋Š” ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์žฅ์น˜์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์ ์–ด๋„ ์ €๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๊ทธ๋“ค์€ ๋ถ€ํ’€๋ฆผ์„ ์ˆ˜์šฉํ•˜๊ฑฐ๋‚˜ ์™„์ „ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ASCII๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” wasm ํŒŒ์ผ์„ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ œ์–ดํ•  ์ˆ˜ ์—†์Œ).

๋˜ํ•œ ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์žฅ์น˜์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„ํ‘œ์ค€ ๋ฌธ์ž ์ง‘ํ•ฉ์ด ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
https://www.crystalfontz.com/product/cfah1602dyyhet-16x2-character-lcd?kw=&origin=pla#datasheets
https://www.crystalfontz.com/products/document/1078/CFAH1602DYYHET_v2.1.pdf
(๊ตฌํ”ผ ํ˜ผํ•ฉ ASCII + latin1 + ์ผ๋ณธ์–ด ๋ฌธ์ž ์„ธํŠธ๊ฐ€ ์žˆ์Œ)
๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ ค๋˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”์ง€์— ๊ด€๊ณ„์—†์ด ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@tabatkins ์˜๋„๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ

  • ๋ฐ”์ดํŠธ์˜ ์œ ์ผํ•œ "์˜ฌ๋ฐ”๋ฅธ" ํ•ด์„์œผ๋กœ UTF-8 + ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  • (๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด) ๋ชจ๋“ˆ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†์Œ์„ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” @rossberg-chromium์ด ์ „์ฒด ICU ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ถ”๊ฐ€ ๋น„์šฉ์„ ์›ํ•˜์ง€ ์•Š๋Š” ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์žฅ์น˜์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ์ ์–ด๋„ ์ €๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๊ทธ๋“ค์€ ๋ถ€ํ’€๋ฆผ์„ ์ˆ˜์šฉํ•˜๊ฑฐ๋‚˜ ์™„์ „ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ASCII๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” wasm ํŒŒ์ผ์„ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ œ์–ดํ•  ์ˆ˜ ์—†์Œ).

๋ฐ˜๋ณตํ•ด์„œ ๋งํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ์ฒญ์–ด์ž…๋‹ˆ๋‹ค. ICU์™€ ๊ด€๋ จ๋œ ์›๊ฒฉ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์›น์€ ํ™•์‹คํžˆ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ํผ๋œจ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ฉˆ์ถฐ์ฃผ์„ธ์š”.

"์ „์ฒด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ"๋Š” ์ผ์น˜ํ•˜๋Š” UTF-8 ๋””์ฝ”๋”ฉ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

@tabatkins ์™€ ์ฑ„ํŒ…ํ•  ๋•Œ ์—ฌ๊ธฐ์„œ ๋ถ„๋ช…ํžˆ ํ•ด์•ผ ํ•  ํ•œ ๊ฐ€์ง€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ค€์ˆ˜ํ•˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋””์ฝ”๋”๋Š” ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ฝ”๋“œ ํฌ์ธํŠธ ๋“ฑ์˜ ์ˆ˜์ •์ž์˜ ์ž„์˜ ์กฐํ•ฉ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆ˜์ •์ž ๋“ฑ์˜ ์ž˜๋ชป๋œ ํ˜ผํ•ฉ์€ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ์œผ๋กœ ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋”๋ผ๋„ ์œ ๋‹ˆ์ฝ”๋“œ์—์„œ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„Œ์„ผ์Šค ์กฐํ•ฉ์„ ๊ฑฐ๋ถ€ํ•œ ๋””์ฝ”๋”๋Š” ๋น„์ค€์ˆ˜์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ UTF-8 ๋””์ฝ”๋”ฉ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ฒ”์œ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ์ •ํ™•ํ•œ ์ž‘์—…์ด๋ฉฐ ๋ณธ์งˆ์ ์œผ๋กœ ๋ฐ”์ดํŠธ์˜ ์œ ๋‹ˆ์ฝ”๋“œ + utf-8 ํ•ด์„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ. UTF-8 ๊ตฌ๋ฌธ ๋ถ„์„์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ํ•ฉ๋ณ‘์ฆ์€ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์—†๋Š” ์†Œ์ˆ˜์˜ ์ฝ”๋“œํฌ์ธํŠธ์ด๋ฉฐ, ํ˜ธํ™˜ ๋””์ฝ”๋”๋Š” ๋Œ€์‹  ํ•˜๋‚˜ ์ด์ƒ์˜ U+FFFD ๋ฌธ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋์ ์ด ํ•  ์ž‘์—…์ž…๋‹ˆ๋‹ค. Wasm์€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ˜ธํ™˜ ๋””์ฝ”๋”๋Š” ์ž„์˜์˜ ๋น„ํŠธ ํŒจํ„ด์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๊ทธ๋“ค์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ€๋น„์ง€ ๋น„ํŠธ ํŒจํ„ด์ด U+FFFD ๋ฌธ์ž๋ผ๊ณ  ๊ฒฐ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.) ์ง€๊ธˆ๊นŒ์ง€ ์ œ๊ฐ€ ์š”์ฒญํ•œ ๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ž์—ด์„ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•ด์•ผ ํ•˜๋Š” ์ž‘์„ฑ์ž ์ˆ˜์ค€์˜ ์ ํ•ฉ์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„๋ฐ˜ํ•˜๋ฉด ํˆด์ฒด์ธ์ด ์ด๋ฅผ ์˜ค๋ฅ˜๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Wasm ์ž์ฒด๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜ˆ๋ฅผ ๋“ค์–ด CSS๊ฐ€ ์œ ํšจํ•œ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฌธ๋ฒ•์„ ์ •์˜ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ธฐ์ˆ ์ ์œผ๋กœ ์ž„์˜์˜ ๋น„ํŠธ ํŒจํ„ด์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์žฅ์น˜์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„ํ‘œ์ค€ ๋ฌธ์ž ์ง‘ํ•ฉ์ด ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด (๋น„ ASCII ๋ฒ”์œ„) Wasm ์‹๋ณ„์ž๋ฅผ ์“ฐ๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ทธ๋Ÿฌํ•œ ๋ฌธ์ž ์„ธํŠธ์˜ ์กด์žฌ๋Š” Wasm๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  "UTF-8 ์‚ฌ์šฉ"์€ https://encoding.spec.whatwg.org/#utf -8-decoder๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ICU๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์— ๊ฐ€๊น์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2017๋…„ 2์›” 25์ผ 01:13์— Brad Nelson [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@tabatkins https://github.com/tabatkins ์™€ ์ฑ„ํŒ…ํ•  ๋•Œ ํ•œ ๊ฐ€์ง€
์—ฌ๊ธฐ์„œ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ž„์˜์˜ ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ์ค€์ˆ˜ํ•˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋””์ฝ”๋”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ฝ”๋“œ ํฌ์ธํŠธ ๋“ฑ์˜ ์ˆ˜์‹์–ด ์กฐํ•ฉ.
์ˆ˜์ •์ž ๋“ฑ์€ ๊ทธ๊ฒƒ์„ ํ†ตํ•ด์„œ๋„ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ์œผ๋กœ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์œ ๋‹ˆ์ฝ”๋“œ์—์„œ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„Œ์„ผ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•œ ๋””์ฝ”๋”
์กฐํ•ฉ์€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ UTF-8 ๋””์ฝ”๋”ฉ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…ํ™•ํ•˜๊ฒŒ ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์€ ์ •ํ™•ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ๋‹ˆ์ฝ”๋“œ + utf-8์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
๋ฐ”์ดํŠธ ํ•ด์„.

๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์„ ๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด. ๋‚˜๋Š” ์™„์ „ํ•œ ICU๊ฐ€ ์•„๋งˆ๋„ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ์ด์˜๋ฅผ ์ œ๊ธฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ฝ”๋“œ ํฌ์ธํŠธ๋ณ„๋กœ ์ด๋ฆ„์„ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€๋งŒ
์‚ฌ์šฉ์„ฑ).

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

>

๋˜ํ•œ ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์žฅ์น˜์—๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„ํ‘œ์ค€ ๋ฌธ์ž ์ง‘ํ•ฉ:

์ด๋Ÿฌํ•œ ๋ฌธ์ž ์ง‘ํ•ฉ์˜ ์กด์žฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด Wasm๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
์‚ฌ๋žŒ๋“ค์ด (๋น„ ASCII ๋ฒ”์œ„) Wasm ์‹๋ณ„์ž๋ฅผ ์“ฐ๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

@rocallahan https://github.com/rocallahan , ๊ทธ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
์ž„์˜์˜ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์œผ๋กœ ๋ฌด์—‡์„ ํ–ˆ์„๊นŒ์š”? ์™€์ฆ˜์ด๋ผ๋ฉด
ASCII๋กœ ์ œํ•œ๋œ ๊ทธ๋Ÿฌํ•œ ํ”Œ๋žซํผ์—์„œ์˜ ๊ตฌํ˜„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ œ์•ˆ๋œ ์‚ฌ์–‘์„ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. (๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€์˜ ๋น„ ASCII ๋ฌธ์ž๋Š” ๋ฌธํ™”์ ์œผ๋กœ ์„ ํ—˜์ ์œผ๋กœ ๊ด€๋ จ์ด ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ˆ˜์ƒํ•œ. ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค์ด ๊ฒฐ์ •ํ•  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.)

๊ฒŒ๋‹ค๊ฐ€ (์–ด๋Š ๋ฐฉํ–ฅ์œผ๋กœ๋“ ) ๋งคํ•‘ํ•  ์ˆ˜ ์—†๋Š” ์บ๋ฆญํ„ฐ์˜ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ์ „ํžˆ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ๊ธธ์„ ๊ฑท๋‹ค ๋ง‰์•˜์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ด๋ก ์  ๊ด€์‹ฌ์‚ฌ์ž…๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ธ ์šฐ๋ ค๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” ์ธ์ฝ”๋”ฉ์— ์˜์กดํ•  ์ˆ˜ ์—†๊ณ  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์„ธ๊ณ„ ์˜

๋น„์œ ๋‹ˆ์ฝ”๋“œ ํ”Œ๋žซํผ์€ ์‹ค์ œ๋กœ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์Šค์ฝ”๋”ฉ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์–ด๋–ค ๊ฒฝ์šฐ์— Wasm ๋ฌธ์ž์—ด์ด ํ”Œ๋žซํผ ๋ฌธ์ž์—ด๊ณผ ์ƒํ˜ธ ์šด์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ์šฐ๋ฆฌ๋Š” ์‹ค์ œ ๋ชจ๋“ˆ ์ฝ”๋“œ๋กœ ์กฐ์ž‘๋œ ๋ฌธ์ž์—ด์˜ ์ธ์ฝ”๋”ฉ์ด ์•„๋‹ˆ๋ผ Wasm ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ž˜๋ชป๋œ ๊ฒฝ์šฐ ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค...) ๊ทธ๋ ‡๋‹ค๋ฉด interop/transcoding์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋งŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Wasm ๋ชจ๋“ˆ์€ ํ”Œ๋žซํผ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ํ”Œ๋žซํผ์€ Wasm ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • Wasm ์ด๋ฆ„์„ ์ถ”์ถœํ•˜๊ณ  ์ธ์‡„ํ•˜๊ฑฐ๋‚˜ ํ”Œ๋žซํผ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์Šคํƒ ์ถ”์  ๋คํ”„).

์˜ค๋ฅธ์ชฝ?

๊ฐ€์ƒ์˜ ๋น„์œ ๋‹ˆ์ฝ”๋“œ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ์ฒ˜์Œ ๋‘ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์กฐ์–ธ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด ๊ฐ€์ ธ์˜จ ์‹๋ณ„์ž๋ฅผ ASCII๋กœ ์ œํ•œํ•˜๋ฉด ํ•„์š”ํ•œ ํŠธ๋žœ์Šค์ฝ”๋”ฉ์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. Wasm ๋ชจ๋“ˆ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋‚ด๋ถ€์ ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒด ์œ ๋‹ˆ์ฝ”๋“œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ --- Wasm ๋ชจ๋“ˆ์˜ ๋‹ซํžŒ ์„ธ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์‹๋ณ„์ž๋ฅผ ASCII๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์‹ค์ œ๋กœ UTF8 ์‹๋ณ„์ž๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด๋ฅผ ํŠธ๋žœ์Šค์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉฐ ์‚ฌ์–‘์—์„œ UTF8์„ ์š”๊ตฌํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๋ˆ„๊ตฐ๊ฐ€์˜ ๋น„ ASCII ๋ฌธ์ž๊ฐ€ ์„ ํ—˜์ ์œผ๋กœ ๊ด€๋ จ์ด ์—†์Œ์„ ์•”์‹œ

๊ทธ๊ฒƒ์€ ๋ฐ€์งš๋งจ ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ์˜ ์ž…์žฅ์€ "๋น„ ASCII ์‹๋ณ„์ž๋ฅผ ์›ํ•˜๋ฉด ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ/์—์„œ ํŠธ๋žœ์Šค์ฝ”๋”ฉ์„ ๊ตฌํ˜„ํ•˜์‹ญ์‹œ์˜ค"์ด๋ฉฐ ๋‹ค๋ฅธ ์‚ฌ์–‘์ธ AFAIK์—์„œ๋Š” "๋ฌธํ™”์ ์œผ๋กœ ์˜์‹ฌ์Šค๋Ÿฝ๋‹ค"๋Š” ๋น„ํŒ์„ ๋ฐ›์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

>

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ธ ์šฐ๋ ค๋ผ๋ฉด, ์šฐ๋ฆฌ๋Š” ๋‹ค์‹œ ํ•œ๋ฒˆ (๋ฐœ์ƒ

  • ๋น„์šฉ) ๊ฑฐ์˜ ๋ชจ๋“  ๋‹ค๋ฅธ ๋น„์šฉ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์šฉ์„ธ๊ณ„์˜ Wasm ์‚ฌ์šฉ์ž ,
    ๋™์ผํ•œ ์ธ์ฝ”๋”ฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ง€์˜ฅ ๊ฐ™์€ ์›น ํ”Œ๋žซํผ์€ ํ†ต๊ณผํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ ๊ฐ€๋Šฅํ•œ ํ•œ ์ž˜ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค.

@tabatkins , ์•„๋‹ˆ, ๋‹ค์‹œ
์ด๋ฏธ ์—ฌ๋Ÿฌ ๋ฒˆ): ๋ชจ๋“  ์ž„๋ฒ ๋”ฉ ์‚ฌ์–‘์€ _will_ ์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•˜๊ณ 
๋ฌธ์ž ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์ด๊ฒƒ์— ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹จ์ง€ ์‹คํ–‰ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค
๊ด€๋ จ๋˜์ง€ ์•Š์€ ๋‘ ๊ฐ€์ง€ ์‚ฌ์ด์—์„œ ์ƒํ˜ธ ์šด์šฉ์„ ์‹œ๋„ํ•œ ๊ฒฝ์šฐ ์ธ์ฝ”๋”ฉ ์งˆ๋ฌธ์—
์—์ฝ” ์‹œ์Šคํ…œ -- ์ด๋ฏธ ๋” ๊นŠ์€ ์ด์œ ๋กœ ์–‘๋ฆฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ๊ณผ์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
์™„์ „ํžˆ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ _์•„๋ฌด๊ฒƒ๋„ ์žƒ์ง€ ์•Š๊ณ _ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์–ป์Šต๋‹ˆ๋‹ค.
๋” ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ Wasm.

๋‹น์‹ ์€ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‚˜๋Š” ๋‹น์‹ ์ด ์ดํ•ดํ•˜๊ณ  ๊ฐ์‚ฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์ตœ๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆํ™” ๋ฐ ๊ณ„์ธตํ™”์˜ ๊ฐ€์น˜
์žฌ์‚ฌ์šฉ. ์ด๋Š” ์‚ฌ์–‘์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

>

๋น„์œ ๋‹ˆ์ฝ”๋“œ ํ”Œ๋žซํผ์€ ์‹ค์ œ๋กœ ํŠธ๋žœ์Šค์ฝ”๋”ฉ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ์— Wasm ๋ฌธ์ž์—ด์ด ํ”Œ๋žซํผ ๋ฌธ์ž์—ด๊ณผ ์ƒํ˜ธ ์šด์šฉ๋˜์–ด์•ผ ํ•˜๋Š”์ง€,
๊ทธ๋ ‡์ง€๋งŒ? ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜์žˆ๋Š” ํ•œ ์šฐ๋ฆฌ๋Š” ์ธ์ฝ”๋”ฉ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์— ์˜ํ•ด ์กฐ์ž‘๋œ ๋ฌธ์ž์—ด์˜ ์ธ์ฝ”๋”ฉ์ด ์•„๋‹Œ Wasm ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ž์—ด
์‹ค์ œ ๋ชจ๋“ˆ ์ฝ”๋“œ. (๊ทธ๊ฒŒ ํ‹€๋ฆฌ๋‹ค๋ฉด ์‚ฌ๊ณผํ• ๊ฒŒ...) ๊ทธ๋Ÿผ ์ƒ๊ฐ๋ฐ–์— ์•ˆ๋‚˜
interop/transcoding์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ:

  • Wasm ๋ชจ๋“ˆ์€ ํ”Œ๋žซํผ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ํ”Œ๋žซํผ์€ Wasm ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • Wasm ์ด๋ฆ„์„ ์ถ”์ถœํ•˜์—ฌ ์ธ์‡„ํ•˜๊ฑฐ๋‚˜ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    ๋ฌธ์ž์—ด, ์˜ˆ๋ฅผ ๋“ค์–ด ์Šคํƒ ์ถ”์ ์„ ๋คํ”„ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅธ์ชฝ?

์˜ˆ. ์ฆ‰, ์‹ค์ œ๋กœ ๋ฌธ์ž์—ด์„ _์‚ฌ์šฉ_ํ•ด์•ผ ํ•  ๋•Œ๋งˆ๋‹ค.

๊ฐ€์ƒ์˜ ๋น„์œ ๋‹ˆ์ฝ”๋“œ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ์ฒ˜์Œ ๋‘ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด
์กฐ์–ธ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ์ „์ฒด์—์„œ ๊ฐ€์ ธ์˜จ ์‹๋ณ„์ž๋ฅผ ์ œํ•œํ•˜์‹ญ์‹œ์˜ค.
๊ฒฝ๊ณ„๊ฐ€ ASCII์ธ ๊ฒฝ์šฐ ํ•„์š”ํ•œ ํŠธ๋žœ์Šค์ฝ”๋”ฉ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. Wasm ๋ชจ๋“ˆ
๋‚ด๋ถ€์ ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒด ์œ ๋‹ˆ์ฝ”๋“œ ์ด๋ฆ„์„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ --- Wasm ๋ชจ๋“ˆ์˜ ๋‹ซํžŒ ์„ธ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
์‹๋ณ„์ž๋ฅผ ASCII๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹ค์ œ๋กœ
UTF8 ์‹๋ณ„์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ์ด๋ฅผ ํŠธ๋žœ์Šค์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๊ณ 
์‚ฌ์–‘์ด UTF8๋กœ ์ง€์ •๋˜์–ด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ œ์•ˆ์— ๋”ฐ๋ผ ASCII๋กœ ์•„๋ฌด๊ฒƒ๋„ ์ œํ•œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค! NS
ํ•ต์‹ฌ ์‚ฌ์–‘์ด ๋” ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•จ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๋งŒ๋“ค๊ณ 
๋‚ด ์ž…์žฅ.

๋ชจ๋“  ์ž„๋ฒ ๋”ฉ ์‚ฌ์–‘์€ _will_ ์ธ์ฝ”๋”ฉ๊ณผ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์ด๊ฒƒ์— ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด๋ณด๋‹ค ๋” ๊นŠ์€ ์ด์œ ๋กœ ์ด๋ฏธ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋‘ ๊ฐœ์˜ ๊ด€๋ จ๋˜์ง€ ์•Š์€ ์—์ฝ” ์‹œ์Šคํ…œ ๊ฐ„์— ์ƒํ˜ธ ์šด์šฉ์„ ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ธ์ฝ”๋”ฉ ์งˆ๋ฌธ์— ๋ถ€๋”ชํž ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋””์Šค์–ด์…ˆ๋ธ”๋Ÿฌ์™€ ๊ฐ™์€ Wasm ์ฒ˜๋ฆฌ ๋„๊ตฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? "์ž„๋ฒ ๋”ฉ ์‚ฌ์–‘" ๋ณ€ํ˜•์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  Wasm ๋ชจ๋“ˆ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ์ง€ ์•Š์„๊นŒ์š”?

์ œ์•ˆ์— ๋”ฐ๋ผ ASCII๋กœ ์•„๋ฌด๊ฒƒ๋„ ์ œํ•œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

์ œ์•ˆ์— ๋”ฐ๋ฅด๋ฉด Wasm ๋ชจ๋“ˆ์€ ASCII๋กœ ์ œํ•œ๋˜์ง€ ์•Š์ง€๋งŒ ๊ตฌํ˜„์ž๊ฐ€ Wasm ๋ชจ๋“ˆ ์™ธ๋ถ€์— ์ •์˜๋œ ๋ชจ๋“  ์‹๋ณ„์ž๋ฅผ ASCII๋กœ ๋งŒ๋“ค๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ(์˜ˆ: ๊ฑฐ์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ), ์ด๋Š” Wasm์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ํˆฌ๊ธฐ.

๊ตฌํ˜„์ž๊ฐ€ ์Šคํƒ ์ถ”์ ์—์„œ ASCII ๋ฌธ์ž๋งŒ ์ธ์‡„ํ•˜๊ณ  ๋ชจ๋“  ๋น„ ASCII ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ? ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ๋Š” ํ•ญ์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์–‘์—์„œ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๊ธ€๊ผด์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  Wasm ์ด๋ฆ„์ด ASCII์ธ Wasm์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ Wasm ์ด๋ฆ„์„ UTF8๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„๊ตฌ์— ์˜ํ•ด ๊ทธ๋Ÿฌํ•œ Wasm ๋ชจ๋“ˆ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋‹นํžˆ ๋ฌดํ•ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์˜ˆ, ์ €๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์‚ฌ์–‘ ์—”์ง€๋‹ˆ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๊ด€์„ฑ์˜ ๊ฐ€์น˜๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ƒํƒœ๊ณ„๊ฐ€ ๋” ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ทœ๋ฒ”์„ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž ์ง‘ํ•ฉ๊ณผ ์ธ์ฝ”๋”ฉ์€ ๋ชจ๋“ˆํ™”์™€ ์„ ํƒ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฐ€์น˜๊ฐ€ ์ผ๊ด€์„ฑ๊ณผ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์˜ ๊ฐ€์น˜๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•œ ์ฃผ์ œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์ˆ˜์‹ญ ๋…„์˜ ์ฆ๊ฑฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์—ญ์‚ฌ์™€์ด ๋งค์šฐ ์Šค๋ ˆ๋“œ์—์„œ ๋ณด์—ฌ์ค€ ๋ช‡ ๊ฐ€์ง€์žˆ๋Š” ๋งŽ์€ ์ „๋ฌธ๊ฐ€์˜ ์ถ”์ฒœ, ๋‚˜๋Š”์˜ ์˜๊ฒฌ์„ ํ‘œํ˜„ํ•˜๊ณ ์žˆ์–ด ๋งŽ์€ ๋ฌด์‹œํ•˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ์„ ์ฃผ์žฅ ํ•  ๋•Œ - ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๋‚˜ ์ž์‹ ์„ ๋ฐ˜๋ณต ๊ณ„์† ์ด์œ  ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์ž์œ ๋ฅผ ํ—ˆ์šฉํ•˜์‹ญ์‹œ์˜ค.

์ด ์ „์ฒด(๊ธด) ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์€ ํ›„ ์ด ํ† ๋ก ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์„ค๋ช…ํ•˜๋Š” ์ด๋ฆ„ ์„น์…˜์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๊ณ  https://github.com/WebAssembly/design/pull ์—์„œ ๊ฐœ์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. UTF-8 ์ธ์ฝ”๋”ฉ ์ด๋ฉฐ, ์ €๋Š” ๋‹จ์ˆœํžˆ ํ•ด๋‹น ์„น์…˜์„ "utf8-names"๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ธ์ฝ”๋”ฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์˜ค๋Š˜๋‚  ๋ชจ๋“  ๊ด€๋ จ ํ”Œ๋žซํผ์—์„œ WASM ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์กฐ์ž‘ํ•˜๋ ค๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋„๊ตฌ๋Š” ์–ด์จŒ๋“  UTF-8์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ UTF-8๋งŒ ๋งํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์šฉ์„œ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ @rossberg-chromium์˜ ์šฐ๋ ค์— ๋ฏผ๊ฐํ•˜๋ฉฐ ์–ด๋Š ์ •๋„ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ์˜ ์•ž๋ถ€๋ถ„์—์„œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ œ์•ˆํ–ˆ๋“ฏ์ด ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ๋น„ํ‘œ์ค€ "ascii-names" ์„น์…˜์ด๋‚˜ ์ƒํƒœ๊ณ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ๋„๊ตฌ๊ฐ€ ์–ด๋–ค ์„น์…˜์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค. DOS์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ DOS ๊ด€๋ จ ์„น์…˜์ด ์žˆ์œผ๋ฉด ์ด๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์ง‘๋‹ˆ๋‹ค. IMO ์ด๋Ÿฌํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ํ•ด์„ํ•˜๋Š” ๊ฒƒ์€ ์žฌ์•™์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(๊ทธ๋Ÿฐ๋ฐ ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ๋ฌธ์ž์—ด์˜ ์ธ์ฝ”๋”ฉ์„ ์‹ค์ˆ˜๋กœ ์žƒ์–ด๋ฒ„๋ฆฌ๊ณ  ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ „์Ÿ ์ด์•ผ๊ธฐ์—์„œ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ๋”์ฐํ•˜๊ณ  ๊ฒฝ๋ จ์ ์ธ ์ฃฝ์Œ์„ ๋งž์ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์ˆ˜๋ฐฑ๋งŒ ๋‹ฌ๋Ÿฌ์˜ ์†์‹ค์„ ์ž…์—ˆ์Šต๋‹ˆ๋‹ค. .)

์ด๋ฆ„ ์„น์…˜(heh)์— ๋Œ€ํ•œ ๋ช…๋ช… ํ‘œ์ค€์„ ์ฑ„ํƒํ•˜์—ฌ ๋ชจ๋‘ "\

@titzer ์˜ˆ, ์‚ฌ์šฉ์ž ์ •์˜ ์„น์…˜์€ UTF8๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋Š” ์ด๊ตญ์ ์ด๊ฑฐ๋‚˜ ์ „๋ฌธํ™”๋œ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์–‘์— ๊ทœ์ •ํ•˜๊ธฐ๋Š” ๊บผ๋ ค์ง€๊ฒ ์ง€๋งŒ: ํ”Œ๋žซํผ์ด ์ž‘๋™ ๋ชจ๋“œ์—์„œ ๋„ˆ๋ฌด ๊ตฌ์ฒด์ ์ด์–ด์„œ UTF-8 ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์— ๋งคํ•‘ํ•˜๋Š” ๋ฐ ์‹ ๊ฒฝ์„ ์“ธ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํ˜ธํ•˜๋Š” ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ด๋ฆ„์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์‚ฌ์šฉ์ž ์ •์˜ ์„น์…˜์ด ํ›จ์”ฌ ๋” ๋งŽ์Šต๋‹ˆ๋‹ค.

์‚ฌ์–‘์—์„œ ํ”Œ๋žซํผ๋ณ„ ์„ธ๋ถ€ ์ •๋ณด์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์ •์˜ ์„น์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋” ์ค‘์ ์„ ๋‘๊ณ  ํ”Œ๋žซํผ ์ž์ฒด ์‚ฌ์–‘์—์„œ ์ด๋Ÿฌํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ •์˜ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ WASM ๋„๊ตฌ ์ฒด์ธ์€ ์ผ์ข…์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@titzer utf8-names ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋ณด๋„ˆ์Šค๋กœ, ๋ธŒ๋ผ์šฐ์ €๋Š” "์ด๋ฆ„"์„ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด "์ด๋ฆ„"(์ด์ „ ํ˜•์‹)๊ณผ "utf8-names"(#984 ํ˜•์‹)๋ฅผ ๋ชจ๋‘ ์‰ฝ๊ฒŒ ์ง€์›ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ „ํ™˜์ด ์›ํ™œํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฐํฌํ•ด์•ผ ํ•˜๋Š” ์‹œ๊ธ‰ํ•จ์„ ๋งŽ์ด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์œ„์—์„œ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ถ„๋ช…ํžˆ ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด, ์ด์ œ BinaryEncoding.md์— ์žˆ๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์ด๋ฆ„์— ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

utf8-names ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ์— @lukewagner ์™€ ๋™์ผํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

@lukewagner @jfbastien ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๊ฒฐ์ •์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•œ ์ผ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์Šค์Šค๋กœ๋ฅผ ๋‚ฉ๋“์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ์ •์‹ ์  ์™œ๊ณก์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์— ๋ง์ด์ฃ  :-)

AFAICT๋Š” ํ˜„์žฌ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ์˜ ๋ฌธ์ž์—ด์ด ํ•ด์„๋˜์ง€ ์•Š์€ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์•„. ๋‚ด ์ƒ๊ฐ์—๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด์˜ ์ธ์ฝ”๋”ฉ์ด ์ด๋ฆ„ ์„น์…˜์ด ์•„๋‹Œ ๋ฐฉ์‹์œผ๋กœ ์ž„๋ฒ ๋”์— ์˜ํ•ด ๋‹จ๋…์œผ๋กœ ์ •์˜๋˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JS๋Š” ํ•ญ์ƒ UTF-8์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ์„น์…˜์€ ์ด๋ฆ„ ์„น์…˜์˜ ์ด๋ฆ„์— ๋ช…์‹œ์  ์ธ์ฝ”๋”ฉ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์งง์€ ๋ฒ„์ „: ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์„ ์–ธ์˜ ์ด๋ฆ„ ์ธ์ฝ”๋”ฉ์€ ํฌํ•จ ํ™˜๊ฒฝ์˜ ์†์„ฑ์ด๊ณ  ์ด๋ฆ„ ์„น์…˜์˜ ์ด๋ฆ„ ์ธ์ฝ”๋”ฉ์€ ์‚ฌ์šฉ์ž ์„น์…˜์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด์— ์˜ํ•ด ๋ช…์‹œ์ ์ž…๋‹ˆ๋‹ค(์˜ˆ: "utf8-names").

์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ๊ดœ์ฐฎ๊ณ  #984๊ฐ€ ๋ณ‘ํ•ฉ๋˜๊ธฐ ์ „์— ์žˆ์—ˆ๋˜ ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค(modulo names => utf8-names ).

์ด๋ฆ„ ์„น์…˜์€ ์ง„์ •ํ•œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ๋งŒํผ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • mojibaked ์ด๋ฆ„ ์„น์…˜์„ ๋กœ๋“œํ•˜๋ฉด ํŽ‘ํ‚คํ•œ Error.stack ๋ฐ ๋””๋ฒ„๊น…์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • mojibaked ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ์ž„๋ฒ ๋”ฉ์ด ์ด๋ฏธ ์ด๊ฒƒ์„ ๊ฐ€์ •ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์ง„์ •ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹ ๋ณ€๊ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

UTF-8์„ ๋””์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์‹œํ€€์Šค๋ฅผ U+FFFD๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ฒซ ๋ฒˆ์งธ ์˜ค๋ฅ˜์—์„œ ์ค‘์ง€ํ•ฉ๋‹ˆ๊นŒ? ์ฆ‰, https://encoding.spec.whatwg.org/#utf -8-decode-without-bom ๋˜๋Š” https://encoding.spec.whatwg.org/#utf -8-decode-without-๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋ถ ๋˜๋Š” ์‹คํŒจ. ๋ฆฌ์†Œ์Šค๊ฐ€ ์ด๋ฆ„์— U+FFFD๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ์–ด๋Š ์ชฝ์ด๋“  ๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์„ค๋ช… ๋œ ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์ด๋ฆ„ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์ด UTF-8๋กœ JS ๋ฌธ์ž์—ด๋กœ ๋””์ฝ”๋”ฉ๋˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„, JS ๋ฌธ์ž์—ด์ด ์žˆ๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ ์กฐํšŒ๋Š” Get ์ธก๋ฉด์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

๋‚ด ์ดํ•ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด https://encoding.spec.whatwg.org/#utf -8-decode-without-bom-or-fail์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด ์„ฑ๊ณต์ ์ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ›„ ์ฝ”๋“œ ํฌ์ธํŠธ-์‹œํ€€์Šค ํ‰๋“ฑ์„ ํ™•์ธํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ดํŠธ ์‹œํ€€์Šค ํ‰๋“ฑ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ.

์œ„์˜ ๋…ผ์˜ ํ›„์— ํ•ต์‹ฌ ์‚ฌ์–‘์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์ด๋ฆ„์— ๋Œ€ํ•ด UTF-8 ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ์ด๊ฒƒ์€ utf-8-decode-without-bom-or-fail ๋ฐ codepoint-sequence ๊ฐ™์Œ( ์—”์ง„์ด ๋ฐ”์ดํŠธ ์‹œํ€€์Šค ๊ฐ™์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ )์ด๋ฏ€๋กœ ์—”์ง„์€ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฐ ๊ตญ์ œํ™”์˜ ๋ฌด์„ญ๊ณ  ๊ฐ’๋น„์‹ผ ๋ถ€๋ถ„์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์›น ์ž„๋ฒ ๋”ฉ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹คํ—˜ ํ–ˆ๊ณ  ์ฃผ์š” ์˜ค๋ฒ„ ํ—ค๋“œ๋Š” ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Re: ํ•˜๋“œ์›จ์–ด ISA๋Š” ์ธ์ฝ”๋”ฉ์— ๋Œ€ํ•ด ๋ถˆ๊ฐ€์ง€๋ก ์ ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ํ•˜๋“œ์›จ์–ด๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฏ€๋กœ ๋น„์œ ๊ฐ€ ์ง์ ‘ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค ์‹๋ณ„์ž์ธ x86์˜ cpuid๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์„ ์•Œ๊ณ  ์žˆ๋Š” ํ•œ ๊ณณ์€ UTF-8์ด๋ผ๋Š” ํŠน์ • ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • Re: Layering: ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๊ณ„์ธตํ™”์™€ ๋ชจ๋“ˆํ™”๊ฐ€ ๊ทธ ์ž์ฒด๊ฐ€ ๋ชฉ์ ์ด ์•„๋‹ˆ๋ผ ์ˆ˜๋‹จ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•ต์‹ฌ ์‚ฌ์–‘์—์„œ LEB128์„ ๊น”๋”ํ•˜๊ฒŒ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋” ํฐ ๊ณ„์ธตํ™”์™€ ๋ชจ๋“ˆํ™”๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. LEB128์€ ํ‹€๋ฆผ์—†์ด ์›น ์‚ฌ์šฉ ์‚ฌ๋ก€์— ํŽธํ–ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Re: "์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ": ์ œ๊ณต๋œ ์˜ˆ๋Š” DOS์ด์ง€๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ์ด๋ฆ„์— ๋Œ€ํ•œ UTF-8 ์š”๊ตฌ ์‚ฌํ•ญ์ด DOS ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ฑฐ๋‚˜ ๋น„์‹ค์šฉ์ ์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • Re: Islands: WebAssembly๋Š” ๋˜ํ•œ ํŠน์ • ์—”๋””์•ˆ์„ ์ง€์ •ํ•˜๊ณ , ๋ถ€๋™ ์†Œ์ˆ˜์  ์ง€์›, 8๋น„ํŠธ ์ฃผ์†Œ ๋‹จ์œ„๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ๋ถ€๋‹ด์ด ๋˜๋Š” ์‹ค์ œ ์„ค์ •์ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‹ค๋ฅธ ์„ ํƒ์„ ํ•ฉ๋‹ˆ๋‹ค. WebAssembly๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต ํ”Œ๋žซํผ์„ ๊ฐ•ํ™”ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ๋•Œ ์ด์™€ ๊ฐ™์€ ์„ ํƒ์„ ํ•ฉ๋‹ˆ๋‹ค.

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

  • Re: ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜ธํ™˜์„ฑ: ์ด ๋ณ€๊ฒฝ์ด ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” JF์˜ ์˜๊ฒฌ์—๋„ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. utf-8-decode-without-bom-or-fail์€ ์ž๋™ ๋™์ž‘ ๋ณ€๊ฒฝ์ด ์—†์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ ํ˜„์žฌ ์•Œ๋ ค์ง„ ๋ชจ๋“  wasm ์ƒ์‚ฐ์ž๋Š” ์ถœ๋ ฅ์„ ์›น ์ž„๋ฒ ๋”ฉ๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค(๋‹ค๋ฅธ ์ž„๋ฒ ๋”ฉ๋„ ์ง€์›ํ•˜๋”๋ผ๋„). ์ด๋ฏธ UTF-8 ๋‚ด์— ๋จธ๋ฌผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

UTF-8 ์ด๋ฆ„์— ๋Œ€ํ•œ ํŠน์ • ์ œ์•ˆ์„ ํ•˜๋Š” PR์ด ์ด์ œ https://github.com/WebAssembly/design/issues/1016์œผ๋กœ ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค

#1016์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

๊ด€๋ จ ๋ฌธ์ œ

jfbastien picture jfbastien  ยท  6์ฝ”๋ฉ˜ํŠธ

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

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

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

frehberg picture frehberg  ยท  6์ฝ”๋ฉ˜ํŠธ