[Vm-dev] Keeping things in sync...

Eliot Miranda eliot.miranda at gmail.com
Mon Dec 2 23:03:15 UTC 2013


Hi All,

    I would like to be able to converge the various VMs more, these are

- the Squeak Interpreter VM, using VMMaker (e.g. VMMaker-dtl.330 on
source.squeak.org),
  http://squeakvm.org/svn/squeak/trunk/platforms
  http://squeakvm.org/svn/squeak/trunk/src

- the Pharo VM, using VMMaker-oscog (e.g. VMMaker-oscog-LucFabresse.306) on
github,
  git://gitorious.org/cogvm/blessed.git

- the Cog branch, using VMMaker.oscog (e.g. VMMaker.oscog-eem.528)
  http://www.squeakvm.org/svn/squeak/branches/Cog
  http://squeakvm.org/svn/squeak/trunk/platforms/iOS
  http://squeakvm.org/svn/squeak/trunk/platforms/win32/plugins
  http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins

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.

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:

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.:

/* directories */

sqInt dir_Create(char *pathString, sqInt pathStringLength);
sqInt dir_Delete(char *pathString, sqInt pathStringLength);
sqInt dir_Delimitor(void);
#if DirEntryV2
sqInt dir_Lookup(char *pathString, sqInt pathStringLength, sqInt index,
                 /* outputs: */
                 char *name, sqInt *nameLength, sqInt *creationDate, sqInt
*modificationDate,
                 sqInt *isDirectory, squeakFileOffsetType *sizeIfFile,
sqInt *posixPermissions, sqInt *isSymlink);
sqInt dir_EntryLookup(char *pathString, sqInt pathStringLength, char*
nameString, sqInt nameStringLength,
                /* outputs: */
                char *name, sqInt *nameLength, sqInt *creationDate, sqInt
*modificationDate,
                sqInt *isDirectory, squeakFileOffsetType *sizeIfFile, sqInt
*posixPermissions, sqInt *isSymlink);
#else /* DirEntryV2 */
sqInt dir_Lookup(char *pathString, sqInt pathStringLength, sqInt index,
        /* outputs: */
        char *name, sqInt *nameLength, sqInt *creationDate, sqInt
*modificationDate,
        sqInt *isDirectory, squeakFileOffsetType *sizeIfFile);
#endif /* DirEntryV2 */
sqInt dir_PathToWorkingDir(char *pathName, sqInt pathNameMax);
...

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://
gitorious.org/cogvm/blessed.git, 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).

So...

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.

WOuld it be possible for the Pharo VM guys to occasionally push their
VMMaker-oscog to source.squeak.org?  If this could be automated so much the
better?
-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20131202/96fe080d/attachment.htm


More information about the Vm-dev mailing list