WASIęؙęŗ–ļ¼šWebAssembly Beyond the Web

Mozilla恮3꜈27ꗄ态WebAssemblyć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ļ¼ˆWebAssemblyć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ļ¼‰ć§ć‚ć‚‹WASI恮ęؙęŗ–åŒ–ć®é–‹å§‹ć‚’ē™ŗč”Øć—ć¾ć—ćŸć€‚

ē†ē”±ļ¼š WASMćÆć™ć¹ć¦ć®ćƒžć‚·ćƒ³ć§åŒć˜ć‚³ćƒ¼ćƒ‰ć‚’å®Ÿč”Œć™ć‚‹ćŸć‚ć®é«˜é€Ÿć§ć‚¹ć‚±ćƒ¼ćƒ©ćƒ–ćƒ«ć§å®‰å…ØćŖę–¹ę³•ć‚’ęä¾›ć™ć‚‹ćŸć‚ć€é–‹ē™ŗ者ćÆWebAssemblyć‚’ćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ć®å¤–éƒØ恧ä½æē”Øć—å§‹ć‚ć¾ć—ćŸć€‚ ć—ć‹ć—ć€ćć®ć‚ˆć†ćŖ開ē™ŗć®ćŸć‚ć®å¼·å›ŗćŖåŸŗē›¤ćÆć¾ć ć‚ć‚Šć¾ć›ć‚“ć€‚ ćƒ–ćƒ©ć‚¦ć‚¶ć®å¤–éƒØ恧ćÆć€ć‚·ć‚¹ćƒ†ćƒ ć€ć¤ć¾ć‚Šć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćØ通äæ”ć™ć‚‹ćŸć‚ć®ä½•ć‚‰ć‹ć®ę–¹ę³•ćŒåæ…要恧恙怂 恗恋恗态WebAssemblyćƒ—ćƒ©ćƒƒćƒˆćƒ•ć‚©ćƒ¼ćƒ ć«ćÆć¾ć ć‚ć‚Šć¾ć›ć‚“ć€‚

内容ļ¼š WebAssemblyćÆ态ē‰©ē†ćƒžć‚·ćƒ³ć§ćÆćŖćę¦‚åæµćƒžć‚·ćƒ³ć®ć‚¢ć‚»ćƒ³ćƒ–ćƒ©ćƒ¼ć§ć™ć€‚ ć•ć¾ć–ć¾ćŖć‚¢ćƒ¼ć‚­ćƒ†ć‚Æćƒćƒ£ć§å‹•ä½œć™ć‚‹ćŸć‚ć€ę¦‚åæµOS恌ē•°ćŖ悋ć‚Ŗćƒšćƒ¬ćƒ¼ćƒ†ć‚£ćƒ³ć‚°ć‚·ć‚¹ćƒ†ćƒ ć§å‹•ä½œć™ć‚‹ć«ćÆć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćŒåæ…要恧恙怂

恓悌恌WASI恧恙怂WebAssemblyćƒ—ćƒ©ćƒƒćƒˆćƒ•ć‚©ćƒ¼ćƒ ć®ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć§ć™ć€‚

ē§ćŸć”ćÆć€ęœ€å¤§é™ć®ē§»ę¤ę€§ćØć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć‚’å‚™ćˆćŸWebAssembly恮ēœŸć®ä»²é–“ćØćŖć‚‹ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć®ä½œęˆć«åŠŖć‚ć¦ć„ć¾ć™ć€‚

Whoļ¼š WebAssembly開ē™ŗćƒćƒ¼ćƒ ć®äø€éƒØćØ恗恦态 WASI悒ęؙęŗ–åŒ–ć™ć‚‹ćŸć‚ć«ć‚µćƒ–ć‚°ćƒ«ćƒ¼ćƒ—ć‚’ē·Øęˆć—ć¾ć—ćŸ 怂 ē§ćŸć”ćÆć™ć§ć«čˆˆå‘³ć®ć‚ć‚‹ćƒ‘ćƒ¼ćƒˆćƒŠćƒ¼ć‚’é›†ć‚ć¦ćŠć‚Šć€ę–°ć—ć„ćƒ‘ćƒ¼ćƒˆćƒŠćƒ¼ć‚’ęŽ¢ć—ć¦ć„ć¾ć™ć€‚

ē§ćŸć”ć€ćƒ‘ćƒ¼ćƒˆćƒŠćƒ¼ć€ć‚µćƒćƒ¼ć‚æćƒ¼ćŒć“ć‚Œć‚’é‡č¦ćØ考恈悋ē†ē”±ćÆꬔ恮ćØ恊悊恧恙怂

Mozilla Rļ¼†Dćƒ‡ć‚£ćƒ¬ć‚Æć‚æćƒ¼ć€Sean Whiteļ¼š
怌WebAssemblyćÆ态äŗŗ怅恌ꖰ恗恄ć‚æć‚¤ćƒ—ć®é­…åŠ›ēš„ćŖć‚³ćƒ³ćƒ†ćƒ³ćƒ„ć‚’é…äæ”ć™ć‚‹ę–¹ę³•ć‚’ć™ć§ć«å¤‰ćˆć¦ć„ć¾ć™ć€‚ć“ć‚ŒćÆć€ć‚³ćƒ³ćƒ†ćƒ³ćƒ„é–‹ē™ŗ者ćØć‚ÆćƒŖć‚Ø悤ć‚æćƒ¼ć‚’ę”Æę“ć—ć¾ć™ć€‚ ć“ć‚Œć¾ć§ć€ć™ć¹ć¦ćŒćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ć‚’ä»‹ć—ć¦ę©Ÿčƒ½ć—ć¦ć„ć¾ć—ćŸćŒć€WASI悒ä½æē”Ø恙悋ćØć€ć•ć¾ć–ć¾ćŖå “ę‰€ć§ć‚ˆć‚Šå¤šćć®ćƒ¦ćƒ¼ć‚¶ćƒ¼ćØćƒ‡ćƒć‚¤ć‚¹ćŒWebAssemblyć®ę©ęµć‚’å—ć‘ć‚‹ć“ćØ恫ćŖć‚Šć¾ć™ć€‚

ć‚æć‚¤ćƒ©ćƒ¼ćƒ»ćƒžć‚Æćƒžćƒ¬ćƒ³ć€CTO Fastlyļ¼š
怌WebAssemblyćÆ态ć‚Ø惃ć‚øć‚Æćƒ©ć‚¦ćƒ‰ć§ć‚³ćƒ¼ćƒ‰ć‚’čæ…é€Ÿć‹ć¤å®‰å…Øć«å®Ÿč”Œć™ć‚‹ćŸć‚ć®ćƒ—ćƒ©ćƒƒćƒˆćƒ•ć‚©ćƒ¼ćƒ ć§ć‚ć‚‹ćØč€ƒćˆć¦ć„ć¾ć™ć€‚ ē•°ćŖ悋ē’°å¢ƒļ¼ˆć‚Ø惃ć‚øćØćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ļ¼‰ć«ć‚‚ć‹ć‹ć‚ć‚‰ćšć€WASIć®ćŠć‹ć’ć§ć€å„ćƒ—ćƒ©ćƒƒćƒˆćƒ•ć‚©ćƒ¼ćƒ ć«ć‚³ćƒ¼ćƒ‰ć‚’ē§»ę¤ć™ć‚‹åæ…要ćÆć‚ć‚Šć¾ć›ć‚“ć€‚

