<div dir="ltr"><div>Beware that the PharoVM is on <a href="https://github.com/pharo-project/pharo-vm">https://github.com/pharo-project/pharo-vm</a> now.<br><br></div>Convergence would be neat indeed. (Hey, Simulators...)<br>

<br>Phil<br><div><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><br><div><br></div></div></div>
<br><br><div class="gmail_quote">On Tue, Dec 3, 2013 at 12:03 AM, Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

 <br><div dir="ltr">Hi All,<div><br></div><div>    I would like to be able to converge the various VMs more, these are</div><div><br></div><div>- the Squeak Interpreter VM, using VMMaker (e.g. VMMaker-dtl.330 on <a href="http://source.squeak.org" target="_blank">source.squeak.org</a>),</div>


<div>  <a href="http://squeakvm.org/svn/squeak/trunk/platforms" target="_blank">http://squeakvm.org/svn/squeak/trunk/platforms</a></div><div>  <a href="http://squeakvm.org/svn/squeak/trunk/src" target="_blank">http://squeakvm.org/svn/squeak/trunk/src</a></div>


<div><br></div><div>- the Pharo VM, using VMMaker-oscog (e.g. VMMaker-oscog-LucFabresse.306) on github,</div><div>  git://<a href="http://gitorious.org/cogvm/blessed.git" target="_blank">gitorious.org/cogvm/blessed.git</a></div>

<div><br>
</div><div>- the Cog branch, using VMMaker.oscog (e.g. VMMaker.oscog-eem.528)</div><div>  <a href="http://www.squeakvm.org/svn/squeak/branches/Cog" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog</a></div>

<div>  <a href="http://squeakvm.org/svn/squeak/trunk/platforms/iOS" target="_blank">http://squeakvm.org/svn/squeak/trunk/platforms/iOS</a></div>
<div>  <a href="http://squeakvm.org/svn/squeak/trunk/platforms/win32/plugins" target="_blank">http://squeakvm.org/svn/squeak/trunk/platforms/win32/plugins</a></div><div><div>  <a href="http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins" target="_blank">http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins</a></div>


<div><br></div><div>Things are a little tricky.  I don&#39;t have write permission to trunk (please can I have this?).  There is some divergence in the platform files.</div><div><br></div><div>In particular I wanted to upgrade Cog to have the directory entry extensions in the Pharo VM that add the posix permission and the isSymlink flags to a directory entry.  This is problematic for various reasons:</div>


<div><br></div><div>1. AFAIA there is no #define to mark this change in plugins/Cross/plugins/FilePlugin/FilePlugin.h.  If there was some define, e.g. DirEntryV2, then the platform files could be changed to define either API and still compile, e.g.:</div>


<div><br></div><div><div>/* directories */</div><div><br></div><div>sqInt dir_Create(char *pathString, sqInt pathStringLength);</div><div>sqInt dir_Delete(char *pathString, sqInt pathStringLength);</div><div>sqInt dir_Delimitor(void);</div>


<div>#if DirEntryV2</div><div>sqInt dir_Lookup(char *pathString, sqInt pathStringLength, sqInt index,</div><div>                 /* outputs: */</div><div>                 char *name, sqInt *nameLength, sqInt *creationDate, sqInt *modificationDate,</div>


<div>                 sqInt *isDirectory, squeakFileOffsetType *sizeIfFile, sqInt *posixPermissions, sqInt *isSymlink);</div><div>sqInt dir_EntryLookup(char *pathString, sqInt pathStringLength, char* nameString, sqInt nameStringLength,</div>


<div>                /* outputs: */</div><div>                char *name, sqInt *nameLength, sqInt *creationDate, sqInt *modificationDate,</div><div>                sqInt *isDirectory, squeakFileOffsetType *sizeIfFile, sqInt *posixPermissions, sqInt *isSymlink);</div>


<div>#else /* DirEntryV2 */<br></div></div><div>sqInt dir_Lookup(char *pathString, sqInt pathStringLength, sqInt index,</div><div>        /* outputs: */</div><div>        char *name, sqInt *nameLength, sqInt *creationDate, sqInt *modificationDate,</div>


<div>        sqInt *isDirectory, squeakFileOffsetType *sizeIfFile);</div><div>#endif /* DirEntryV2 */</div><div><div>sqInt dir_PathToWorkingDir(char *pathName, sqInt pathNameMax);</div></div><div>...</div><div><br></div>

<div>
2. the only way I can see to get my hands on the Monticello VMMaker-oscog package for the Pharo fork is to pull from git://<a href="http://gitorious.org/cogvm/blessed.git" target="_blank">gitorious.org/cogvm/blessed.git</a>, run image/newImage.sh, start-up the downloaded image and save the Monticello package from there-in (and this doesn&#39;t get me what I want, it gets me a renamed copy of the Monticello VMMaker-oscog package).</div>


<div><br></div><div>So...</div><div><br></div><div>I wonder can we a) start using defines like the above DirEntryV2 so we have a chance at harmonising the various VMs?  I added COGVM and STACKVM to the branch of trunk I use for platforms, which at least shows what the changes are and insulates the trunk Interpreter from these.  Unless we take this approach I don&#39;t see how we can avoid costly merging instead of sharing.</div>


<div><br></div><div>WOuld it be possible for the Pharo VM guys to occasionally push their VMMaker-oscog to <a href="http://source.squeak.org" target="_blank">source.squeak.org</a>?  If this could be automated so much the better?</div>

-- <br>
best,<div>Eliot</div>
</div></div>
<br></blockquote></div><br></div></div></div>