<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Hi Manuel,<div dir="ltr"><br><blockquote type="cite">On Aug 17, 2022, at 5:12 PM, Manuel Leuenberger <maenuleu@gmail.com> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><span><meta http-equiv="Content-Type" content="text/html; charset=us-ascii">Hi Eliot,<div class=""><br class=""></div><div class="">It's alive!</div></span></div></blockquote><div><br></div>Great progress! Good to hear.<div><br><blockquote type="cite"><div dir="ltr"><span><div class="">It also refusing to die, but I'll just ignore that for now.</div><div class=""><br class=""></div><div class="">Currently, I get the image through startup and run the eval handler, no UI yet.</div><div class="">Code lives at <a href="https://github.com/maenu/opensmalltalk-vm/tree/wasm-1" class="">https://github.com/maenu/opensmalltalk-vm/tree/wasm-1</a>.</div><div class="">Lacks documentation and includes paths on my machine.</div><div class=""><br class=""></div><div class=""><img apple-inline="yes" id="42D8BCA5-06E4-42E3-9B28-A6DC275C620B" width="775" height="485" alt="Screenshot 2022-08-17 at 19.17.19.png" src="cid:04F7C7B5-C693-455E-81C4-89E8264E4441"></div><div class=""><br class=""></div><div class="">That was one tough cookie, but I finally found the reason for failing #new message: I noticed that #new was the first non-quick primitive, so I looked at the primitiveFunctionPointer. That one seemed to be fine, I could call the #new primitive as a function pointer. Then it only took me a small eternity to figure out that not machinery around the function pointer is broken, but the value of the pointer is the problem, leading to an ambiguity. WASM addresses start at 0, #primitiveNew got an int value of 220. This confused the interpreter, as it was looking at it as a quick primitive (value < 500 something), then even more confusing it as the value was below 256. That was the assertion that triggered. As I could not see an easier way to make function pointers and quick primitives distinguishable, I inserted a padding of 700 hundred useless methods before the primitives. It sure ain't pretty, but to my surprise it does the job. From then on it was just a good ol' whac'a'flag.</div></span></div></blockquote><div><br></div>Interesting. Assumptions about the implementation substrate and/or underlying platform are always present in any high-performance VM.  I hope this assumption was sufficiently documented, but it looks like not.  I like your solution.  However, if primitiveFunctionPointer is signed on the WASM platform I would consider introducing a alternative, that being using negative numbers for the quick primitives.</div><div><br></div><div>As your work progresses you’re likely going to face more platform-specific issues, many of which will be within cCode:[inSmalltalk:] sends.  You may need to add cCode:wasmCode:[inSmalltalk:] or some such.  Please don’t be afraid to add such a thing.</div><div><br><blockquote type="cite"><div dir="ltr"><span><div class=""><br class=""></div><div class="">There is still a lot of stuff to do. E.g., external plugins break due to WASM being really picky about casting function pointers; Emscripten supports SDL/GL, so a headful WASM-VM seems also possible.</div></span></div></blockquote><div><br></div>Super cool.  Keep us posted.  And I’m on Discord and/or Virtend if you need to talk/show some live state, etc.</div><div><br><blockquote type="cite"><div dir="ltr"><span><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Manuel<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 9 Jul 2022, at 02:04, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div dir="ltr" class=""><div class="gmail_default" style="font-size: small;">Hi Manuel,<br class=""></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 8, 2022 at 9:46 AM Manuel Leuenberger <<a href="mailto:maenuleu@gmail.com" class="">maenuleu@gmail.com</a>> wrote:<br class=""></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 style="word-wrap: break-word; line-break: after-white-space;" class="">Hi Eliot,<div class=""><br class=""></div><div class="">Thanks for the explanation. I started looking into the return bytecode 348, but I could not find something suspicious. So I started logging more and then I saw a dim light:</div></div></blockquote><div class=""> </div><div class=""> [snip]</div><div class=""> </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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class="">Once it reaches #doesNotUnderstand:, we are in an infinite loop.</div><div class=""><br class=""><blockquote type="cite" class=""><div class="">currentBytecode = 501</div><div class="">currentBytecode = 339</div><div class="">currentBytecode = 320</div><div class="">currentBytecode = 401</div><div class="">currentBytecode = 272</div><div class="">currentBytecode = 380</div><div class="">currentBytecode = 332</div><div class="">currentBytecode = 384</div><div class="">(localPrimIndex > 0xFF) && (localPrimIndex < 520) 5814</div><div class="">localPrimIndex = 253</div><div class="">currentBytecode = 385</div><div class="">localPrimIndex = 256</div><div class="">currentBytecode = 348</div><div class="">Smalltalk stack dump:</div><div class=""> <span class="Apple-converted-space"> </span>0xaa2f6c MessageNotUnderstood class(Behavior)>new 0x1728360: a(n) MessageNotUnderstood</div><div class=""> <span class="Apple-converted-space"> </span>0xaa2f90 SmallInteger(Object)>doesNotUnderstand: message: 0xfffffff1=-8</div><div class=""> <span class="Apple-converted-space"> </span>0xaa2fbc SmallInteger(Object)>doesNotUnderstand: message: 0xfffffff1=-8</div><div class=""> <span class="Apple-converted-space"> </span>0xaa2fe8 SmallInteger(Object)>doesNotUnderstand: manager: 0xfffffff1=-8</div><div class=""> <span class="Apple-converted-space"> </span>0xaa300c SessionManager>newSession 0x177d300: a(n) SessionManager</div><div class=""> <span class="Apple-converted-space"> </span>0xaa302c SessionManager>installNewSession 0x177d300: a(n) SessionManager</div><div class=""> <span class="Apple-converted-space"> </span>0xaa3050 SessionManager>launchSnapshot:andQuit: 0x177d300: a(n) SessionManager</div><div class=""> 0x43276f8 s [] in SessionManager>snapshot:andQuit:</div><div class=""> 0x43278a0 s [] in FullBlockClosure(BlockClosure)>newProcess</div></blockquote><div class=""><br class=""></div><div class="">My suspicion is a 32bit/64bit type issue. I also saw a few segfaults in the past, but not recently, and not reproducible.</div><div class="">Anybody has a clue on what I should look at next?</div></div></div></blockquote><div class=""><br class=""></div><div class="gmail_default" style="font-size: small;">Constructing a debugger environment where you can breakpoint and step through code.  Unless you have a WASM simulator this means working within whatever development environment is provided for WASM.  You want t6o answer the question: why is the message not understood?  To do that you need to answer the questions: what is the selector? What is the argument count? What is the receiver? etc...</div><div class="gmail_default" style="font-size: small;"><br class=""></div><div class="gmail_default" style="font-size: small;"><br class=""></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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Manuel</div><div class=""><br class=""><blockquote type="cite" class=""><div class="">On 27 Jun 2022, at 23:31, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" target="_blank" class="">eliot.miranda@gmail.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><div dir="ltr" class=""><div style="font-size: small;" class="">Hi Manuel,</div><div style="font-size: small;" class=""><br class=""></div><div style="font-size: small;" class="">   cool beans!</div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 27, 2022 at 3:54 AM Manuel Leuenberger <<a href="mailto:maenuleu@gmail.com" target="_blank" class="">maenuleu@gmail.com</a>> wrote:<br class=""></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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class="">Hi,</div><div class=""><br class=""></div><div class="">Ever since WebAssembly became a thing, I was wondering if this could become a target for VMs. People are already compiling FFMPEG and other complex tools. So I thought I would try as well.</div><div class=""><br class=""></div><div class="">So here I am to report to whom it may concern: OSVM compiles to WebAssembly, starts up (nearly), then looping infinitely</div><div class="">Meaning: The VM mmaps the image file, loads plugins (SecurityPlugin made EXTERNAL), starts interpreter loop, but then loops the same bytecode sequence forever</div><div class=""><br class=""></div>Code lives at <a href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm" target="_blank" class="">https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm</a> if you want to try it out.<div class=""><br class=""><div class="">Below is the current Readme, including a short list of issues. Maybe some of you could give me a hint?</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Manuel<br class=""><div class=""><br class=""></div><div class=""><h1 dir="auto" style="box-sizing: border-box; margin: 0px 0px 16px; line-height: 1.25; padding-bottom: 0.3em; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class="">pharo.stack.spur.wasm</h1><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class="">Compiles OSVM Stack interpreter to WebAssembly using the Emscripten compiler. Emscripten can be used as a drop-in replacement for gcc/clang and cmake. Based on MinHeadless Linux 32bit sources, as Emscripten provides Linux-like environment (pthreads, nanosleep, dlopen, file system). Check the latest few commits of maenu to see changed files.</p><h2 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; line-height: 1.25; padding-bottom: 0.3em; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-current-issues" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#current-issues" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>Current issues</h2><ul dir="auto" style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><li style="box-sizing: border-box;" class=""><p dir="auto" style="box-sizing: border-box; margin-top: 16px; margin-bottom: 16px;" class="">Most adjustments are just putting EMSCRIPTEN in a macro or script. Should be fine, but should be tested to not interfere with other builds.</p></li><li style="box-sizing: border-box; margin-top: 0.25em;" class=""><p dir="auto" style="box-sizing: border-box; margin-top: 16px; margin-bottom: 16px;" class="">Compiles and runs, but seems to be stuck in initial GC and Heartbeat. Those could be related to incorrect get/set64() implementation.</p></li><li style="box-sizing: border-box; margin-top: 0.25em;" class=""><p dir="auto" style="box-sizing: border-box; margin-top: 16px; margin-bottom: 16px;" class="">Removed mmap address hint, as it caused errors.</p></li><li style="box-sizing: border-box; margin-top: 0.25em;" class=""><p dir="auto" style="box-sizing: border-box; margin-top: 16px; margin-bottom: 16px;" class="">Using argv <code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; border-radius: 6px;" class="">eval '1 + 3'</code> to do a simple eval does not terminate.</p></li><li style="box-sizing: border-box; margin-top: 0.25em;" class=""><p dir="auto" style="box-sizing: border-box; margin-top: 16px; margin-bottom: 16px;" class="">Interpreter repeats these bytecodes forever (what is this?):</p></li></ul></div></div></div></div></blockquote><div class=""><br class=""></div><div style="font-size: small;" class="">Taking these from e.g. src/spur64.stack/interp.c they are</div><div style="font-size: small;" class=""> </div><div style="font-size: small;" class="">      <span class="Apple-converted-space"> </span>CASE(112)<br class="">       <span class="Apple-converted-space"> </span>CASE(332) /*76*/<br class="">           <span class="Apple-converted-space"> </span>/* pushReceiverBytecode */<br class=""></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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">332</code></pre></div></div></div></div></div></blockquote>       <span class="Apple-converted-space"> </span>CASE(208)<br class="">       <span class="Apple-converted-space"> </span>CASE(209)<br class="">       <span class="Apple-converted-space"> </span>CASE(210)<br class="">       <span class="Apple-converted-space"> </span>CASE(211)<br class="">       <span class="Apple-converted-space"> </span>CASE(212)<br class="">       <span class="Apple-converted-space"> </span>CASE(213)<br class="">       <span class="Apple-converted-space"> </span>CASE(214)<br class="">       <span class="Apple-converted-space"> </span>CASE(215)<br class="">       <span class="Apple-converted-space"> </span>CASE(216)<br class="">       <span class="Apple-converted-space"> </span>CASE(217)<br class="">       <span class="Apple-converted-space"> </span>CASE(218)<br class="">       <span class="Apple-converted-space"> </span>CASE(219)<br class="">       <span class="Apple-converted-space"> </span>CASE(220)<br class="">       <span class="Apple-converted-space"> </span>CASE(221)<br class="">       <span class="Apple-converted-space"> </span>CASE(222)<br class="">       <span class="Apple-converted-space"> </span>CASE(223)<br class="">       <span class="Apple-converted-space"> </span>CASE(384) /*128*/<span class="gmail_default" style="font-size: small;"><span class=""> </span>i.e. send literal selector 0 with 0 args</span><br class="">       <span class="Apple-converted-space"> </span>CASE(385) /*129*/<br class="">       <span class="Apple-converted-space"> </span>CASE(386) /*130*/<br class="">       <span class="Apple-converted-space"> </span>CASE(387) /*131*/<br class="">       <span class="Apple-converted-space"> </span>CASE(388) /*132*/<br class="">       <span class="Apple-converted-space"> </span>CASE(389) /*133*/<br class="">       <span class="Apple-converted-space"> </span>CASE(390) /*134*/<br class="">       <span class="Apple-converted-space"> </span>CASE(391) /*135*/<br class="">       <span class="Apple-converted-space"> </span>CASE(392) /*136*/<br class="">       <span class="Apple-converted-space"> </span>CASE(393) /*137*/<br class="">       <span class="Apple-converted-space"> </span>CASE(394) /*138*/<br class="">       <span class="Apple-converted-space"> </span>CASE(395) /*139*/<br class="">       <span class="Apple-converted-space"> </span>CASE(396) /*140*/<br class="">       <span class="Apple-converted-space"> </span>CASE(397) /*141*/<br class="">       <span class="Apple-converted-space"> </span>CASE(398) /*142*/<br class="">       <span class="Apple-converted-space"> </span>CASE(399) /*143*/<br class="">           <span class="Apple-converted-space"> </span>/* sendLiteralSelector0ArgsBytecode */<br class=""><div class=""> </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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">384</code></pre></div></div></div></div></div></blockquote><div class=""> </div><div class=""><div style="font-size: small;" class="">hence send literal selector 1 with 0 args</div><br class=""></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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">385</code></pre></div></div></div></div></div></blockquote><div class=""><br class=""></div><div class="">       <span class=""> </span>CASE(124)</div>       <span class="Apple-converted-space"> </span>CASE(348) /*92*/<br class="">           <span class="Apple-converted-space"> </span>/* returnTopFromMethod */<br class=""><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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">348</code></pre></div></div></div></div></div></blockquote><div class=""> </div><div class="">       <span class="Apple-converted-space"> </span>CASE(501) /*245*/<br class="">           <span class="Apple-converted-space"> </span>/* longStoreTemporaryVariableBytecode */<br class=""></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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">501</code></pre></div></div></div></div></div></blockquote><div class="">       <span class=""> </span>CASE(136)</div>       <span class="Apple-converted-space"> </span>CASE(339) /*83*/<br class="">           <span class="Apple-converted-space"> </span>/* duplicateTopBytecode */<br class=""><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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">339</code></pre></div></div></div></div></div></blockquote><div class="">       <span class="Apple-converted-space"> </span>CASE(16)</div>       <span class="Apple-converted-space"> </span>CASE(320) /*64*/<br class="">           <span class="Apple-converted-space"> </span>/* pushTemporaryVariableBytecode */<br class=""><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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">320</code></pre></div></div></div></div></div></blockquote><div class=""> </div><div class="">       <span class="Apple-converted-space"> </span>CASE(224)<br class="">       <span class="Apple-converted-space"> </span>CASE(225)<br class="">       <span class="Apple-converted-space"> </span>CASE(226)<br class="">       <span class="Apple-converted-space"> </span>CASE(227)<br class="">       <span class="Apple-converted-space"> </span>CASE(228)<br class="">       <span class="Apple-converted-space"> </span>CASE(229)<br class="">       <span class="Apple-converted-space"> </span>CASE(230)<br class="">       <span class="Apple-converted-space"> </span>CASE(231)<br class="">       <span class="Apple-converted-space"> </span>CASE(232)<br class="">       <span class="Apple-converted-space"> </span>CASE(233)<br class="">       <span class="Apple-converted-space"> </span>CASE(234)<br class="">       <span class="Apple-converted-space"> </span>CASE(235)<br class="">       <span class="Apple-converted-space"> </span>CASE(236)<br class="">       <span class="Apple-converted-space"> </span>CASE(237)<br class="">       <span class="Apple-converted-space"> </span>CASE(238)<br class="">       <span class="Apple-converted-space"> </span>CASE(239)<br class="">       <span class="Apple-converted-space"> </span>CASE(400) /*144*/<br class="">       <span class="Apple-converted-space"> </span>CASE(401) /*145*/<span class="gmail_default" style="font-size: small;"><span class=""> </span>i.e. send literal selector 1 with 1 arg</span><br class="">       <span class="Apple-converted-space"> </span>CASE(402) /*146*/<br class="">       <span class="Apple-converted-space"> </span>CASE(403) /*147*/<br class="">       <span class="Apple-converted-space"> </span>CASE(404) /*148*/<br class="">       <span class="Apple-converted-space"> </span>CASE(405) /*149*/<br class="">       <span class="Apple-converted-space"> </span>CASE(406) /*150*/<br class="">       <span class="Apple-converted-space"> </span>CASE(407) /*151*/<br class="">       <span class="Apple-converted-space"> </span>CASE(408) /*152*/<br class="">       <span class="Apple-converted-space"> </span>CASE(409) /*153*/<br class="">       <span class="Apple-converted-space"> </span>CASE(410) /*154*/<br class="">       <span class="Apple-converted-space"> </span>CASE(411) /*155*/<br class="">       <span class="Apple-converted-space"> </span>CASE(412) /*156*/<br class="">       <span class="Apple-converted-space"> </span>CASE(413) /*157*/<br class="">       <span class="Apple-converted-space"> </span>CASE(414) /*158*/<br class="">       <span class="Apple-converted-space"> </span>CASE(415) /*159*/<br class="">           <span class="Apple-converted-space"> </span>/* sendLiteralSelector1ArgBytecode */<br class=""></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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">401</code></pre></div></div></div></div></div></blockquote><div class="">       <span class=""> </span>CASE(64)</div>       <span class="Apple-converted-space"> </span>CASE(272) /*16*/<br class="">           <span class="Apple-converted-space"> </span>/* pushLiteralVariableBytecode */<br class=""><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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">272</code></pre></div></div></div></div></div></blockquote><div class="">         CASE(204)</div>       <span class="Apple-converted-space"> </span>CASE(380) /*124*/<br class="">           <span class="Apple-converted-space"> </span>/* bytecodePrimNew */<span class="gmail_default" style="font-size: small;"><span class=""> </span>i.e. a send of #new from the special selector bytecode</span><br class=""><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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">380</code></pre></div></div></div></div></div></blockquote><div class=""><br class=""></div><div style="font-size: small;" class="">If I had to guess what's going wrong I'd guess that the return bytecode 348 isn't correctly implemented.</div><div class=""> </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 style="word-wrap: break-word; line-break: after-white-space;" class=""><div class=""><div class=""><div class=""><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">
</code></pre></div><h2 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; line-height: 1.25; padding-bottom: 0.3em; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-build--run" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#build--run" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>Build & Run</h2><h3 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-1-install-emscripten" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#1-install-emscripten" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>1. Install Emscripten</h3><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class="">I installed <a href="https://emscripten.org/docs/getting_started/downloads.html" rel="nofollow" target="_blank" style="box-sizing: border-box; text-decoration: none;" class="">Emscripten SDK</a> to get an all-in-one package.</p><h3 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-2-grab-an-image" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#2-grab-an-image" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>2. Grab an image</h3><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class="">Grab a 32bit Smalltalk image and but it in the <code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; border-radius: 6px;" class="">image</code> folder. I used Pharo 9.</p><div style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); overflow: auto;" class=""><pre style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 6px;" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0px; margin: 0px; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit;" class="">cd building/minheadless.cmake/x86/pharo.stack.spur.wasm
mkdir image
cd image
curl <a href="https://get.pharo.org/32/90" target="_blank" class="">https://get.pharo.org/32/90</a> | bash
</code></pre></div><h3 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-3-build-vm" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#3-build-vm" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>3. Build VM</h3><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; border-radius: 6px;" class="">./mvm_configure_variant debug Debug && make -C debug install</code></p><h3 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-4-run-a-web-server" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#4-run-a-web-server" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>4. Run a web server</h3><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><code style="box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 13.6px; padding: 0.2em 0.4em; margin: 0px; border-radius: 6px;" class="">emrun --port 9090 --serve_root ../../../../ --no_browser .</code></p><h3 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-5-launch-vm" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#5-launch-vm" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>5. Launch VM</h3><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a href="http://localhost:9090/building/minheadless.cmake/x86/pharo.stack.spur.wasm/debug/dist/squeak.html" rel="nofollow" target="_blank" style="box-sizing: border-box; text-decoration: none;" class="">http://localhost:9090/building/minheadless.cmake/x86/pharo.stack.spur.wasm/debug/dist/squeak.html</a></p><h3 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; font-size: 1.25em; line-height: 1.25; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-6-inspect-running-vm" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#6-inspect-running-vm" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>6. Inspect running VM</h3><p dir="auto" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class="">The VM is compiled with DWARF debug information, which is understood by the Chrome debugger. So we can step through the C sources of the WebAssembly, pretty nifty.</p><h2 dir="auto" style="box-sizing: border-box; margin-top: 24px; margin-bottom: 16px; line-height: 1.25; padding-bottom: 0.3em; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class=""><a id="gmail-m_-4490093684524763120gmail-m_7225846950270489042user-content-resources" aria-hidden="true" href="https://github.com/maenu/opensmalltalk-vm/tree/Cog/building/minheadless.cmake/x86/pharo.stack.spur.wasm#resources" target="_blank" style="box-sizing: border-box; text-decoration: none; float: left; padding-right: 4px; line-height: 1;" class=""><u class=""></u><u class=""></u><u class=""></u><u class=""></u></a>Resources</h2><ul dir="auto" style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; color: rgb(36, 41, 47); font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255); margin-bottom: 0px;" class=""><li style="box-sizing: border-box;" class=""><a href="https://webassembly.org/getting-started/developers-guide/" rel="nofollow" target="_blank" style="box-sizing: border-box; text-decoration: none;" class="">Inspect WebAssembly (at the bottom)</a></li><li style="box-sizing: border-box; margin-top: 0.25em;" class=""><a href="https://emscripten.org/docs/porting/index.html" rel="nofollow" target="_blank" style="box-sizing: border-box; text-decoration: none;" class="">Emscripten doc (Porting)</a></li><li style="box-sizing: border-box; margin-top: 0.25em;" class=""><a href="https://emsettings.surma.technology/" rel="nofollow" target="_blank" style="box-sizing: border-box; text-decoration: none;" class="">Emscripten settings</a></li></ul></div></div></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></span></div></blockquote><br><div>Eliot</div><div>_,,,^..^,,,_ (phone)</div></div></body></html>