ćƒžć‚¤ćƒ«ć‚ŗ惜ćƒŖćƒ³ć‚ŗć€ćƒŽćƒ¼ćƒ‰é‹å–¶å§”å“”ä¼šć®CTOļ¼š
怌WebAssemblyćÆ态ē§»ę¤ę€§ćØć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć‚’ē¶­ęŒć—ćŖćŒć‚‰ć€ćƒć‚¤ćƒ†ć‚£ćƒ–ć«čæ‘ć„é€Ÿåŗ¦ć‚’実ē¾ć—态C悄C ++ćŖ恩恮他恮č؀čŖžć§čؘčæ°ć•ć‚ŒćŸć‚³ćƒ¼ćƒ‰ć‚’再利ē”Ø恙悋ćØ恄恆Nodeć®ęœ€å¤§ć®å•é”Œć®1ć¤ć‚’č§£ę±ŗć§ćć¾ć™ć€‚ WASIęؙęŗ–化ćÆć€ć“ć‚Œć«å‘ć‘ćŸęœ€åˆć®ć‚¹ćƒ†ćƒƒćƒ—ć§ć™ć€‚ć€

norić®å…±åŒčØ­ē«‹č€…ć€ćƒ­ćƒŖćƒ»ćƒ“ć‚©ć‚¹ļ¼š
怌NpmćÆć€ćƒć‚¤ćƒ†ć‚£ćƒ–ć‚³ćƒ¼ćƒ‰ć‚’ć‚µćƒ¼ćƒćƒ¼å“ć®JavaScriptć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ć§å®Ÿč”Œć™ć‚‹ć®ćŒćÆ悋恋恫ē°”å˜ć«ćŖ悋恟悁态npmć‚Øć‚³ć‚·ć‚¹ćƒ†ćƒ ć®WebAssembly恮åÆčƒ½ę€§ć«éžåøøć«čˆˆå„®ć—ć¦ć„ć¾ć™ć€‚ ć“ć®ćƒ—ćƒ­ć‚»ć‚¹ć®ēµęžœć‚’ę„½ć—ćæć«ć—ć¦ć„ć¾ć™ć€‚ć€

恓悌ćÆå¤§ććŖć‚¤ćƒ™ćƒ³ćƒˆć§ć™ļ¼

ē¾åœØ态3恤恮WASIå®Ÿč£…ćŒć‚ć‚Šć¾ć™ć€‚


å®Ÿéš›ć®WASIćƒ‡ćƒ¢ćƒ³ć‚¹ćƒˆćƒ¬ćƒ¼ć‚·ćƒ§ćƒ³ļ¼š


ę¬”ć«ć€ć“ć®ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ćƒ¼ć‚¹ć®å‹•ä½œę–¹ę³•ć«é–¢ć™ć‚‹Mozillać®ęę”ˆć«ć¤ć„ć¦čŖ¬ę˜Žć—ć¾ć™ć€‚

ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćØćÆä½•ć§ć™ć‹ļ¼Ÿ


Cć®ć‚ˆć†ćŖč؀čŖžćÆć€ć‚·ć‚¹ćƒ†ćƒ ćƒŖć‚½ćƒ¼ć‚¹ćø恮ē›“ęŽ„ć‚¢ć‚Æć‚»ć‚¹ć‚’ęä¾›ć™ć‚‹ćØčØ€ć„ć¾ć™ć€‚ 恗恋恗态恓悌ćÆ完å…Ø恫ēœŸå®Ÿć§ćÆć‚ć‚Šć¾ć›ć‚“ć€‚ 恻ćØć‚“ć©ć®ć‚·ć‚¹ćƒ†ćƒ ć§ćÆć€ć“ć‚Œć‚‰ć®č؀čŖžćÆćƒ•ć‚”ć‚¤ćƒ«ć‚’é–‹ć„ćŸć‚Šä½œęˆć—ćŸć‚Šć™ć‚‹ć“ćØćŖ恩恫ćÆē›“ęŽ„ć‚¢ć‚Æć‚»ć‚¹ć§ćć¾ć›ć‚“ć€‚ 恩恆恗恦ļ¼Ÿ

ć“ć‚Œć‚‰ć®ć‚·ć‚¹ćƒ†ćƒ ćƒŖć‚½ćƒ¼ć‚¹ļ¼ˆćƒ•ć‚”ć‚¤ćƒ«ć€ćƒ”ćƒ¢ćƒŖ态惍惃惈ćƒÆćƒ¼ć‚Æꎄē¶šļ¼‰ćÆć€å®‰å®šę€§ćØć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć«ćØć£ć¦é‡č¦ć™ćŽć‚‹ćŸć‚ć§ć™ć€‚

ć‚ć‚‹ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćŒåˆ„ć®ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć®ćƒŖć‚½ćƒ¼ć‚¹ć‚’čŖ¤ć£ć¦ē “å£Šć™ć‚‹ćØ态ć‚Æćƒ©ćƒƒć‚·ćƒ„ć‚’å¼•ćčµ·ć“ć™åÆčƒ½ę€§ćŒć‚ć‚Šć¾ć™ć€‚ 恕悉恫ę‚Ŗ恄恓ćØć«ć€ćƒ—ćƒ­ć‚°ćƒ©ćƒ ļ¼ˆć¾ćŸćÆćƒ¦ćƒ¼ć‚¶ćƒ¼ļ¼‰ćŒä»–恮äŗŗ恮ćƒŖć‚½ćƒ¼ć‚¹ć«ē‰¹ć«ä¾µå…„ć—ćŸå “åˆć€ę©ŸåÆ†ćƒ‡ćƒ¼ć‚æ悒ē›—ć‚€åÆčƒ½ę€§ćŒć‚ć‚Šć¾ć™ć€‚



ć—ćŸćŒć£ć¦ć€ćƒŖć‚½ćƒ¼ć‚¹ć«ć‚¢ć‚Æć‚»ć‚¹ć§ćć‚‹ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćØćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚’åˆ¶å¾”ć™ć‚‹ę–¹ę³•ćŒåæ…要恧恙怂 é•·ć„é–“ć€ć‚·ć‚¹ćƒ†ćƒ é–‹ē™ŗ者ćÆć“ć®ć‚ˆć†ćŖåˆ¶å¾”ć‚’ęä¾›ć™ć‚‹ę–¹ę³•ć‚’č€ƒę”ˆć—ć¾ć—ćŸļ¼šäæč­·ćƒŖćƒ³ć‚°ć€‚

äæč­·ćƒŖćƒ³ć‚°ć‚’ä½æē”Ø恙悋ćØ态OSćÆåŸŗęœ¬ēš„ć«ć‚·ć‚¹ćƒ†ćƒ ćƒŖć‚½ćƒ¼ć‚¹ć®å‘Ø悊恫äæč­·ćƒćƒŖć‚¢ć‚’čØ­å®šć—ć¾ć™ć€‚ ć“ć‚ŒćŒć‚³ć‚¢ć§ć™ć€‚ ćƒ•ć‚”ć‚¤ćƒ«ć®ä½œęˆć€ćƒ•ć‚”ć‚¤ćƒ«ć®ć‚Ŗćƒ¼ćƒ—ćƒ³ć€ćƒćƒƒćƒˆćƒÆćƒ¼ć‚Æꎄē¶šć®ć‚Ŗćƒ¼ćƒ—ćƒ³ćŖć©ć®ę“ä½œć‚’å®Ÿč”Œć§ćć‚‹ć®ćÆ态恝悌恠恑恧恙怂

ćƒ¦ćƒ¼ć‚¶ćƒ¼ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćÆć€ćƒ¦ćƒ¼ć‚¶ćƒ¼ē©ŗ間ćØå‘¼ć°ć‚Œć‚‹ć‚«ćƒ¼ćƒćƒ«å†…ć§å®Ÿč”Œć•ć‚Œć¾ć™ć€‚ ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćŒćƒ•ć‚”ć‚¤ćƒ«ć‚’é–‹ććŸć„å “åˆćÆć€ć‚«ćƒ¼ćƒćƒ«ć‚’č¦ę±‚ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚



