Skip to content

About Branches

Guille Polito edited this page May 31, 2024 · 1 revision

This repository hosts different versions of the VM. Each of them applies to different versions of Pharo. Each version is handled in a different branch.

Branches

Main Branches

  • pharo-10: The current PharoVM development. (Default)
  • pharo-9: The stable branch (See releases).

Legacy Branches

  • cog/ legacy things:
    • dev7: In this branch, we make any change that should be backported to the VM used in Pharo 7 and Pharo 8. Every change that we do that requires a backport to Pharo 7 & 8 is stored in this branch. This branch allows us to build the same VM that is used in production, fixing in this branch any problem or incident.
    • Cog: This branch is in sync (or tries to be) with the corresponding branch of the Opensmalltalk-VM repository. As this is the main branch in their repository, we use it to fetch changes. This branch has not been modified by us in any case, and no modifications should be pushed here. This branch should be also the starting point of any branch used in a PR to the Opensmalltalk-VM repository.

Feature Branches

  • headless: This is a development version. It removes all events and window handling from the VM and passes it to the image. The image is responsible to open or not a window and to handle the events. We have two different window libraries in the image: SDL and GTK+. By default an image uses SDL. All Pharo 8 and Pharo 9 images are compatible with this VM. This version can be heavily used and tested. It is working for Windows, OSX, and Linux. Check the documentation page if you want to experiment with it.
  • feat/permSpace: Here is implemented a new Permanent Space for objects in the generational Garbage Collector. The idea is to move (almost) never recollected objects to a space that is not traversed by the GC. This will be good, especially for big images, when the GC take some seconds and many objects survive (almost) always. It is being tested yet.
  • feature/cogmt: Experimental version. It implements the multi-threaded interpreter using a global interpreter lock. Only one of the interpreters is running at the time. Details about the design.
  • druid: Changes (mainly in the interpreter's primitives) for the Druid project. The goal of this project is to generate the JIT compiler code from the interpreter code, thru an abstract meta-interpretation and optimisations.
  • autotesting : To describe.
  • ranger2 : A novel automated testing approach for virtual machines featuring byte-code interpreters. Ranger uses concolic meta-interpretation.

Experiments Branches

  • experiment/live-typing-stack: This is an experimental branch. In this branch, we have the live typing proposals done by Hernán Wilkinson. This version only have the modifications for the VM without JIT.
Clone this wiki locally