<div dir="ltr"><div dir="ltr">Hi Ben,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 15, 2019 at 2:13 AM Ben Coman <<a href="mailto:btc@openinworld.com">btc@openinworld.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"> <div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div>Found some recent WebAssembly articles that may impact issues previously raised as impediments to Smalltalk-on-WebAssembly.</div><div>Do these indicate anything useful for the possibility of running Squeak/Pharo on WebAssembly...</div><div><br></div><div>Calls between JavaScript and WebAssembly are finally fast<br></div><div><a href="https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/" target="_blank">https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/</a><br></div><div><br></div><div><br></div><div>WebAssembly architecture for Go</div></div><div><a href="https://docs.google.com/document/d/131vjr4DH6JFnb-blm_uRdaC0_Nv3OUwjEY5qVCxCup4/preview#" target="_blank">https://docs.google.com/document/d/131vjr4DH6JFnb-blm_uRdaC0_Nv3OUwjEY5qVCxCup4/preview#</a></div></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div>Good to read.  What can you find that discusses the range of stack frame formats?  To map the StackInterpreter to WebAssembly conveniently we would need there ability to store the current method/closure in each frame.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>From WebAssembly Illustrated...<br></div><div><a href="https://takenobu-hs.github.io/downloads/WebAssembly_illustrated.pdf" target="_blank">https://takenobu-hs.github.io/downloads/WebAssembly_illustrated.pdf</a><br></div><div>* Slide 16 - If Slang could directly output WebAssembly bytecode, I presume the Interpreter lookup table could be modeled as a "call_indirect #n" of functions compiled to a WebAssembly "Table"</div><div>* Slide 39-40 - I wonder if the Host environment being able to mutate the Table means by default a newly downloaded Smalltalk program would be running as an Interpreter, but you could a browser plugin for the JIT that updated Table for JIT'd methods.<br></div><div><div>* Slides 48-51 - Alternatively, I wonder if a "form" of JITing could be dynamically creating a WebAssembly bytecode module that is then immediately loaded and the function called, and a new module loaded for each new JIT output. </div><div>"Platform-independent JIT" is mentioned at <a href="https://webassembly.org/docs/future-features/" target="_blank">https://webassembly.org/docs/future-features/</a></div><div><br></div><div><br></div><div>WebAssembly GC proposal including a tagging scheme for unboxed small scalars </div><div><a href="https://github.com/WebAssembly/gc/blob/master/proposals/gc/Overview.md" target="_blank">https://github.com/WebAssembly/gc/blob/master/proposals/gc/Overview.md</a><br></div><div><br></div><div><br></div><div>Garbage Collection (proposal)<br></div></div><div><a href="https://github.com/WebAssembly/gc" target="_blank">https://github.com/WebAssembly/gc</a><br></div><div><br></div><div>cheers -ben</div></div></div></div></div></div></div></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div></div>