恓悌ćÆć€ć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ć®ę¦‚åæµćŒē”Ÿć˜ć‚‹å “ꉀ恧恙怂 ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćŒć‚«ćƒ¼ćƒćƒ«ć«ä½•ć‚‰ć‹ć®ę“ä½œć‚’č¦ę±‚ć™ć‚‹åæ…č¦ćŒć‚ć‚‹å “åˆć€ć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ć‚’é€äæ”ć—ć¾ć™ć€‚ ć‚«ćƒ¼ćƒćƒ«ćÆꎄē¶šć—ć¦ć„ć‚‹ćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚’ćƒć‚§ćƒƒć‚Æć—ć€ć“ć®ćƒ•ć‚”ć‚¤ćƒ«ć«ć‚¢ć‚Æć‚»ć‚¹ć™ć‚‹čرåÆćŒć‚ć‚‹ć‹ć©ć†ć‹ć‚’ē¢ŗčŖć—ć¾ć™ć€‚

恻ćØć‚“ć©ć®ćƒ‡ćƒć‚¤ć‚¹ć§ćÆć€ć‚·ć‚¹ćƒ†ćƒ ćƒŖć‚½ćƒ¼ć‚¹ć«ć‚¢ć‚Æć‚»ć‚¹ć™ć‚‹å”Æäø€ć®ę–¹ę³•ćÆć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ć‚’ä½æē”Ø恙悋恓ćØ恧恙怂



ć‚Ŗćƒšćƒ¬ćƒ¼ćƒ†ć‚£ćƒ³ć‚°ć‚·ć‚¹ćƒ†ćƒ ćÆć€ć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ćøć®ć‚¢ć‚Æć‚»ć‚¹ć‚’ęä¾›ć—ć¾ć™ć€‚ ć—ć‹ć—ć€å„OS恫ē‹¬č‡Ŗć®ć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ćŒć‚ć‚‹å “åˆć€ē•°ćŖć‚‹ćƒćƒ¼ć‚øćƒ§ćƒ³ć®ć‚³ćƒ¼ćƒ‰ć‚’čؘčæ°ć™ć‚‹åæ…要ćÆć‚ć‚Šć¾ć›ć‚“ć‹ļ¼Ÿ å¹ø恄ćŖ恓ćØć«ćć†ć§ćÆć‚ć‚Šć¾ć›ć‚“ć€‚ ć“ć®å•é”ŒćÆć€ęŠ½č±”åŒ–ć‚’ä½æē”Øć—ć¦č§£ę±ŗć•ć‚Œć¾ć™ć€‚

恻ćØ悓恩恮č؀čŖžć«ćÆęؙęŗ–ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖćŒć‚ć‚Šć¾ć™ć€‚ ć‚³ćƒ¼ćƒ‡ć‚£ćƒ³ć‚°ć®éš›ć€ćƒ—ćƒ­ć‚°ćƒ©ćƒžćÆč‡Ŗåˆ†ćŒć©ć®ć‚·ć‚¹ćƒ†ćƒ ē”Ø恫ę›ø恄恦恄悋恋悒ēŸ„悋åæ…要ćÆć‚ć‚Šć¾ć›ć‚“ć€‚ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ćƒ¼ć‚¹ć‚’ä½æē”Ø恙悋恠恑恧恙怂 ę¬”ć«ć€ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ę™‚ć«ć€ćƒ„ćƒ¼ćƒ«ćƒć‚§ćƒ¼ćƒ³ćÆć€ć©ć®ć‚·ć‚¹ćƒ†ćƒ ć«ć©ć®ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹å®Ÿč£…ć‚’ä½æē”Ø恙悋恋悒éøęŠžć—ć¾ć™ć€‚ ć“ć®å®Ÿč£…ćÆ态ć‚Ŗćƒšćƒ¬ćƒ¼ćƒ†ć‚£ćƒ³ć‚°ć‚·ć‚¹ćƒ†ćƒ ć®APIć®é–¢ę•°ć‚’ä½æē”Ø恙悋恟悁态å›ŗ꜉恧恙怂

恓悌ćÆć€ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć®ę¦‚åæµćŒē¾ć‚Œć‚‹å “ꉀ恧恙怂 恟ćØ恈恰态Windowsćƒžć‚·ćƒ³ē”Ø恫printfć‚’ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ć™ć‚‹ćØ态Windows API恌ä½æē”Øć•ć‚Œć¾ć™ć€‚ Macć¾ćŸćÆLinuxē”Øć«ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ć•ć‚Œć¦ć„ć‚‹å “åˆć€POSIX悒ä½æē”Øć—ć¾ć™ć€‚



恟恠恗态恓悌ćÆWebAssemblyć«å•é”Œć‚’å¼•ćčµ·ć“ć—ć¾ć™ć€‚ 恓恓恧ćÆć€ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«äø­ć§ć‚‚ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć‚’ęœ€é©åŒ–ć™ć‚‹OSćŒć‚ć‹ć‚Šć¾ć›ć‚“ć€‚ ć—ćŸćŒć£ć¦ć€WebAssembly恮ęؙęŗ–ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖć®å®Ÿč£…å†…ć§ć€1恤恮OSć®ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć‚’ä½æē”Ø恙悋恓ćØćÆć§ćć¾ć›ć‚“ć€‚



WebAssemblyćÆć€å®Ÿéš›ć®ćƒžć‚·ćƒ³ć§ćÆćŖ恏态 ꦂåæµēš„ćŖćƒžć‚·ćƒ³ć®ć‚¢ć‚»ćƒ³ćƒ–ćƒ©ćƒ¼ć§ć‚ć‚‹ćØę—¢ć«čæ°ć¹ć¾ć—ćŸ 怂 åŒę§˜ć«ć€WebAssembly恫ćÆć€å®Ÿéš›ć®OS恧ćÆćŖćę¦‚åæµć®ćŸć‚ć®ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćŒåæ…要恧恙怂

ćŸć ć—ć€ć“ć®ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćŒćŖćć¦ć‚‚ć€ćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ć®å¤–éƒØ恧WebAssemblyć‚’å®Ÿč”Œć§ćć‚‹ćƒ©ćƒ³ć‚æć‚¤ćƒ ćŒę—¢ć«ć‚ć‚Šć¾ć™ć€‚ å½¼ć‚‰ćÆć©ć†ć‚„ć£ć¦ćć‚Œć‚’ć—ć¾ć™ć‹ļ¼Ÿ 見恦ćæć¾ć—ć‚‡ć†ć€‚

WebAssemblyćÆćƒ–ćƒ©ć‚¦ć‚¶å¤–ć§ć©ć®ć‚ˆć†ć«å‹•ä½œć—ć¾ć™ć‹ļ¼Ÿ


WebAssemblyć‚³ćƒ¼ćƒ‰ć‚’ē”Ÿęˆć™ć‚‹ęœ€åˆć®ćƒ„ćƒ¼ćƒ«ćÆEmscripten恧恗恟怂 ē‰¹å®šć®OSć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć§ć‚ć‚‹POSIX悒WebäøŠć§ć‚ØćƒŸćƒ„ćƒ¬ćƒ¼ćƒˆć—ć¾ć™ć€‚ 恓悌ćÆć€ćƒ—ćƒ­ć‚°ćƒ©ćƒžćŒęؙęŗ–Cćƒ©ć‚¤ćƒ–ćƒ©ćƒŖļ¼ˆlibcļ¼‰ć®é–¢ę•°ć‚’ä½æē”Ø恧恍悋恓ćØć‚’ę„å‘³ć—ć¾ć™ć€‚

ć“ć®ćŸć‚ć€EmscriptenćÆē‹¬č‡Ŗ恮libcå®Ÿč£…ć‚’ä½æē”Øć—ć¾ć™ć€‚ 恓悌ćÆ2恤恮éƒØåˆ†ć«åˆ†ć‹ć‚Œć¦ć„ć¾ć™ć€‚ęœ€åˆć®éƒØ分ćÆWebAssemblyćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć«ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ć•ć‚Œć€ć‚‚ć†1恤ćÆ怌JS-glueć€ć‚³ćƒ¼ćƒ‰ć§å®Ÿč£…ć•ć‚Œć¾ć™ć€‚ 恓恮JSć‚°ćƒ«ćƒ¼ćÆ态OSćØ通äæ”ć—ć¦ć„ć‚‹ćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ć«å‘¼ć³å‡ŗ恗悒送äæ”ć—ć¾ć™ć€‚



