> On 11 Aug 2017, at 12:08, Bruno Durin <bruno.du...@gmail.com> wrote: > > Hi, > > 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 counterparts) > - 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: > 1) 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 > differences.) > a) is it correct that the Pharo VM is built using the github pharo-vm > repository?
yes and no. - the officially distributed pharo-vm is built on opensmalltalk/opensmalltalk-vm and published into our servers. - we keep pharo-vm (in which opensmalltalk-vm is a subtree) repo as a CI/testing platform (that produces the “nightly-built” VMs from files.pharo.org/vm/nigthtly-builds <http://files.pharo.org/vm/nigthtly-builds>), but this is used just for testing results, etc. the VMs that people should use are produced in the main repository. > b) 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. yes. > 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 > "opensmalltalk-vm" directory? yes. > 2) When running a Pharo VM compiled on Mac, the GUI was noticeably slower > that the official VM downloaded from pharo.org <http://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. no. I have no idea why you have a slower UI but - it is not related to cairo since standard pharo does not use it (just athens does) - you should not need to do anything manually (besides executing ./mvm -f) - you do not need to generate an Xcode project either… > 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?) it's just a packaging choice. > 4) 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 > SystemTracer.) yes. I don’t even know if it is *possible* with system tracer right now :) > 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). yes, that’s right :) cheers, Esteban > > Thanks, > Bruno > >