<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"><<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>></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'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'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'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>