åˆęœŸć®WebAssemblyć‚³ćƒ¼ćƒ‰ć®ć»ćØ悓恩ćÆ态Emscriptenć§ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ć•ć‚Œć¦ć„ć¾ć™ć€‚ ć—ćŸćŒć£ć¦ć€äŗŗć€…ćŒćƒ–ćƒ©ć‚¦ć‚¶ćŖ恗恧WebAssemblyć‚’å®Ÿč”Œć—ćŸć„ćØę€ć†ć‚ˆć†ć«ćŖć£ćŸćØćć€å½¼ć‚‰ćÆEmscriptenć‚³ćƒ¼ćƒ‰ć‚’å®Ÿč”Œć—å§‹ć‚ć¾ć—ćŸć€‚

ć—ćŸćŒć£ć¦ć€ć“ć‚Œć‚‰ć®ćƒ©ćƒ³ć‚æ悤惠恧ćÆ态JS-glueć‚³ćƒ¼ćƒ‰ć«å«ć¾ć‚Œć¦ć„ćŸć™ć¹ć¦ć®é–¢ę•°ć«åÆ¾ć—ć¦ē‹¬č‡Ŗć®å®Ÿč£…ć‚’ä½œęˆć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

ć—ć‹ć—ć€å•é”ŒćŒć‚ć‚Šć¾ć™ć€‚ JSć‚°ćƒ«ćƒ¼ć‚³ćƒ¼ćƒ‰ć«ć‚ˆć£ć¦ęä¾›ć•ć‚Œć‚‹ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćÆ态ęؙęŗ–ć¾ćŸćÆ惑惖ćƒŖ惃ć‚Æć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćØ恗恦悂čØ­čØˆć•ć‚Œć¦ć„ć¾ć›ć‚“ć€‚ 恟ćØ恈恰态通åøø恮API恧readć‚ˆć†ć«å‘¼ć³å‡ŗ恙恫ćÆ态JSć‚°ćƒ«ćƒ¼ć‚³ćƒ¼ćƒ‰ćÆ_system3(which, varargs)å‘¼ć³å‡ŗ恗_system3(which, varargs)ä½æē”Øć—ć¾ć™ć€‚



ęœ€åˆć®ćƒ‘ćƒ©ćƒ”ćƒ¼ć‚æćƒ¼ćÆć€åå‰ć®ē•Ŗ号ćØåøø恫äø€č‡“恙悋ꕓꕰ恧恙ļ¼ˆć“ć®ä¾‹ć§ćÆ3ļ¼‰ć€‚

2ē•Ŗē›®ć®ćƒ‘ćƒ©ćƒ”ćƒ¼ć‚æćƒ¼varargs 态 varargsćƒŖć‚¹ćƒˆć—ć¾ć™ć€‚ varargsꕰ恌ē•°ćŖ悋恟悁态 varargsćØå‘¼ć°ć‚Œć¾ć™ć€‚ 恟恠恗态WebAssembly恧ćÆ态åÆå¤‰ę•°ć®å¼•ę•°ć‚’é–¢ę•°ć«ęø”恙恓ćØćÆć§ćć¾ć›ć‚“ć€‚ ćć®ćŸć‚ć€ćć‚Œć‚‰ćÆē·šå½¢ćƒ”ćƒ¢ćƒŖ悒介恗恦送äæ”ć•ć‚Œć¾ć™ćŒć€ć“ć‚ŒćÆ安å…Ø恧ćÆćŖćć€ćƒ¬ć‚øć‚¹ć‚æć‚ˆć‚Šć‚‚ä½Žé€Ÿć§ć™ć€‚

ćƒ–ćƒ©ć‚¦ć‚¶ć®Emscriptenć®å “åˆć€ć“ć‚ŒćÆę­£åøø恧恙怂 恗恋恗态今恧ćÆćƒ©ćƒ³ć‚æ悤惠ćÆ恓悌悒äŗ‹å®ŸäøŠć®ęؙęŗ–ćØ見ćŖ恗态ē‹¬č‡Ŗć®ćƒćƒ¼ć‚øćƒ§ćƒ³ć®JSć‚°ćƒ«ćƒ¼ć‚’å®Ÿč£…ć—ć¦ć„ć¾ć™ć€‚ POSIXć‚ØćƒŸćƒ„ćƒ¬ćƒ¼ć‚·ćƒ§ćƒ³ćƒ¬ć‚¤ćƒ¤ćƒ¼ć®å†…éƒØč©³ē“°ć‚’ć‚ØćƒŸćƒ„ćƒ¬ćƒ¼ćƒˆć—ć¾ć™ć€‚

恓悌ćÆ态Emscripten制ē“„ćŒäøŽćˆć‚‰ć‚Œć‚‹ćØē†ć«ć‹ćŖć£ć¦ć„ć‚‹ć‚³ćƒ¼ćƒ‰ć‚’å†å®Ÿč£…ć™ć‚‹ļ¼ˆćŸćØćˆć°ć€å¼•ę•°ć‚’ćƒ’ćƒ¼ćƒ—å€¤ćØ恗恦ęø”恙ļ¼‰ć“ćØć‚’ę„å‘³ć—ć¾ć™ćŒć€ć“ć‚Œć‚‰ć®ćƒ©ćƒ³ć‚æ悤惠ē’°å¢ƒć«ćÆćć®ć‚ˆć†ćŖ制ē“„ćÆć‚ć‚Šć¾ć›ć‚“ć€‚



ä»Šå¾Œę•°åå¹“ć«ć‚ćŸć£ć¦WebAssemblyć‚Øć‚³ć‚·ć‚¹ćƒ†ćƒ ć‚’ę§‹ēÆ‰ć™ć‚‹å “åˆć€ę¾č‘‰ę–ć§ćÆćŖćå¼·å›ŗćŖåŸŗē›¤ćŒåæ…要恧恙怂 恓悌ćÆć€å®Ÿéš›ć®ęؙęŗ–ćŒć‚ØćƒŸćƒ„ćƒ¬ćƒ¼ć‚·ćƒ§ćƒ³ć‚ØćƒŸćƒ„ćƒ¬ćƒ¼ć‚·ćƒ§ćƒ³ć§ć‚ć‚‹ć“ćØć‚’ę„å‘³ć—ć¾ć™ć€‚

ć—ć‹ć—ć€ć“ć®å “åˆć«é©ē”Øć•ć‚Œć‚‹åŽŸå‰‡ćÆä½•ć§ć™ć‹ļ¼Ÿ

WebAssemblyć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ćƒ¼ć‚¹ćÆć©ć®åŽŸå‰‡ć«å¾“ć†ć¹ćć§ć™ć‹ļ¼Ÿ


WebAssembly恮2恤恮åŸŗęœ¬åŽŸå‰‡ļ¼š


ē§ćŸć”ćÆćƒ–ćƒ©ć‚¦ć‚¶ć‚’č¶…ćˆć¦ć„ć¾ć™ćŒć€ć“ć‚Œć‚‰ć®é‡č¦ćŖåŽŸå‰‡ć‚’äæęŒć—ć¦ć„ć¾ć™ć€‚

恟恠恗态POSIXć‚¢ćƒ—ćƒ­ćƒ¼ćƒćØUnixć‚¢ć‚Æć‚»ć‚¹åˆ¶å¾”ć‚·ć‚¹ćƒ†ćƒ ć§ćÆć€ęœ›ć¾ć—ć„ēµęžœćŒå¾—ć‚‰ć‚Œć¾ć›ć‚“ć€‚ å•é”ŒćŒä½•ć§ć‚ć‚‹ć‹ć‚’č¦‹ć¦ćæć¾ć—ć‚‡ć†ć€‚

