I have been tinkering with Pharo and Squeak
for a few weeks and I am very enthusiastic with these great pieces of
software! I would like to ask questions to check my understanding. I am
refering from time to time to Squeak as it runs on the same VM as Pharo
but my questions are focused on Pharo.
As an exercice
to learn, I am trying to compile Pharo VMs and get the VM simulator run
in a Pharo image (first a 32-bit image+VM and later a 64-bit image+VM).
I am doing this both under Ubuntu 14.04 LTS and Mac OS X 10.12.6.
What I succeeded in doing:
compiling the squeak and pharo VM using the state of their respective
git repo as of about 20 July 2017: on Mac both 32 and 64 bits, on Linux
only 64 bits (mainly because I did not want to spend the time to fix the
32-bit libraries which do not coexist well with their 64-bit
- on Mac, generating the VM development
image (SpurVMMaker) for Squeak on top a (32 bits) V5 image, launch it
and run the VM simulator,
- on Mac, generating the VM
development image (generator.image) for Pharo on top of a (32 bits) V5
image, launch it and starting to run a CogVMSimulator (which currently
fails, but I am debugging it and learning along the way.)
So, my questions:
About the Pharo VM compilation (Below "the" Pharo VM means the official
VMs that are published on the Pharo website but if VM developers use a
different process between 2 releases I would be happy to know the
a) is it correct that the Pharo VM is built using the github pharo-vm repository?
in the pharo-vm tree, is it correct that "build" and "results"
directories are remnant of the build process before Pharo reunited with
Squeak on opensmalltalk vm and that the builder classes in the
generator.image (PharoVMSpur32Builder and co) do not create the build.sh
script in the "build" directory any more.
c) is it
correct that the Pharo VM is now built with the pharo.cog.spur (for
example) make process in the various build sub-directories of the
2) When running a Pharo VM compiled on Mac, the GUI was noticeably slower that the official VM downloaded from pharo.org.
(I compared running the official image.) I did not see such slow down
when compiling a Squeak VM. My educated guess is that it is related to
libcairo and dependencies. Are there compiler optimisations that I
should have manually added? Should I generate a XCode project with cmake
and compile in XCode (I currently use ./mvm make script)? I have not
had this problem under Linux.
3) On Mac, is the difference
between having the plugins as Mach-O bundle in Squeak and as dylib
libraries in Pharo only a packaging choice or does it have deeper
implications? (Does it change for example the way FFI is done?)
Do I understand well that currently the simplest way to convert a
32-bit image to a 64-bit one is to use Spur32to64BitBootstrap class in a
VM development image? (As far as I understand, the other way is to use
A remark: when manually
compiling a Pharo VM in the pharo-vm repo following Eliot's
instructions, the updateSCCSVersions script does not work (because it is
one level down with respect to the top of the git tree as compared to
the opensmalltalk-vm repository). I eventually understood that the
correct build procedure is in the travis scripts but as I do not know
well the CI tools, it took a long time before I thought of looking into
these scripts. If pharo-vm is used to build the Pharo VM (see question
1.a) I think it would be good to update the build process in README.md
in pharo-vm tree (and I can do it).
PS: Torsten Bergmann advised to repost here (initially posted on pharo-users).