<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Hi Andreas,</div><div><br>On Apr 3, 2015, at 4:04 AM, Andreas Wacknitz &lt;<a href="mailto:A.Wacknitz@gmx.de">A.Wacknitz@gmx.de</a>&gt; wrote:<br><br></div><blockquote type="cite"><div>
  
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  
  
    <br>
    <div class="moz-cite-prefix">Am 03.04.15 11:13, schrieb Esteban
      Lorenzano:<br>
    </div>
    <blockquote cite="mid:1C1233AA-9813-45E3-83F7-79AA3908A885@gmail.com" type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <br class="">
      <div>
        <blockquote type="cite" class="">
          <div class="">On 02 Apr 2015, at 19:20, Eliot Miranda &lt;<a moz-do-not-send="true" href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>&gt;
            wrote:</div>
          <br class="Apple-interchange-newline">
          <div class="">
            <div dir="ltr" class="">Hi Andreas,
              <div class=""><br class="">
              </div>
              <div class="">&nbsp; &nbsp; sorry to be late in replying.&nbsp; This has
                been a busy month (I moved house).</div>
              <div class="gmail_extra"><br class="">
                <div class="gmail_quote">On Sat, Mar 14, 2015 at 10:33
                  AM, Andreas Wacknitz <span dir="ltr" class="">&lt;<a moz-do-not-send="true" href="mailto:a.wacknitz@gmx.de" target="_blank" class="">a.wacknitz@gmx.de</a>&gt;</span> wrote:<br class="">
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex">&nbsp;<br class="">
                    <div style="word-wrap:break-word" class="">Hi Eliot,
                      <div class=""><br class="">
                        <div class="">
                          <blockquote type="cite" class="">
                            <div class="">Am 11.03.2015 um 23:15 schrieb
                              Eliot Miranda &lt;<a moz-do-not-send="true" href="mailto:eliot.miranda@gmail.com" target="_blank" class="">eliot.miranda@gmail.com</a>&gt;:</div>
                            <br class="">
                            <div class="">
                              <div dir="ltr" class="">HI Andreas,
                                <div class="gmail_extra"><br class="">
                                  <div class="gmail_quote">On Wed, Mar
                                    11, 2015 at 9:55 AM, Andreas
                                    Wacknitz <span dir="ltr" class="">&lt;<a moz-do-not-send="true" href="mailto:a.wacknitz@gmx.de" target="_blank" class="">a.wacknitz@gmx.de</a>&gt;</span>
                                    wrote:<br class="">
                                    <blockquote class="gmail_quote" style="margin:0 0 0
                                      .8ex;border-left:1px #ccc
                                      solid;padding-left:1ex">&nbsp;<br class="">
                                      <div style="word-wrap:break-word" class="">Hi Clement,
                                        <div class=""><br class="">
                                          <div class="">
                                            <blockquote type="cite" class="">
                                              <div class="">Am
                                                11.03.2015 um 09:23
                                                schrieb Clément Bera
                                                &lt;<a moz-do-not-send="true" href="mailto:bera.clement@gmail.com" target="_blank" class="">bera.clement@gmail.com</a>&gt;:</div>
                                              <br class="">
                                              <div class="">
                                                <div dir="ltr" class="">Hello,
                                                  <div class=""><br class="">
                                                  </div>
                                                  About the FreeBSD VM,
                                                  Holger Freyther worked
                                                  on it so he's the best
                                                  person to answer. I
                                                  think some people used
                                                  it and it was at least
                                                  partially working.</div>
                                              </div>
                                            </blockquote>
                                            That’s my impression. The
                                            VMMaker contains some
                                            FreeBSD classes but I have
                                            the impression that they are
                                            not complete (and probably
                                            outdated).</div>
                                          <div class=""><br class="">
                                            <blockquote type="cite" class="">
                                              <div class="">
                                                <div dir="ltr" class="">
                                                  <div class=""><br class="">
                                                  </div>
                                                  <div class="">About
                                                    your NativeBoost bug
                                                    on openSolaris,
                                                    &nbsp;need more
                                                    information:</div>
                                                  <div class=""><br class="">
                                                  </div>
                                                  <div class="">- Can
                                                    you confirm that you
                                                    use an intel
                                                    processor on your
                                                    openSolaris machine
                                                    ? I assume that yes
                                                    but I ask because
                                                    solaris were
                                                    typically running on
                                                    other processors.
                                                    NativeBoost, as of
                                                    today, works only
                                                    with intel
                                                    processor.</div>
                                                  <div class=""><br class="">
                                                  </div>
                                                </div>
                                              </div>
                                            </blockquote>
                                            Yes, my Sun Ultra 24 is an
                                            Intel based Workstation
                                            (Q9300).</div>
                                          <div class=""><br class="">
                                            <blockquote type="cite" class="">
                                              <div class="">
                                                <div dir="ltr" class="">
                                                  <div class="">- Do you
                                                    build the Cog VM or
                                                    Stack VM ? I mean
                                                    PharoVMBuild or
                                                    PharoSVMBuild ? I
                                                    think the
                                                    PharoSVMBuild does
                                                    not include
                                                    NativeBoost by
                                                    default, that may be
                                                    your problem.
                                                    There's a fix
                                                    somewhere...</div>
                                                  <div class=""><br class="">
                                                  </div>
                                                </div>
                                              </div>
                                            </blockquote>
                                            PharoVM from "branch
                                            'master' of <a moz-do-not-send="true" href="https://github.com/pharo-project/pharo-vm" target="_blank" class="">https://github.com/pharo-project/pharo-vm</a>"&nbsp;(thus
                                            Cog VM).</div>
                                        </div>
                                      </div>
                                    </blockquote>
                                    <div class=""><br class="">
                                    </div>
                                    <div class="">I would like to fold
                                      back any changes into the svn
                                      master repository for Cog. &nbsp; What
                                      are the diffs? &nbsp;(If you have time
                                      to send me the diffs that would
                                      save me a lot of time).</div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </blockquote>
                          I don’t know whether there is much to harvest
                          from what I did. As far as I remember most of
                          my work was hacking the generator image
                          created by the pharo vm scripts (for my Mac)
                          in order to make</div>
                        <div class="">the resulting C code to compile
                          under openindiana. The basis for Solaris was
                          already there (and as far as I can see it is
                          also in the Squeak VM sources). I only tweaked
                          some definitions and includes.</div>
                        <div class="">I will look at my notes tomorrow
                          and will post if I will find something
                          relevant.</div>
                        <div class=""><br class="">
                        </div>
                        <div class="">I am curios about the future of
                          the PharoVM. The main development of the VM
                          seem to happen in the SqueakVM (by you).
                          Getting the Spur changes into the PharoVM seem
                          to be a lot of work.</div>
                      </div>
                    </div>
                  </blockquote>
                  <div class=""><br class="">
                  </div>
                  <div class="">Note that this will happen (or is
                    already happening).&nbsp; Esteban is working on building
                    the Spur version of Pharo, so he is doing this
                    work.&nbsp; But actually it *isn't* that much work.&nbsp;
                    There is basically a trio of new memory management
                    files for each platform, e.g.
                    platforms/unix/vm/sqUnixSpurMemory.c, and a new
                    source tree for the spur vm, spursrc/vm.&nbsp; The system
                    is already set up to build multiple VMs (at least
                    the svn tree is).</div>
                </div>
              </div>
            </div>
          </div>
        </blockquote>
        <div><br class="">
        </div>
        <div><br class="">
        </div>
        <div>Yes, this is already done. We are building spur VMs and
          images since awhile now. You can find all the related jobs
          here:&nbsp;</div>
        <div><br class="">
        </div>
        <div><a moz-do-not-send="true" href="https://ci.inria.fr/pharo/view/4.0-VM-Spur/" class="">https://ci.inria.fr/pharo/view/4.0-VM-Spur/</a></div>
      </div>
    </blockquote>
    If I follow this link and what is being used there brings me to the
    ordinary PharoVm project on github:<br>
    <a class="moz-txt-link-freetext" href="https://github.com/pharo-project/pharo-vm">https://github.com/pharo-project/pharo-vm</a><br>
    There are three branches: master, develop and spur64. Which one is
    being used to build PharoVM-spur32?<br>
    <br>
    <blockquote cite="mid:1C1233AA-9813-45E3-83F7-79AA3908A885@gmail.com" type="cite">
      <div>
        <div><br class="">
        </div>
        <div>And as Eliot says… is not *much* work… except when it is :)</div>
        <div>In fact, we were planning to release Pharo 4 (next week)
          with a Spur VM, but we didn’t finish all the small things
          around. So we will release next July (or around) a Pharo 4S
          (S, for Spur) with “official” spur support. We do not want to
          stay to much time in older versions. Also, our development
          process is different </div>
      </div>
    </blockquote>
    This explanation irritates me: Pharo 4 will be released soon with a
    Spur VM? And then around summer Pharo 4S? Isn't it a contradiction?<br>
    <br>
    <blockquote cite="mid:1C1233AA-9813-45E3-83F7-79AA3908A885@gmail.com" type="cite">
      <div>
        <div>than squeak, AFAIK… we drop backward compatibility in a
          regular basis. Which basically means we will move to spur and
          we will drop support for older versions. <br>
        </div>
      </div>
    </blockquote>
    That's OK, but I am still, hmm say confused, because Eliot is
    changing A LOT (just look at what has been released during the last
    days), but PharoVM hasn't been<br>
    changed for some days (I am following the master branch closely). So
    there is a rapid development in the Cog branch of the SqueakVM. The
    changes in the PharoVM are much slower (at least as I recognise it).<br></div></blockquote><div><br></div><div><br></div>It may seem like I'm changing a lot, but I am /not/ changing the base and Spur VMs much. &nbsp;I am only fixing bugs I. spur. That's because I'm stabilising the VM for the Squeak 5 release.<div><br></div><div>The changes are in two areas that are as yet unreleased. &nbsp;One area is the JIT for ARM that Tim and I are working on. &nbsp;The other area is Sista, the speculative inliner, that Clément and I are working on.<div><br></div><div><br><blockquote type="cite"><div>I have more questions but I am reluctant to disturb you further as
    you must be quite busy atm.<br>
    <br>
    Best regards<br>
    Andreas<br>
    <blockquote cite="mid:1C1233AA-9813-45E3-83F7-79AA3908A885@gmail.com" type="cite">
      <div><br class="">
        <blockquote type="cite" class="">
          <div class="">
            <div dir="ltr" class="">
              <div class="gmail_extra">
                <div class="gmail_quote">
                  <div class=""><br class="">
                  </div>
                  <div class="">&nbsp;</div>
                  <blockquote class="gmail_quote" style="margin:0 0 0
                    .8ex;border-left:1px #ccc solid;padding-left:1ex">
                    <div style="word-wrap:break-word" class="">
                      <div class="">Wouldn’t it be better to move back
                        the changes of the PharoVM into the SqueakVM and
                        have a united development?</div>
                    </div>
                  </blockquote>
                  <div class=""><br class="">
                  </div>
                  <div class="">Well, I don't think the Pharo community
                    will be willing to move to svn.&nbsp; SOme time I may be
                    able to move to git.&nbsp; But yes, I *would* like to see
                    important fixes merged back into the SqueakVM.&nbsp; I
                    think this is very important.&nbsp; I'm too overloaded to
                    look at the pharovm so I'm dependent on those
                    working on the pharovm in giut to send me changes
                    for integration.</div>
                </div>
              </div>
            </div>
          </div>
        </blockquote>
        <div><br class="">
        </div>
        <div>Right, we are happy with our process and I do not see it
          fitting with svn. We changed a lot of “organisational” stuff
          to ensure traceability and “buildability” (if such word
          exists…). And we have made a lot of progress in that area
          using git and github infrastructure at a point most of the
          time to incorporate a change we just accept a pull request.&nbsp;</div>
        <div>To be able to do that:</div>
        <div>- we have to be sure what version of each component (vm,
          plugin, platform source) is part of the commit info. That’s
          why we keep together both platform sources and image sources
          (using filetree monticello format). That way each commit has
          everything we need to build the new vm. In fact… I have a
          script “./newVM &lt;commit&gt;” that does a clone, prepares an
          image, generates sources and builds the vm… then I can test if
          a pull request is valid. But most of the time that is not
          needed, because:</div>
        <div>- &nbsp;for each pull request, we fire a travis job that creates
          a vm from scratch and then runs all tests we have in Pharo
          (and we have improved a lot in that area latest years). They
          are not “vm specific tests”, but since they tests all the
          system, if vm does not crashes and tests are run, we can be
          sure is working (this wouldn’t be possible without right
          traceability).&nbsp;</div>
        <div>- we also build the vm using CMake, but not directly, we
          use CMakeMaker which allow us to define the build in
          smalltalk.</div>
        <div>- finally, we would like to use the other capabilities (for
          documentation, etc.) we gain for free by using github. Not
          that we are already using it… but we would like, in the
          future.&nbsp;</div>
        <div><br class="">
        </div>
      </div>
    </blockquote>
    Is there an up-to-date documentation of the processes? Especially if
    I want to add more platform support (like openindiana or FreeBSD)?<br>
    My time is very limited (my day job is quite different from what I
    do in my spare time + my family and my house also need a lot
    attention + next to my Smalltalk interets I am also interested in
    operating systems) so my reaction time is sometimes quite slow :)<br>
    &nbsp;<br>
    <blockquote cite="mid:1C1233AA-9813-45E3-83F7-79AA3908A885@gmail.com" type="cite">
      <div>
        <div>So… obviously all of this can be achieved without using git
          and github… but there the infrastructure is already done.&nbsp;</div>
        <div><br class="">
        </div>
        <div>Said that. Even if we actually have a different process, we
          (Myself, particularly) are trying to reduce the gap between
          both VMs. And right now this is the status:</div>
        <div>- in the VM itself there is almost no change. AFAIR, just
          two small things:&nbsp;</div>
        <div>a) I include setjmp.h somewhere, because compiler was
          asking for it (We use different versions than Eliot)</div>
        <div>b) the macro to read the image is changed, because we
          needed to change it for allow build an iOS image. This is just
          one line in the image and the addition of one macro in 4
          platform sources (Linux, Win and Mac redirects to old macro,
          but iOS implements something different)</div>
        <div>- In the platforms we have the most important difference,
          because we deprecated the “Mac OS” branch in favor of “iOS”,
          which in fact should be called OSX, because is the Cocoa
          version. I understand Eliot want to go in that direction soon
          so we will align in that area too (btw, that branch has growth
          organically so we'll need to do some reorganisation to clarify
          it, eventually)</div>
        <div>- in the plugins, we try to adopt a different approach than
          the previous one: instead using particularities of the
          platform, we want to align sources as much as possible, so we
          use the posix libraries. Again, that’s just when is possible
          (and when we have time). The most important change we produced
          here is with FilePlugin: we changed it to provide
          posix-permissions (and soon we will add primitives to retrieve
          also ownership). To allow that, we changed a lot in the
          windows version of the plugin, because instead windows
          functions we use MinGW. We would like to see this changes
          merged.</div>
        <div><br class="">
        </div>
        <div>After that, I think there will be some other minor changes…
          not many, and most probably we can remove those differences.&nbsp;</div>
        <div><br class="">
        </div>
        <div>hope this clarify all :)</div>
      </div>
    </blockquote>
    That's a nice explanation at least.<br>
    But I am still confused. Especially because you didn't mention
    NativeBoost :)<br>
    The ffi area also seem to be different and i a flux.<br>
    <br>
    And still: How to integrate more platforms?<br>
    <br>
    Regards<br>
    Andreas <br>
    <br>
  

</div></blockquote></div></div></body></html>