ē§»ę¤ę€§


POSIXćÆć€ć‚½ćƒ¼ć‚¹ć‚³ćƒ¼ćƒ‰ć®ē§»ę¤ę€§ć‚’ęä¾›ć—ć¾ć™ć€‚ ē•°ćŖć‚‹ć‚³ćƒ³ćƒ”ćƒ„ćƒ¼ć‚æćƒ¼ē”Ø恫ē•°ćŖć‚‹ćƒćƒ¼ć‚øćƒ§ćƒ³ć®libc悒ä½æē”Øć—ć¦åŒć˜ć‚½ćƒ¼ć‚¹ć‚³ćƒ¼ćƒ‰ć‚’ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ć§ćć¾ć™ć€‚



恗恋恗态WebAssemblyćÆćć‚Œć‚’č¶…ćˆćŖ恑悌恰ćŖć‚Šć¾ć›ć‚“ć€‚ ćŸćć•ć‚“ć®ē•°ćŖć‚‹ć‚·ć‚¹ćƒ†ćƒ ć§å®Ÿč”Œć™ć‚‹ćŸć‚ć«äø€åŗ¦ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ ćƒćƒ¼ć‚æćƒ–ćƒ«ćƒć‚¤ćƒŠćƒŖ恌åæ…要恧恙怂



ć“ć‚Œć«ć‚ˆć‚Šć€ć‚³ćƒ¼ćƒ‰ć®é…åøƒćŒē°”å˜ć«ćŖć‚Šć¾ć™ć€‚

恟ćØćˆć°ć€ćƒć‚¤ćƒ†ć‚£ćƒ–ćƒŽćƒ¼ćƒ‰ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ćŒWebAssembly恧čؘčæ°ć•ć‚Œć¦ć„ć‚‹å “åˆć€ćƒ¦ćƒ¼ć‚¶ćƒ¼ćÆćƒć‚¤ćƒ†ć‚£ćƒ–ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć‚’ä½æē”Øć—ć¦ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ć‚’ć‚¤ćƒ³ć‚¹ćƒˆćƒ¼ćƒ«ć™ć‚‹ćØćć«node-gypć‚’å®Ÿč”Œć™ć‚‹åæ…č¦ćŒćŖ恏态開ē™ŗ者ćÆå¤šę•°ć®ćƒć‚¤ćƒŠćƒŖćƒ•ć‚”ć‚¤ćƒ«ć‚’ę§‹ęˆćŠć‚ˆć³é…åøƒć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć›ć‚“ć€‚

安å…Øꀧ


ć‚³ćƒ¼ćƒ‰ćŒć‚Ŗćƒšćƒ¬ćƒ¼ćƒ†ć‚£ćƒ³ć‚°ć‚·ć‚¹ćƒ†ćƒ ć«å…„åŠ›ć¾ćŸćÆå‡ŗåŠ›ć‚’č¦ę±‚ć™ć‚‹ćØ态OSćÆ通åøø态ꉀ꜉ęØ©ćØć‚°ćƒ«ćƒ¼ćƒ—ć«åŸŗć„ć„ćŸć‚¢ć‚Æć‚»ć‚¹åˆ¶å¾”ć‚·ć‚¹ćƒ†ćƒ ć‚’ä½æē”Øć—ć¦ć€ć“ć®ę“ä½œć®ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć‚’č©•ä¾”ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

恟ćØćˆć°ć€ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćÆćƒ•ć‚”ć‚¤ćƒ«ć‚’é–‹ćć‚ˆć†ć«č¦ę±‚ć—ć¾ć™ć€‚ ćƒ¦ćƒ¼ć‚¶ćƒ¼ć«ćÆć€ć‚¢ć‚Æć‚»ć‚¹ć§ćć‚‹ē‰¹å®šć®ćƒ•ć‚”ć‚¤ćƒ«ć‚»ćƒƒćƒˆćŒć‚ć‚Šć¾ć™ć€‚

ćƒ¦ćƒ¼ć‚¶ćƒ¼ćŒćƒ—ćƒ­ć‚°ćƒ©ćƒ ć‚’čµ·å‹•ć™ć‚‹ćØć€ćć®ćƒ¦ćƒ¼ć‚¶ćƒ¼ć«ä»£ć‚ć£ć¦ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćŒčµ·å‹•ć—ć¾ć™ć€‚ ćƒ¦ćƒ¼ć‚¶ćƒ¼ćŒćƒ•ć‚”ć‚¤ćƒ«ćøć®ć‚¢ć‚Æć‚»ć‚¹ęØ©ć‚’ęŒć£ć¦ć„ć‚‹å “åˆ-ćƒ¦ćƒ¼ć‚¶ćƒ¼ćŒćć®ę‰€ęœ‰č€…ć§ć‚ć‚‹ć‹ć€ćƒ•ć‚”ć‚¤ćƒ«ćøć®ć‚¢ć‚Æć‚»ć‚¹ęØ©ć‚’ęŒć¤ć‚°ćƒ«ćƒ¼ćƒ—ć®äø€éƒØć§ć‚ć‚‹å “åˆ-ćƒ—ćƒ­ć‚°ćƒ©ćƒ ćÆåŒć˜ć‚¢ć‚Æć‚»ć‚¹ęØ©ć‚’ęŒć”ć¾ć™ć€‚



恓悌ćÆć€å¤šćć®äŗŗ恌1å°ć®ć‚³ćƒ³ćƒ”ćƒ„ćƒ¼ć‚æćƒ¼ć§ä½œę„­ć—ć€ē®”ē†č€…ćŒć‚½ćƒ•ćƒˆć‚¦ć‚§ć‚¢ć‚’åˆ¶å¾”ć—ć¦ć„ćŸę˜”ćÆē†ć«ć‹ćŖć£ć¦ć„ćŸćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚’äŗ’恄恫äæč­·ć—ć¾ć™ć€‚ ćć—ć¦ć€äø»ćŖ脅å؁ćÆć€ćƒ•ć‚”ć‚¤ćƒ«ć‚’č¦‹ć¦ć„ć‚‹ä»–ć®ćƒ¦ćƒ¼ć‚¶ćƒ¼ć§ć—ćŸć€‚

ć™ć¹ć¦ćŒå¤‰ć‚ć‚Šć¾ć—ćŸć€‚ ē¾åœØć€ć‚·ć‚¹ćƒ†ćƒ ćÆ通åøøć‚·ćƒ³ć‚°ćƒ«ćƒ¦ćƒ¼ć‚¶ćƒ¼ć§ć™ćŒć€äæ”é ¼ę€§ćŒäøę˜ŽćŖć‚µćƒ¼ćƒ‰ćƒ‘ćƒ¼ćƒ†ć‚£ć®ć‚³ćƒ¼ćƒ‰ć‚’ä½æē”Øć—ć¦ć„ć¾ć™ć€‚ ē¾åœØ态äø»ćŖ脅å؁ćÆ态č‡Ŗåˆ†ć§å®Ÿč”Œć™ć‚‹ć‚³ćƒ¼ćƒ‰ć«ć‚ć‚Šć¾ć™ć€‚

恟ćØćˆć°ć€ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ć®ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖć®å “åˆć€ę–°ć—ć„ćƒ”ćƒ³ćƒ†ćƒŠćŒé–‹å§‹ć•ć‚Œć¦ć„ć¾ć™ļ¼ˆć‚Ŗćƒ¼ćƒ—ćƒ³ć‚½ćƒ¼ć‚¹ć®å “åˆćŒć‚ˆćć‚ć‚Šć¾ć™ļ¼‰ć€‚ å½¼ćÆčŖ å®ŸćŖę“»å‹•å®¶ć‹ć‚‚ć—ć‚Œć¾ć›ć‚“...ć¾ćŸćÆä¾µå…„č€…ć‹ć‚‚ć—ć‚Œć¾ć›ć‚“ć€‚ ć¾ćŸć€ć‚·ć‚¹ćƒ†ćƒ ć«ć‚¢ć‚Æć‚»ć‚¹ć§ćć‚‹å “åˆļ¼ˆćŸćØćˆć°ć€ćƒ•ć‚”ć‚¤ćƒ«ć‚’é–‹ć„ć¦ćƒćƒƒćƒˆćƒÆćƒ¼ć‚ÆēµŒē”±ć§é€äæ”ć™ć‚‹ę©Ÿčƒ½ļ¼‰ć€ć“ć®ć‚³ćƒ¼ćƒ‰ćÆå¤§ććŖęå®³ć‚’å¼•ćčµ·ć“ć™åÆčƒ½ę€§ćŒć‚ć‚Šć¾ć™ć€‚


