WebAssemblyã®GCçµ±åããããŒãžãã¡ã¢ãªãåç §ã«ãŠã³ãã«çŠç¹ãåœãŠãããã©ãŒãã³ã¹ãå®å šæ§ãããŒã¿ãã«ãªã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³æ§ç¯ãžã®åœ±é¿ãæ¢ããŸãã
WebAssembly GCçµ±åïŒã°ããŒãã«ã©ã³ã¿ã€ã ã®ããã®ãããŒãžãã¡ã¢ãªãšåç §ã«ãŠã³ã
WebAssembly (Wasm) ã¯ãéçºè ãæ§ã ãªããã°ã©ãã³ã°èšèªã§æžãããã³ãŒããããŠã§ããã©ãŠã¶å å€ã§ãã€ãã£ãã«è¿ãé床ã§å®è¡ã§ããããã«ããç»æçãªæè¡ãšããŠç»å ŽããŸãããåæã®èšèšã¯äœã¬ãã«ã®å¶åŸ¡ãšäºæž¬å¯èœãªããã©ãŒãã³ã¹ã«çŠç¹ãåœãŠãŠããŸããããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ (GC) ã®çµ±åã¯éèŠãªé²åãéããŸããããã®æ©èœã«ãããããåºç¯ãªããã°ã©ãã³ã°èšèªãWasmãã¿ãŒã²ããã«ã§ããããã«ãªããã°ããŒãã«ãªç°å¢ã§æŽç·Žããããã¡ã¢ãªå®å šãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ãªãŒããæ¡å€§ããŸãããã®èšäºã§ã¯ãWebAssembly GCã«ããããããŒãžãã¡ã¢ãªãšåç §ã«ãŠã³ãã®ã³ã¢ã³ã³ã»ãããæãäžãããã®æè¡çåºç€ãšã¯ãã¹ãã©ãããã©ãŒã ãœãããŠã§ã¢éçºã®æªæ¥ãžã®åœ±é¿ãæ¢ããŸãã
WebAssemblyã«ããããããŒãžãã¡ã¢ãªã®å¿ èŠæ§
æŽå²çã«ãWebAssemblyã¯ç·åœ¢ã¡ã¢ãªã¢ãã«ã§åäœããŠããŸãããéçºè ããŸãã¯Wasmãã¿ãŒã²ãããšããã³ã³ãã€ã©ããæåã¡ã¢ãªç®¡çã®è²¬ä»»ãè² ã£ãŠããŸããããã®ã¢ãããŒãã¯ãã²ãŒã ãšã³ãžã³ãç§åŠã·ãã¥ã¬ãŒã·ã§ã³ã®ãããªããã©ãŒãã³ã¹ãéèŠãªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ãªããã现ããªå¶åŸ¡ãšäºæž¬å¯èœãªããã©ãŒãã³ã¹ãæäŸããŸãããããããã¡ã¢ãªãªãŒã¯ããã³ã°ãªã³ã°ãã€ã³ã¿ããããã¡ãªãŒããŒãããŒãšãã£ããæåã¡ã¢ãªç®¡çã«åºæã®ãªã¹ã¯ã䌎ããŸããããããã®åé¡ã¯ãã¢ããªã±ãŒã·ã§ã³ã®äžå®å®æ§ãã»ãã¥ãªãã£è匱æ§ããããŠããè€éãªéçºããã»ã¹ã«ã€ãªããå¯èœæ§ããããŸãã
WebAssemblyã®ãŠãŒã¹ã±ãŒã¹ãåæã®ç¯å²ãè¶ ããŠæ¡å€§ããã«ã€ããŠãèªåã¡ã¢ãªç®¡çã«äŸåããèšèªããµããŒãããããšããéèŠãé«ãŸããŸãããJavaãPythonãC#ãJavaScriptã®ãããªèšèªã¯ãçµã¿èŸŒã¿ã®ã¬ããŒãžã³ã¬ã¯ã¿ãåããŠããŸãããã¡ã¢ãªå®å šæ§ã«æ¬ ããWasmç°å¢ã«å¹ççãã€å®å šã«ã³ã³ãã€ã«ããããšã¯å°é£ã§ãããWebAssembly仿§ãžã®GCã®çµ±åã¯ããã®æ ¹æ¬çãªå¶éã«å¯ŸåŠãããã®ã§ãã
WebAssembly GCã®çè§£
WebAssembly GCææ¡ã¯ã鿥çã«åç §ã§ããå€ã®ç®¡çãå¯èœã«ããæ°ããåœä»€ã»ãããšæ§é åãããã¡ã¢ãªã¢ãã«ãå°å ¥ããŸããããã¯ãWasmãããŒãå²ãåœãŠãªããžã§ã¯ãã䜿çšããèªåè§£æŸãå¿ èŠãšããèšèªããã¹ãã§ããããšãæå³ããŸããGCææ¡ã¯åäžã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¢ã«ãŽãªãºã ãæå®ããã®ã§ã¯ãªããåç §ã«ãŠã³ãããã¬ãŒã¹ã¬ããŒãžã³ã¬ã¯ã¿ã«åºã¥ããã®ãå«ããæ§ã ãªGCå®è£ ããµããŒãã§ãããã¬ãŒã ã¯ãŒã¯ãæäŸããŸãã
ãã®æ žãšãªãWasm GCã¯ãããŒãã«é 眮ã§ããåã®å®çŸ©ãå¯èœã«ããŸãããããã®åã¯ããã£ãŒã«ããæã€æ§é äœã®ãããªããŒã¿æ§é ãé åã®ãããªããŒã¿æ§é ããã®ä»ã®è€éãªããŒã¿åãå«ããããšãã§ããŸããéèŠãªã®ã¯ããããã®åãä»ã®å€ãžã®åç §ãå«ã¿ãGCããã©ããŒã¹ããŠç®¡çã§ãããªããžã§ã¯ãã°ã©ãã®åºç€ã圢æã§ããããšã§ãã
Wasm GCã®äž»èŠæŠå¿µïŒ
- ãããŒãžãåïŒ GCã«ãã£ãŠç®¡çããããªããžã§ã¯ããè¡šãæ°ããåãå°å ¥ãããŸãããããã®åã¯ãæ¢åã®ããªããã£ãåïŒæŽæ°ãæµ®åå°æ°ç¹æ°ãªã©ïŒãšã¯åºå¥ãããŸãã
- åç §åïŒ ãããŒãžããªããžã§ã¯ããžã®åç §ïŒãã€ã³ã¿ïŒããä»ã®ãããŒãžããªããžã§ã¯ãå ã«æ ŒçŽããæ©èœã
- ããŒãå²ãåœãŠïŒ GC管çãªããžã§ã¯ããååšãããããŒãžãããŒãã«ã¡ã¢ãªãå²ãåœãŠãããã®åœä»€ã
- GCæäœïŒ ãªããžã§ã¯ãã®äœæããã£ãŒã«ãã®èªã¿æžãããªããžã§ã¯ãã®äœ¿çšç¶æ³ãGCã«éç¥ãããªã©ãGCãšå¯Ÿè©±ããããã®åœä»€ã
åç §ã«ãŠã³ãïŒWasmçµ±åã®ããã®èåãªGCæŠç¥
Wasm GC仿§ã¯æè»ã§ãããåç §ã«ãŠã³ãã¯ãã®çµ±åã«ç¹ã«é©ããããã°ãã°è°è«ãããæŠç¥ãšããŠæµ®äžããŠããŸããåç §ã«ãŠã³ãã¯ãåãªããžã§ã¯ãã«é¢é£ä»ããããã«ãŠã³ã¿ãŒãæã¡ããã®ãªããžã§ã¯ããæãåç §ã®æ°ã瀺ãã¡ã¢ãªç®¡çæè¡ã§ãããã®ã«ãŠã³ã¿ãŒããŒãã«äœäžãããšããªããžã§ã¯ãã¯å°éäžå¯èœã«ãªããå®å šã«è§£æŸã§ããããšã瀺ããŸãã
åç §ã«ãŠã³ãã®ä»çµã¿ïŒ
- åæåïŒ ãªããžã§ã¯ããäœæããããšããã®åç §ã«ãŠã³ãã¯1ïŒåæåç §ã衚ãïŒã«åæåãããŸãã
- ã€ã³ã¯ãªã¡ã³ãïŒ ãªããžã§ã¯ããžã®æ°ããåç §ãäœæããããšïŒäŸïŒãªããžã§ã¯ããæ°ãã倿°ã«ä»£å ¥ãããåŒæ°ãšããŠæž¡ãïŒããã®åç §ã«ãŠã³ãã¯ã€ã³ã¯ãªã¡ã³ããããŸãã
- ãã¯ãªã¡ã³ãïŒ ãªããžã§ã¯ããžã®åç §ãç Žæ£ãããããç¡å¹ã«ãªã£ãå ŽåïŒäŸïŒå€æ°ãã¹ã³ãŒãå€ã«ãªããä»£å ¥ãåç §ãäžæžãããïŒããªããžã§ã¯ãã®åç §ã«ãŠã³ãã¯ãã¯ãªã¡ã³ããããŸãã
- è§£æŸïŒ ãã¯ãªã¡ã³ãåŸãåç §ã«ãŠã³ãããŒãã«éããå Žåããªããžã§ã¯ãã¯çŽã¡ã«è§£æŸããããã®ã¡ã¢ãªã¯ååãããŸãããªããžã§ã¯ããä»ã®ãªããžã§ã¯ããžã®åç §ãå«ãå Žåãåç §ããããªããžã§ã¯ãã®ã«ãŠã³ãããã¯ãªã¡ã³ããããè§£æŸã®é£éãåŒãèµ·ããå¯èœæ§ããããŸãã
Wasmã«ãããåç §ã«ãŠã³ãã®å©ç¹ïŒ
- äºæž¬å¯èœãªè§£æŸïŒ 宿çã«äºæž¬äžèœã«å®è¡ãããå¯èœæ§ã®ãããã¬ãŒã¹ã¬ããŒãžã³ã¬ã¯ã¿ãšã¯ç°ãªããåç §ã«ãŠã³ãã¯å°éäžå¯èœã«ãªã£ãçŽåŸã«ã¡ã¢ãªãè§£æŸããŸããããã«ããããªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ãã¬ã€ãã³ã·ãéèŠãªã·ã¹ãã ã«ãšã£ãŠäŸ¡å€ã®ãããããæ±ºå®è«çãªããã©ãŒãã³ã¹ãåŸãããŸãã
- ïŒäžéšã®ã³ã³ããã¹ãã«ãããïŒå®è£ ã®ç°¡çŽ ãïŒ ç¹å®ã®èšèªã©ã³ã¿ã€ã ã§ã¯ãç¹ã«åç §ã«ãŠã³ãã®äœããã®åœ¢åŒãæ¢ã«å©çšããŠããæ¢åã®èšèªå®è£ ãæ±ãå Žåãåç §ã«ãŠã³ãã®å®è£ ã¯è€éãªãã¬ãŒã¹ã¢ã«ãŽãªãºã ããã容æã«ãªãããšããããŸãã
- ãã¹ãããã»ã¶ã»ã¯ãŒã«ããããŒãºãªãïŒ åç §ã«ãŠã³ãã¯éåžžãè§£æŸãããæ®µéçã§ãããããäžéšã®ãã¬ãŒã¹GCã¢ã«ãŽãªãºã ã«é¢é£ããé·ããã¹ãããã»ã¶ã»ã¯ãŒã«ããããŒãºãåé¿ããŸãã
åç §ã«ãŠã³ãã®èª²é¡ïŒ
- 埪ç°åç §ïŒ åçŽãªåç §ã«ãŠã³ãã®äž»ãªæ¬ ç¹ã¯ã埪ç°åç §ãåŠçã§ããªãããšã§ãããªããžã§ã¯ãAããªããžã§ã¯ãBãåç §ãããªããžã§ã¯ãBããªããžã§ã¯ãAã«åç §ãæ»ããšãã©ã¡ãã®ãªããžã§ã¯ããžã®å€éšåç §ãååšããªãå Žåã§ããåç §ã«ãŠã³ãããŒãã«ãªãããšã¯ãããŸãããããã«ããã¡ã¢ãªãªãŒã¯ãçºçããŸãã
- ãªãŒããŒãããïŒ åç §ã«ãŠã³ãã®ã€ã³ã¯ãªã¡ã³ããšãã¯ãªã¡ã³ãã¯ãç¹ã«å€æ°ã®äžæçãªåç §ãããã·ããªãªã§ã¯ãããã©ãŒãã³ã¹ãªãŒããŒããããæãå¯èœæ§ããããŸãããã¹ãŠã®ä»£å ¥ãŸãã¯ãã€ã³ã¿æäœã¯ãã¢ãããã¯ãªã€ã³ã¯ãªã¡ã³ã/ãã¯ãªã¡ã³ãæäœãå¿ èŠãšããå¯èœæ§ããããããã¯ã³ã¹ãããããå ŽåããããŸãã
- åæå®è¡ã®åé¡ïŒ ãã«ãã¹ã¬ããç°å¢ã§ã¯ãç«¶åç¶æ ãé²ãããã«åç §ã«ãŠã³ãã®æŽæ°ã¯ã¢ãããã¯ã§ããå¿ èŠããããŸããããã«ã¯ã¢ãããã¯æäœã®äœ¿çšãå¿ èŠã§ãããéã¢ãããã¯ãªæäœãããé ããªãå¯èœæ§ããããŸãã
埪ç°åç §ã®åé¡ã軜æžããããã«ããã€ããªããã¢ãããŒãããã°ãã°æ¡çšãããŸããããã«ã¯ããµã€ã¯ã«ãã¯ãªãŒã³ã¢ããããããã®å®æçãªãã¬ãŒã¹GCãããªããžã§ã¯ãã®åç §ã«ãŠã³ãã«å¯äžããããµã€ã¯ã«ãå£ãããã«äœ¿çšã§ãã匱åç §ã®ãããªãã¯ããã¯ãå«ãŸããå ŽåããããŸããWebAssembly GCææ¡ã¯ããã®ãããªãã€ããªããæŠç¥ã«å¯Ÿå¿ã§ããããã«èšèšãããŠããŸãã
ã¢ã¯ã·ã§ã³äžã®ãããŒãžãã¡ã¢ãªïŒèšèªããŒã«ãã§ãŒã³ãšWasm
Wasm GCã®çµ±åãç¹ã«åç §ã«ãŠã³ãããã®ä»ã®ãããŒãžãã¡ã¢ãªãã©ãã€ã ã®ãµããŒãã¯ã人æ°ã®ããããã°ã©ãã³ã°èšèªãWebAssemblyãã¿ãŒã²ããã«ããæ¹æ³ã«å€§ããªåœ±é¿ãäžããŸãã以åã¯Wasmã®æåã¡ã¢ãªç®¡çã«å¶çŽãããŠããèšèªããŒã«ãã§ãŒã³ã¯ã now Wasm GCãæŽ»çšããŠãããæ £çšçã§å¹ççãªã³ãŒããçæã§ããŸãã
èšèªãµããŒãã®äŸïŒ
- Java/JVMèšèªïŒScalaãKotlinïŒïŒ Javaä»®æ³ãã·ã³ïŒJVMïŒã§å®è¡ãããèšèªã¯ãæŽç·Žãããã¬ããŒãžã³ã¬ã¯ã¿ã«å€§ããäŸåããŠããŸããWasm GCã«ãããæåã¡ã¢ãªç®¡çãšãã¥ã¬ãŒã·ã§ã³ã®ä»¥åã®è©Šã¿ãšæ¯èŒããŠãããã©ãŒãã³ã¹ãšã¡ã¢ãªå®å šæ§ãå€§å¹ ã«åäžããç¶æ ã§ãå®å šãªJVMã©ã³ã¿ã€ã ãšJavaã¢ããªã±ãŒã·ã§ã³ãWebAssemblyã«ç§»æ€ããããšãå¯èœã«ãªããŸããCheerpJã®ãããªããŒã«ããJWebAssemblyã³ãã¥ããã£å ã®ç¶ç¶çãªåãçµã¿ããããã®éãæ¢æ±ããŠããŸãã
- C#/.NETïŒ åæ§ã«ãå ç¢ãªãããŒãžãã¡ã¢ãªã·ã¹ãã ãåãã.NETã©ã³ã¿ã€ã ã¯ãWasm GCãã倧ããªæ©æµãåããããšãã§ããŸãããããžã§ã¯ãã¯ã.NETã¢ããªã±ãŒã·ã§ã³ãšMonoã©ã³ã¿ã€ã ãWebAssemblyã«ããããããšãç®æããŠãããããå€ãã®.NETéçºè ãWebããã®ä»ã®Wasmç°å¢ã§ã¢ããªã±ãŒã·ã§ã³ããããã€ã§ããããã«ãªããŸãã
- Python/Ruby/PHPïŒ èªåã¡ã¢ãªç®¡çãè¡ãã€ã³ã¿ããªã¿èšèªã¯ãWasm GCã®æåãªåè£ã§ãããããã®èšèªãWasmã«ç§»æ€ããããšã§ãã¹ã¯ãªããã®å®è¡é床ãåäžããJavaScriptå®è¡ãäžååãŸãã¯æãŸãããªãã³ã³ããã¹ãã§ã®äœ¿çšãå¯èœã«ãªããŸããPythonïŒEmscriptenã®ãããªã©ã€ãã©ãªã䜿çšããWasm GCæ©èœãçµã¿èŸŒãããã«é²åããŠããïŒããã®ä»ã®åçèšèªãå®è¡ããããã®åãçµã¿ã¯ããã®æ©èœã«ãã£ãŠåŒ·åãããŠããŸãã
- RustïŒ Rustã®ããã©ã«ãã®ã¡ã¢ãªå®å
šæ§ã¯ããã®æææš©ãšåçšã·ã¹ãã ïŒã³ã³ãã€ã«æãã§ãã¯ïŒã«ãã£ãŠéæãããŸããããªãã·ã§ã³ã®GCãæäŸããŸããGC管çèšèªãšã®çµ±åãåçåä»ãã®æŽ»çšãæçãªã·ããªãªã§ã¯ãRustãWasm GCãšé£æºããããæ¡çšãããããèœåãæ¢æ±ãããå¯èœæ§ããããŸããã³ã¢Wasm GCææ¡ã¯ãRustã®`Rc
`ïŒåç §ã«ãŠã³ããã€ã³ã¿ïŒããã³`Arc `ïŒã¢ãããã¯åç §ã«ãŠã³ããã€ã³ã¿ïŒã«æŠå¿µçã«é¡äŒŒããåç §åããã°ãã°äœ¿çšããŠãããçžäºéçšæ§ãä¿é²ããŸãã
ãã€ãã£ãGCæ©èœãæã€èšèªãWebAssemblyã«ã³ã³ãã€ã«ã§ããèœåã¯ãWasmã®ç·åœ¢ã¡ã¢ãªã®äžã«GCããšãã¥ã¬ãŒããããããªä»¥åã®ã¢ãããŒãã«é¢é£ããè€éããšãªãŒããŒããããå€§å¹ ã«åæžããŸããããã«ããã以äžã®ãããªçµæãåŸãããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒ ãã€ãã£ãGCå®è£ ã¯ãéåžžãããããã®èšèªã«å¯ŸããŠé«åºŠã«æé©åãããŠããããšãã¥ã¬ãŒãããããœãªã¥ãŒã·ã§ã³ãããåªããããã©ãŒãã³ã¹ãçºæ®ããŸãã
- ãã€ããªãµã€ãºã®åæžïŒ Wasmã¢ãžã¥ãŒã«å ã«åå¥ã®GCå®è£ ãå¿ èŠãšããªããªãããšã§ããã€ããªãµã€ãºãå°ããããããšãã§ããŸãã
- 匷åãããçžäºéçšæ§ïŒ å ±éã®ã¡ã¢ãªç®¡çã®çè§£ãå ±æããå ŽåãWasmã«ã³ã³ãã€ã«ãããç°ãªãèšèªéã®ã·ãŒã ã¬ã¹ãªçžäºäœçšãããéæå¯èœã«ãªããŸãã
ã°ããŒãã«ãªåœ±é¿ãšå°æ¥ã®èŠéã
WebAssemblyãžã®GCã®çµ±åã¯ãåãªãæè¡ç匷åã§ã¯ãããŸããããœãããŠã§ã¢éçºãšå±éã«åºç¯ãªã°ããŒãã«ãªåœ±é¿ãäžããŸãã
1. ãŠã§ãããã³ãã以éã§ã®é«æ°Žæºèšèªã®æ°äž»åïŒ
äžçäžã®éçºè ãç¹ã«èªåã¡ã¢ãªç®¡çãåãã髿°Žæºèšèªã«æ £ããŠãã人ã ã«ãšã£ãŠãWasm GCã¯WebAssemblyéçºãžã®åå ¥éå£ãäœãããŸãã圌ãã¯ä»ãæ¢åã®èšèªã®å°éç¥èãšãšã³ã·ã¹ãã ãæŽ»çšããŠãæ°èåžå Žã®äœé»åããã€ã¹äžã®ãŠã§ããã©ãŠã¶ãããæŽç·ŽããããµãŒããŒãµã€ãWasmã©ã³ã¿ã€ã ãŸã§ã倿§ãªç°å¢ã§å®è¡ã§ãã匷åã§ããã©ãŒãã³ã¹ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
2. ã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³éçºã®å®çŸïŒ
WebAssemblyãæçããã«ã€ããŠããµãŒããŒãµã€ãã¢ããªã±ãŒã·ã§ã³ããšããžã³ã³ãã¥ãŒãã£ã³ã°ãçµã¿èŸŒã¿ã·ã¹ãã ã®ããã®æ®éçãªã³ã³ãã€ã«ã¿ãŒã²ãããšããŠãŸããŸã䜿çšãããŠããŸããWasm GCã«ããã管çèšèªã§åäžã®ã³ãŒãããŒã¹ãäœæããå€§å¹ ãªå€æŽãªãã«ãããã®å€æ§ãªãã©ãããã©ãŒã ã«å±éããããšãå¯èœã«ãªããŸããããã¯ãéçºå¹çãšããŸããŸãªéçšã³ã³ããã¹ãã§ã®ã³ãŒãåå©çšãç®æãã°ããŒãã«äŒæ¥ã«ãšã£ãŠéåžžã«äŸ¡å€ããããŸãã
3. ããè±ããªãŠã§ããšã³ã·ã¹ãã ã®è²æïŒ
PythonãJavaãC#ãªã©ã®èšèªã§æžãããè€éãªã¢ããªã±ãŒã·ã§ã³ããã©ãŠã¶å ã§å®è¡ã§ããèœåã¯ããŠã§ãããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã«æ°ããªå¯èœæ§ãéããŸãããŠãŒã¶ãŒã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããã€ã¹ããŒããŠã§ã¢ã«é¢ä¿ãªãããã©ãŠã¶ã§çŽæ¥å®è¡ãããé«åºŠãªããŒã¿åæããŒã«ã倿©èœIDEããŸãã¯è€éãªç§åŠçå¯èŠåãã©ãããã©ãŒã ãæ³åããŠã¿ãŠãã ããããããã¯ãã¹ãŠWasm GCã«ãã£ãŠåŒ·åãããŸãã
4. ã»ãã¥ãªãã£ãšå ç¢æ§ã®åäžïŒ
ãããŒãžãã¡ã¢ãªã¯ããã®æ§è³ªäžãã»ãã¥ãªãã£è匱æ§ã«ã€ãªããå¯èœæ§ã®ããäžè¬çãªã¡ã¢ãªå®å šæ§ãã°ã®ãªã¹ã¯ãå€§å¹ ã«è»œæžããŸããããåºç¯ãªèšèªã®ããã«ã¡ã¢ãªãåŠçããæšæºåãããæ¹æ³ãæäŸããããšã«ãããWasm GCã¯äžçäžã§ããå®å šã§å ç¢ãªã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«è²¢ç®ããŸãã
5. Wasmã«ãããåç §ã«ãŠã³ãã®é²åïŒ
WebAssembly仿§ã¯çããæšæºã§ãããé²è¡äžã®è°è«ã¯GCãµããŒãã®æŽç·Žã«çŠç¹ãåœãŠãŠããŸããå°æ¥ã®çºå±ã«ã¯ããµã€ã¯ã«ã®åŠçãããã©ãŒãã³ã¹ã®ããã®åç §ã«ãŠã³ãæäœã®æé©åãç°ãªãGCæŠç¥ã䜿çšããããGCã䜿çšããªãWasmã¢ãžã¥ãŒã«éã®ã·ãŒã ã¬ã¹ãªçžäºéçšæ§ã®ç¢ºä¿ã®ããã®ããæŽç·Žãããã¡ã«ããºã ãå«ãŸããå¯èœæ§ããããŸããæ±ºå®è«çãªããããã£ãæã€åç §ã«ãŠã³ããžã®çŠç¹ã¯ãWasmãäžçäžã®æ§ã ãªããã©ãŒãã³ã¹éèŠã®çµã¿èŸŒã¿ããã³ãµãŒããŒãµã€ãã¢ããªã±ãŒã·ã§ã³ã®æåãªåè£ãšããŠäœçœ®ã¥ããŠããŸãã
çµè«
åç §ã«ãŠã³ããäž»èŠãªãµããŒãã¡ã«ããºã ãšããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®çµ±åã¯ãWebAssemblyã«ãšã£ãŠæ¥µããŠéèŠãªé²æ©ã衚ããŸããããã¯ãäžçäžã®éçºè ã«ãšã£ãŠWasmãšã³ã·ã¹ãã ãžã®ã¢ã¯ã»ã¹ãæ°äž»åããããåºç¯ãªããã°ã©ãã³ã°èšèªãå¹ççãã€å®å šã«ã³ã³ãã€ã«ã§ããããã«ããŸãããã®é²åã¯ããŠã§ããã¯ã©ãŠãããšããžå šäœã§å®è¡ããããããè€éã§ããã©ãŒãã³ã¹ãé«ããå®å šãªã¢ããªã±ãŒã·ã§ã³ãžã®éãéããŸããWasm GCæšæºãæçããèšèªããŒã«ãã§ãŒã³ããããæ¡çšãç¶ããã«ã€ããŠããã®æ®éçãªã©ã³ã¿ã€ã ãã¯ãããžãŒã®å¯èœæ§ãæå€§éã«æŽ»çšãã驿°çãªã¢ããªã±ãŒã·ã§ã³ã®æ¥å¢ãæåŸ ã§ããŸããåç §ã«ãŠã³ãã®ãããªã¡ã«ããºã ãéããŠã¡ã¢ãªã广çãã€å®å šã«ç®¡çããèœåã¯ã次äžä»£ã®ã°ããŒãã«ãœãããŠã§ã¢ãæ§ç¯ããããã®åºæ¬ã§ãããWebAssemblyã¯ä»ããã®èª²é¡ã«å¯Ÿå¿ã§ããããã«ãªããŸããã