<font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size="2"> <p>   </p><blockquote type="cite">Hunh - I didn't remember that at all; I thought Boris Shingarov had been Mr OS/2-Squeak.</blockquote> There were two OS/2 ports that did non-overlapping things because they were designed with orthogonal goals in mind. <p>Juan's port was a "real PresentationManager/2 application", but it  was a real PM/2 *Squeak* in that it opened a PM/2 window and BitBlt'd  the Squeak Display to that.</p> <p>Opposite to that, the idea of "real PM/2" to me meant "Native  Widgets" and I wanted to have that in Squeak.  The problem was, in a  live system (which is also "truly single-threaded"), how do I debug the  "native-widget" event loop when the PM/2 is tied up by the BitBlt UI?   This meant that Juan's design wouldn't fit: I needed to somehow have all  the Squeak tools but without touching PM/2.  This was enabled by two  things: (1) compiling the VM with Ian's sqXWindow.c, so Squeak would  show on an X display while appearing to OS/2 initially as a headless app  talking to the network, and (2) writing an FFI for the VM --  "native-widget" PM/2 calls were made via that FFI.<br> </p> <p><br> </p> <p>   </p><blockquote type="cite">I wouldn't be surprised if it still works. But this was never part of the official releases.</blockquote> I very much wanted to merge it upstream into Ian's unix port (the diff  was very small).  The desire seems weird and silly now, but back then I  somehow thought it would make a difference, and I remember I was very  frustrated that the merge didn't happen.  But it *is* part of the 1.23  distribution on files.squeak.org today.<br> <p><br> </p> <p>   </p><blockquote type="cite">     <p>Later this was the base of his extremely interesting Cheese project.</p>   </blockquote> Oh yes -- Cheese.  This is what 3 years later led to the work on Eclipse SWT.<br> <br> <p>   </p><blockquote type="cite"><i>I started with dissecting Slang out of the  Cuis VMMaker packages and VMMakerJS (SqeakJS) project into a couple of  packages which could be used for generating anything besides VM plugins.</i></blockquote> You don't need Alien plugins to do VMIL18-simulation-style development  of the core VM.  For that there is now the Smalltalk implementation of  RSP, which I recently added to VMMaker.  There is a wide choice how to  run the native CPU code: various simulators (gem5 or qemu), or on  production silicon under GDB, or on some FPGA prototype under OpenOCD,  ... well ... really anything that knows how to speak RSP.  This will  have a number of far-reaching consequences; this margin is too narrow to  explain them, but you can watch a number of my presentations on the  subject. <p>Where does this stand right now?</p> <p>VMIL-18-simulation of Cog runs fine over RSP.  VMMaker depends on a  subtle inaccuracy in the Alien's emulation of instruction atomicity.   This will cause VMMaker to fail on off-the-shelf production silicon.   But when you modify the CPU to behave like Alien, OSTVM runs just fine  (I verified on gem5).  So it's a matter of very small fix to the Cogit  to match what the stock processor is doing, before we have the full  freedom to run anywhere we want.</p> <p><br> </p> <p>The larger problem that stops me from bringing in all the rest of the  system (the target-agnostic synthesizer, the binutils-in-Smalltalk, the  symbolic execution engine, the superoptimizer, etc), is the lack of a  usable mother-Smalltalk.<br> </p> <p>OSTVM is hosted in Squeak.  With all my love for Squeak, I still  can't use it for this kind of work.  There are blocker problems with  SUnit (causes erratic behavior of Socket code which works fine outside  SUnit), so I can't have tests, I resort to launching everything from  doits.  I have no PetitParser.  I have no JSON.  I can't use my  FFI-to-Z3 bindings.  In the middle of working I randomly get unexpected  problems with access to source.squeak.org.  And so on.</p> <p><br> </p> <p>So.<br> </p> <p>Is there an environment where work would not be blocked by such problems?</p> <p>Let's look.<br> </p> <p>   </p><blockquote type="cite">Pharo VM did not only fork the transpiled C code, they also put the  Smalltalk VMMaker code in the repository and maintain it there. They do  not use the VMMaker Monticello repository if I understand<br> correctly. So in their repository and workflow, it really is a source fork.</blockquote> You must know some magic!  something I've been begging the Pharo people  for months to tell me the secret where to download that source from.  I  tried the <b><i>headless</i></b> branch, but it doesn't even compile in Pharo.  I tried asking on pharo-dev, but I got zero responses since February. <p><br> </p> <p>So.</p> <p>The million-dollar question again:</p> <p>Is there *any* environment that works well enough to do OST VM work in?<br> </p> <blockquote type="cite">   <p>I started with dissecting Slang out of the Cuis VMMaker packages and  VMMakerJS (SqeakJS) project into a couple of packages which could be  used for generating anything besides VM plugins.</p>   <p>Atleast that's my intentiont, I don't yet know of how that project  idea will pan out, atleast I intend to learn something of how Slang  works and how it's generated.</p>   <p>It's currently highly expiremental, but I got some of the existing  VMMaker testscases "green" and so I thought I could share the current  state of it. Maybe the whole idea of using it outside the VMMaker is not  so a good idea, maybe, maybe not :-)</p> </blockquote> For the reasons I just explained above, I believe it would be more than  just "a good idea".  It is critical to the viability of this whole  stack.  If your project works, it give us an environment enabling  further collaboration on OSTVM.  Well, I must admit I don't know which  way is shorter / more straightforward: this, or making Squeak work.  I  would be happy either way.  I don't care which: I have much bigger fish  to fry.<br> <p>-- boris<br> </p> <p><br> </p> <div></div></font>