ē–‘ć‚ć—ć„ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ ļ¼šē§ćÆćƒ¦ćƒ¼ć‚¶ćƒ¼Bobć§åƒć„ć¦ć„ć¾ć™ć€‚ å½¼ć®ćƒ“ćƒƒćƒˆć‚³ć‚¤ćƒ³č²”åøƒć‚’開恑恦悂恄恄恧恙恋ļ¼Ÿ
ć‚³ć‚¢ ļ¼šćƒœćƒ–恮ļ¼Ÿ ć‚‚ć”ć‚ć‚“ļ¼
ē–‘ć‚ć—ć„ć‚¢ćƒ—ćƒŖ ļ¼šć™ć°ć‚‰ć—恄ļ¼ 惍惃惈ćƒÆćƒ¼ć‚Æꎄē¶šćÆ恩恆恧恙恋ļ¼Ÿ

ć“ć‚ŒćŒć€ć‚µćƒ¼ćƒ‰ćƒ‘ćƒ¼ćƒ†ć‚£ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ恮ä½æē”ØćŒå±é™ŗćŖē†ē”±ć§ć™ć€‚ WebAssemblyćÆć€ć‚µćƒ³ćƒ‰ćƒœćƒƒć‚Æć‚¹ć‚’ä»‹ć—ćŸåˆ„ć®ę–¹ę³•ć§ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć‚’ęä¾›ć—ć¾ć™ć€‚ 恓恓恧ćÆć€ć‚³ćƒ¼ćƒ‰ćÆOSćØē›“ꎄ通äæ”ć§ćć¾ć›ć‚“ć€‚ ć—ć‹ć—ć€ć‚·ć‚¹ćƒ†ćƒ ćƒŖć‚½ćƒ¼ć‚¹ć«ć‚¢ć‚Æć‚»ć‚¹ć™ć‚‹ę–¹ę³•ćÆļ¼Ÿ ćƒ›ć‚¹ćƒˆļ¼ˆćƒ–ćƒ©ć‚¦ć‚¶ćƒ¼ć¾ćŸćÆwasmćƒ©ćƒ³ć‚æ悤惠ļ¼‰ćÆć€ć‚³ćƒ¼ćƒ‰ćŒä½æē”Øć§ćć‚‹ę©Ÿčƒ½ć‚’ć‚µćƒ³ćƒ‰ćƒœćƒƒć‚Æć‚¹åŒ–ć—ć¾ć™ć€‚

恓悌ćÆć€ćƒ›ć‚¹ćƒˆćŒćƒ—ćƒ­ć‚°ćƒ©ćƒ ć«ć‚ˆć£ć¦ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć®ę©Ÿčƒ½ć‚’åˆ¶é™ć™ć‚‹ć“ćØć‚’ę„å‘³ć—ć€ćƒ¦ćƒ¼ć‚¶ćƒ¼ć«ä»£ć‚ć£ć¦å˜ć«č”Œå‹•ć™ć‚‹ć“ćØ悒čرåÆć›ćšć€å®Œå…ØćŖćƒ¦ćƒ¼ć‚¶ćƒ¼ęØ©é™ć‚’ęŒć¤ć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ć‚’å¼•ćčµ·ć“ć—ć¾ć™ć€‚

ć‚µćƒ³ćƒ‰ćƒœćƒƒć‚Æć‚¹ć‚’å˜ē‹¬ć§ä½æē”Øć—ć¦ć‚‚ć‚·ć‚¹ćƒ†ćƒ ćÆ安å…Ø恫ćŖć‚Šć¾ć›ć‚“ć€‚ćƒ›ć‚¹ćƒˆćÆć™ć¹ć¦ć®ę©Ÿčƒ½ć‚’ć‚µćƒ³ćƒ‰ćƒœćƒƒć‚Æć‚¹ć«č»¢é€ć§ćć¾ć™ćŒć€ćć®å “åˆćÆäæč­·ćŒęä¾›ć•ć‚Œć¾ć›ć‚“怂 ć—ć‹ć—ć€ć‚µćƒ³ćƒ‰ćƒœćƒƒć‚Æć‚¹ćÆć€ćƒ›ć‚¹ćƒˆćŒć‚ˆć‚Šå®‰å…ØćŖć‚·ć‚¹ćƒ†ćƒ ć‚’ę§‹ēÆ‰ć™ć‚‹ćŸć‚ć®å°‘ćŖ恏ćØ悂ē†č«–ēš„ćŖę©Ÿä¼šć‚’ęä¾›ć—ć¾ć™ć€‚


WA ļ¼šOSćØć‚„ć‚Šå–ć‚Šć™ć‚‹ćŸć‚ć®å®‰å…ØćŖćŠć‚‚ć”ć‚ƒļ¼ˆsafe_write态safe_readļ¼‰ćŒć‚ć‚Šć¾ć™ć€‚
ē–‘ć‚ć—ć„ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ ļ¼šć„ć¾ć„ć¾ć—ć„...惍惃惈ćƒÆćƒ¼ć‚Æćø恮ē§ć®ć‚¢ć‚Æć‚»ć‚¹ćÆ恩恓恧恙恋ļ¼Ÿ

ć©ć®ć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć§ć‚‚ć€ć“ć‚Œć‚‰ć®2ć¤ć®åŽŸå‰‡ć«å¾“ć†åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ ē§»ę¤ę€§ćÆć‚½ćƒ•ćƒˆć‚¦ć‚§ć‚¢ć®é–‹ē™ŗćØ配åøƒć‚’å®¹ę˜“ć«ć—ć€ćƒ›ć‚¹ćƒˆćØćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚’äæč­·ć™ć‚‹ćƒ„ćƒ¼ćƒ«ćŒēµ¶åÆ¾ć«åæ…要恧恙怂

ćć®ć‚ˆć†ćŖć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ćƒ¼ć‚¹ćÆć©ć®ć‚ˆć†ć«č¦‹ćˆć‚‹ć¹ćć§ć™ć‹ļ¼Ÿ


恓悌悉2ć¤ć®é‡č¦ćŖåŽŸå‰‡ć‚’č€ƒćˆć‚‹ćØ态WebAssemblyć‚·ć‚¹ćƒ†ćƒ ć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ćÆć©ć†ć‚ć‚‹ć¹ćć§ć—ć‚‡ć†ć‹ļ¼Ÿ

恓悌ćÆęؙęŗ–åŒ–ćƒ—ćƒ­ć‚»ć‚¹ć§ē¢ŗčŖć—ć¾ć™ć€‚ ćŸć ć—ć€é–‹å§‹ć®ęę”ˆćŒć‚ć‚Šć¾ć™ć€‚





wasi-core恫ćÆä½•ćŒå«ć¾ć‚Œć¾ć™ć‹ļ¼Ÿ 恓悌悉ćÆć™ć¹ć¦ć®ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć«åæ…要ćŖåŸŗęœ¬ć§ć™ć€‚ ć“ć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ćÆć€ćƒ•ć‚”ć‚¤ćƒ«ć€ćƒćƒƒćƒˆćƒÆćƒ¼ć‚Æꎄē¶šć€ć‚Æ惭惃ć‚Æć€ä¹±ę•°ćŖ恩态POSIX恮恻ćØć‚“ć©ć®ę©Ÿčƒ½ć‚’ć‚«ćƒćƒ¼ć—ć¾ć™ć€‚

åŸŗęœ¬ēš„ćŖę©Ÿčƒ½ć®å¤šććÆ态非åøøć«ć‚ˆćä¼¼ćŸć‚¢ćƒ—ćƒ­ćƒ¼ćƒć‚’åæ…要ćØć—ć¾ć™ć€‚ 恟ćØ恈恰态POSIXćƒ•ć‚”ć‚¤ćƒ«ęŒ‡å‘ć®ć‚¢ćƒ—ćƒ­ćƒ¼ćƒćÆ态ć‚Ŗćƒ¼ćƒ—ćƒ³ć€ć‚Æćƒ­ćƒ¼ć‚ŗ态čŖ­ćæå–ć‚Šć€ćŠć‚ˆć³ę›øćč¾¼ćæć®ć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ć§ęä¾›ć•ć‚Œć€ä»–ć®ć™ć¹ć¦ćÆäøŠčØ˜ć®č£œå®Œć§ć™ć€‚

恗恋恗态wasi-corećÆć™ć¹ć¦ć®POSIXę©Ÿčƒ½ć‚’ć‚«ćƒćƒ¼ć—ć¦ć„ć‚‹ć‚ć‘ć§ćÆć‚ć‚Šć¾ć›ć‚“ć€‚ 恟ćØćˆć°ć€ćƒ—ćƒ­ć‚»ć‚¹ć®ę¦‚åæµćÆWebAssemblyć«ę˜Žē¢ŗć«é©åˆć—ć¾ć›ć‚“ć€‚ ć•ć‚‰ć«ć€ć™ć¹ć¦ć®WebAssemblyć‚Øćƒ³ć‚øćƒ³ćŒforkćŖć©ć®ćƒ—ćƒ­ć‚»ć‚¹ę“ä½œć‚’ć‚µćƒćƒ¼ćƒˆć™ć‚‹åæ…č¦ćŒć‚ć‚‹ć“ćØćÆ꘎悉恋恧恙怂 恗恋恗态 forkęؙęŗ–åŒ–ć‚‚åÆčƒ½ć«ć—ćŸć„ćØč€ƒćˆć¦ć„ć¾ć™ć€‚



Rustć®ć‚ˆć†ćŖč؀čŖžćÆ态ęؙęŗ–ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ恧wasi-core悒ē›“ꎄä½æē”Øć—ć¾ć™ć€‚ 恟ćØ恈恰态Rust恋悉恮openćÆ态 __wasi_path_openć‚’å‘¼ć³å‡ŗ恗恦WebAssemblyć«ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ć™ć‚‹ćØćć«å®Ÿč£…ć•ć‚Œć¾ć™ć€‚

CćŠć‚ˆć³C ++ć®å “åˆć€ wasi-sysrootć‚’ä½œęˆć—ć¾ć—ćŸć€‚ć“ć‚ŒćÆ态wasi-coreé–¢ę•°ć®č¦³ē‚¹ć‹ć‚‰libcć‚’å®Ÿč£…ć—ć¾ć™ć€‚



ClangćŖć©ć®ć‚³ćƒ³ćƒ‘ć‚¤ćƒ©ćƒ¼ćÆWASI APIćØåÆ¾č©±ć§ćć€Rustć‚³ćƒ³ćƒ‘ć‚¤ćƒ©ćƒ¼ć‚„EmscriptenćŖć©ć®å®Œå…ØćŖćƒ„ćƒ¼ćƒ«ćƒć‚§ćƒ¼ćƒ³ćŒć‚·ć‚¹ćƒ†ćƒ å®Ÿč£…ć®äø€éƒØćØ恗恦WASI悒ä½æē”Ø恙悋恓ćØć‚’ęœŸå¾…ć—ć¦ć„ć¾ć™ć€‚

ć‚«ć‚¹ć‚æćƒ ć‚³ćƒ¼ćƒ‰ćÆć“ć‚Œć‚‰ć®WASIé–¢ę•°ć‚’ć©ć®ć‚ˆć†ć«å‘¼ć³å‡ŗć—ć¾ć™ć‹ļ¼Ÿ

ć‚³ćƒ¼ćƒ‰ćŒå®Ÿč”Œć•ć‚Œć‚‹ćƒ©ćƒ³ć‚æ悤惠ćÆwasi-coreé–¢ę•°ć‚’ęø”恗态ć‚Ŗ惖ć‚ø悧ć‚Æćƒˆć‚’ć‚µćƒ³ćƒ‰ćƒœćƒƒć‚Æć‚¹ć«é…ē½®ć—ć¾ć™ć€‚



恓悌ćÆē§»ę¤ę€§ć‚’ęä¾›ć—ć¾ć™ć€‚ć“ć‚ŒćÆć€å„ćƒ›ć‚¹ćƒˆćŒćć®ćƒ—ćƒ©ćƒƒćƒˆćƒ•ć‚©ćƒ¼ćƒ å°‚ē”Ø恮wasi-coreå®Ÿč£…ć‚’ęŒć¤ć“ćØ恌恧恍悋恟悁恧恙怂MozillaWasmtime悄Fastly LucetćŖ恩恮WebAssemblyćƒ©ćƒ³ć‚æ悤惠恋悉Node态恕悉恫ćÆćƒ–ćƒ©ć‚¦ć‚¶ć¾ć§ć€‚

ć¾ćŸć€ćƒ›ć‚¹ćƒˆćŒć‚½ćƒ•ćƒˆć‚¦ć‚§ć‚¢ćƒ™ćƒ¼ć‚¹ć§ć‚µćƒ³ćƒ‰ćƒœćƒƒć‚Æć‚¹ć«č»¢é€ć™ć‚‹wasi-coreę©Ÿčƒ½ć€ć¤ć¾ć‚ŠčرåÆć™ć‚‹ć‚·ć‚¹ćƒ†ćƒ å‘¼ć³å‡ŗ恗悒éøꊞ恙悋恟悁态äæ”é ¼ę€§ć®é«˜ć„åˆ†é›¢ć‚‚ęä¾›ć•ć‚Œć¾ć™ć€‚ ć“ć‚ŒćŒć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć§ć™ć€‚



WASIćÆ态čŖčØ¼ćƒ™ćƒ¼ć‚¹ć®ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ę¦‚åæµć‚’ć‚·ć‚¹ćƒ†ćƒ ć«å°Žå…„恙悋恓ćØć«ć‚ˆć‚Šć€ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć‚’å¼·åŒ–ćŠć‚ˆć³ę‹”å¼µć—ć¾ć™ć€‚

通åøøć€ć‚³ćƒ¼ćƒ‰ć§ćƒ•ć‚”ć‚¤ćƒ«ć‚’é–‹ćåæ…č¦ćŒć‚ć‚‹å “合ćÆć€č”Œć«ćƒ‘ć‚¹åć‚’ęŒ‡å®šć—ć¦openć‚’å‘¼ć³å‡ŗć—ć¾ć™ć€‚ ꬔ恫态OSćÆļ¼ˆćƒ—ćƒ­ć‚°ćƒ©ćƒ ć‚’čµ·å‹•ć—ćŸćƒ¦ćƒ¼ć‚¶ćƒ¼ć®ęØ©åˆ©ć«åŸŗ恄恄恦ļ¼‰ć‚³ćƒ¼ćƒ‰ć«ćć®ć‚ˆć†ćŖć‚¢ć‚Æć‚·ćƒ§ćƒ³ć®ęØ©åˆ©ćŒć‚ć‚‹ć‹ć©ć†ć‹ć‚’ćƒć‚§ćƒƒć‚Æć—ć¾ć™ć€‚

WASIć®å “åˆć€ćƒ•ć‚”ć‚¤ćƒ«ć«ć‚¢ć‚Æć‚»ć‚¹ć™ć‚‹é–¢ę•°ć‚’å‘¼ć³å‡ŗ恙ćØ恍ćÆć€ćƒ•ć‚”ć‚¤ćƒ«č‡Ŗä½“ć¾ćŸćÆćƒ•ć‚”ć‚¤ćƒ«ć‚’å«ć‚€ćƒ‡ć‚£ćƒ¬ć‚Æ惈ćƒŖć®ć‚¢ć‚Æć‚»ć‚¹čرåÆćŒé–¢é€£ä»˜ć‘ć‚‰ć‚Œć¦ć„ć‚‹ćƒ•ć‚”ć‚¤ćƒ«čؘčæ°å­ć‚’ęø”恙åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚

ć—ćŸćŒć£ć¦ć€čŖ¤ć£ć¦/etc/passwdć‚’é–‹ćć‚ˆć†ć«č¦ę±‚ć™ć‚‹ć‚³ćƒ¼ćƒ‰ć‚’ęŒć¤ć“ćØćÆć§ćć¾ć›ć‚“ć€‚ ä»£ć‚ć‚Šć«ć€ć‚³ćƒ¼ćƒ‰ćÆē‹¬č‡Ŗć®ćƒ‡ć‚£ćƒ¬ć‚Æ惈ćƒŖ恧恮ćæę©Ÿčƒ½ć—ć¾ć™ć€‚



ć“ć‚Œć«ć‚ˆć‚Šć€ć“ć‚Œć‚‰ć®ć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ć®ę©Ÿčƒ½ćŒåˆ¶é™ć•ć‚Œć‚‹ćŸć‚ć€ć•ć¾ć–ć¾ćŖć‚·ć‚¹ćƒ†ćƒ ć‚³ćƒ¼ćƒ«ć‚’åˆ†é›¢ć•ć‚ŒćŸć‚³ćƒ¼ćƒ‰ć«å®‰å…Øć«č§£ę±ŗć§ćć¾ć™ć€‚

ćć—ć¦ć€å„ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć§ć€‚ ćƒ‡ćƒ•ć‚©ćƒ«ćƒˆć§ćÆć€ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ćÆćƒ•ć‚”ć‚¤ćƒ«čؘčæ°å­ć«ć‚¢ć‚Æć‚»ć‚¹ć§ćć¾ć›ć‚“ć€‚ ćŸć ć—ć€ć‚ć‚‹ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć®ć‚³ćƒ¼ćƒ‰ć«ćƒ•ć‚”ć‚¤ćƒ«čؘčæ°å­ćŒć‚ć‚‹å “åˆć€ä»–ć®ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć§å‘¼ć³å‡ŗć•ć‚Œć‚‹é–¢ę•°ć«ęø”恙恓ćØćŒć§ćć¾ć™ć€‚ ć¾ćŸćÆć€ć‚ˆć‚Šé™å®šć•ć‚ŒćŸćƒćƒ¼ć‚øćƒ§ćƒ³ć®ćƒ•ć‚”ć‚¤ćƒ«čؘčæ°å­ć‚’ä½œęˆć—ć¦ć€ä»–ć®é–¢ę•°ć«ęø”ć—ć¾ć™ć€‚

ć“ć®ć‚ˆć†ć«ć—ć¦ć€ćƒ©ćƒ³ć‚æ悤惠ćÆć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ćŒęœ€äøŠä½ć‚³ćƒ¼ćƒ‰ć§ä½æē”Øć§ćć‚‹ćƒ•ć‚”ć‚¤ćƒ«čؘčæ°å­ć‚’ęø”ć—ć€ćƒ•ć‚”ć‚¤ćƒ«čؘčæ°å­ćÆåæ…要恫åæœć˜ć¦ć‚·ć‚¹ćƒ†ćƒ ć®ę®‹ć‚Šć®éƒØåˆ†ć«åˆ†ę•£ć•ć‚Œć¾ć™ć€‚



ć“ć‚Œć«ć‚ˆć‚Šć€WebAssemblyćÆęœ€å°ē‰¹ęØ©ć®åŽŸå‰‡ć«čæ‘ć„ćć€ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ćÆćć®ć‚øćƒ§ćƒ–ć‚’å®Ÿč”Œć™ć‚‹ćŸć‚ć«åæ…要ćŖęœ€å°é™ć®ćƒŖć‚½ćƒ¼ć‚¹ć‚»ćƒƒćƒˆć«ć®ćæć‚¢ć‚Æć‚»ć‚¹ć§ćć¾ć™ć€‚

恓恮ꦂåæµćÆ态CloudABI悄Capsicumć®ć‚ˆć†ć«ć€ē‰¹ęØ©ćƒ™ćƒ¼ć‚¹ć®ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć«åŸŗć„ć„ć¦ć„ć¾ć™ć€‚ ć“ć‚Œć‚‰ć®ć‚·ć‚¹ćƒ†ćƒ ć®å•é”Œć®1恤ćÆć€ć‚³ćƒ¼ćƒ‰ć®ē§»ę¤ę€§ćŒé›£ć—恄恓ćØ恧恙怂 ć—ć‹ć—ć€ć“ć®å•é”ŒćÆč§£ę±ŗ恧恍悋ćØäæ”ć˜ć¦ć„ć¾ć™ć€‚

ć‚³ćƒ¼ćƒ‰ćŒę—¢ć«ē›øåÆ¾ćƒ•ć‚”ć‚¤ćƒ«ćƒ‘ć‚¹ć§openat悒ä½æē”Øć—ć¦ć„ć‚‹å “åˆć€ć‚³ćƒ¼ćƒ‰ć®ć‚³ćƒ³ćƒ‘ć‚¤ćƒ«ćÆę©Ÿčƒ½ć—ć¾ć™ć€‚

ć‚³ćƒ¼ćƒ‰ć§openä½æē”Ø恕open恊悊态openatć‚¹ć‚æć‚¤ćƒ«ć®ē§»č”ŒćŒéžåøø恫ęæ€ć—ć„å “åˆć€WASIćÆå¢—åˆ†ć‚½ćƒŖćƒ„ćƒ¼ć‚·ćƒ§ćƒ³ć‚’ęä¾›ć—ć¾ć™ć€‚ libpreopen悒ä½æē”Øć—ć¦ć€ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ćŒåˆę³•ēš„ć«ć‚¢ć‚Æć‚»ć‚¹ć§ćć‚‹ćƒ•ć‚”ć‚¤ćƒ«ćƒ‘ć‚¹ć®ćƒŖć‚¹ćƒˆć‚’ä½œęˆć—ć¾ć™ć€‚ ę¬”ć«ć€ć“ć‚Œć‚‰ć®ćƒ‘ć‚¹ć§ć®ćæopenä½æē”Øć—ć¾ć™ć€‚

ꬔćÆļ¼Ÿ


wasi-corećÆč‰Æć„ć‚¹ć‚æćƒ¼ćƒˆć ćØäæ”ć˜ć¦ć„ć¾ć™ć€‚ WebAssembly恮ē§»ę¤ę€§ćØć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć‚’äæęŒć—态ć‚Øć‚³ć‚·ć‚¹ćƒ†ćƒ ć®å¼·å›ŗćŖåŸŗē›¤ć‚’ęä¾›ć—ć¾ć™ć€‚

恗恋恗态wasi-coreć‚’å®Œå…Ø恫ęؙęŗ–åŒ–ć—ćŸć‚‰ć€ę¬”ć®ć‚ˆć†ćŖä»–ć®å•é”Œć‚’č§£ę±ŗ恙悋åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚


恓悌ćÆć»ć‚“ć®å§‹ć¾ć‚Šć«éŽćŽćŖć„ć®ć§ć€ć‚¢ć‚¤ćƒ‡ć‚¢ćŒć‚ć‚Œć°å‚åŠ ć—ć¦ćć ć•ć„ļ¼

Source: https://habr.com/ru/post/J446764/


All Articles