All Projects → pharo-project → opensmalltalk-vm

pharo-project / opensmalltalk-vm

Licence: other
This is the VM used by Pharo

Programming Languages

smalltalk
420 projects
c
50402 projects - #5 most used programming language
CMake
9771 projects
shell
77523 projects
assembly
5116 projects
powershell
5483 projects

Labels

Projects that are alternatives of or similar to opensmalltalk-vm

hunter
Hunter: a JavaScript reengineering platform.
Stars: ✭ 31 (-47.46%)
Mutual labels:  pharo
Microdown
Microdown is a cleaned and simpler markdown but with more powerful features such as extensions.
Stars: ✭ 26 (-55.93%)
Mutual labels:  pharo
RenoirSt
A DSL enabling programmatic cascading style sheet generation for Pharo Smalltalk
Stars: ✭ 19 (-67.8%)
Mutual labels:  pharo
NeoConsole
NeoConsole offers a command line (REPL) interface to a Pharo image, as well as other tools.
Stars: ✭ 22 (-62.71%)
Mutual labels:  pharo
Fog
Pharo Ethereum Driver
Stars: ✭ 19 (-67.8%)
Mutual labels:  pharo
Grease
The Grease Portability Library
Stars: ✭ 12 (-79.66%)
Mutual labels:  pharo
Teapot
Teapot micro web framework for Pharo Smalltalk
Stars: ✭ 86 (+45.76%)
Mutual labels:  pharo
QualityAssistant
A live feedback code quality tool for Pharo
Stars: ✭ 17 (-71.19%)
Mutual labels:  pharo
NEAT
NEAT implementation in Pharo
Stars: ✭ 16 (-72.88%)
Mutual labels:  pharo
libtensorflow-pharo-bindings
TensorFlow library bindings for Pharo
Stars: ✭ 30 (-49.15%)
Mutual labels:  pharo
Moose
MOOSE - Platform for software and data analysis.
Stars: ✭ 110 (+86.44%)
Mutual labels:  pharo
Moose2Model
A software exploration tool to support developers during their work
Stars: ✭ 12 (-79.66%)
Mutual labels:  pharo
Buoy
A complement to Pharo
Stars: ✭ 18 (-69.49%)
Mutual labels:  pharo
metacello
Metacello is a package management system for Smalltalk
Stars: ✭ 79 (+33.9%)
Mutual labels:  pharo
themes
A repository for alternative Pharo themes
Stars: ✭ 18 (-69.49%)
Mutual labels:  pharo
heysql
Sql-based orm based on smalltalk reflection ideas
Stars: ✭ 19 (-67.8%)
Mutual labels:  pharo
NeoCSV
NeoCSV is an elegant and efficient standalone Smalltalk framework to read and write CSV converting to or from Smalltalk objects.
Stars: ✭ 20 (-66.1%)
Mutual labels:  pharo
mars-gtk
The Gtk3 bindings for Pharo and Spec
Stars: ✭ 14 (-76.27%)
Mutual labels:  pharo
NeoJSON
NeoJSON is an elegant and efficient standalone Smalltalk framework to read and write JSON converting to or from Smalltalk objects.
Stars: ✭ 29 (-50.85%)
Mutual labels:  pharo
fari.sh
fari.sh — fresh, ready-to-hack Pharo images
Stars: ✭ 12 (-79.66%)
Mutual labels:  pharo

Headless OpenSmalltalk-VM for Pharo

This is the branch of the Headless VM used for Pharo. This branch has the modifications required to run Pharo in a true headless environment. The image running on the VM is responsible of handling the UI and the events.

The image includes a default implementation of the handling of UI through the use of SDL2.

For more details about the whole Pharo VM project refer to our wiki.

This is a fork of OpenSmalltalk-vm. We are doing our best to keep compatibility and contribute back, as long as it fits the objective of Pharo community.

CI

This project is continuously built and test in the CI infrastructure located at:

https://ci.inria.fr/pharo-ci-jenkins2/job/pharo-vm/job/headless/

Building

For building the VM it is required the following set of tools:

  • A working Pharo
  • CMake (at least version 3.7.2)
  • CLang
  • Binutils (make and friends)
  • wget
  • unzip
  • automake
  • libtool

In Linux Fedora, it is needed to install libcurl and to create a symbolic link to alias such library with the name used by libGit. For doing so, it is required to do:

sudo ln -s /usr/lib64/libcurl.so.4 /usr/lib64/libcurl-gnutls.so.4

In Ubuntu 20.04 and in Mint 20, the VM is built with the following packages:

  • build-essential
  • gcc
  • g++
  • binutils
  • cmake
  • git
  • wget
  • unzip
  • uuid-dev
  • libssl-dev

Building in OSX / Linux:

We recommend to use out-of-source building. So, we are building in a different directory than the one containing the sources. To do so, we give both parameter for saying where the source is (-S) and where to build (-B).

$ git clone [email protected]:pharo-project/opensmalltalk-vm.git
$ cmake -S opensmalltalk-vm -B build
$ cd build
$ make install

Building in Windows:

The build in Windows, uses Cygwin. This tool should be installed, and the following Cygwin packages are needed:

  • cmake
  • mingw64-x86_64-clang
  • zip
  • unzip
  • wget
  • curl
  • make
  • git
  • libtool

To automate the Cygwin installation process there is scripts\installCygwin.ps1 which downloads and installs a chosen version of cygwin and mingw for a given architecture. For example the following installs the latest Cygwin (64 bit) and mingw64-x86_64-clang compiler:

.\scripts\installCygwin.ps1 setup-x86_64.exe x86_64

Do not forget to set the execution policy to Unrestricted (from the Admin PowerShell) in order to being able run the ps1 script:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

Bulding the VM:

$ cmake .
$ make install

The VM is built from generated code and code written by hand. The generated code is the result of converting Smalltalk code into C. This conversion is performed during the cmake process.

This will generate the VM in build/dist/

VM flavours

By default the cmake build will build a CogVM, that is, a VM configuration with JIT compilation. Our cmake configuration accepts a FLAVOUR argument to specify different vm flavours to build, which you can use as follows:

$ cmake -DFLAVOUR=[your flavour] .

The accepted flavours for the moment are as follows:

  • CoInterpreterWithQueueFFI: VM including JIT
  • StackVM: VM with context to native stack mapping, without JI

In case of Problems

In case of problems with the build, please tell us including the following things:

  • Command executed
  • CMakeFiles/CMakeOutput.log
  • CMakeFiles/CMakeError.log
  • CMakeCache.txt
  • If you are using windows, please include the output of cygcheck -s

Source Directory Structure

The headless mode is developed on top of code of the Cog branch of Opensmalltalk-vm. The code that is used without changes is stored in the extracted directory. This allows us to easy integrate changes from and to the Cog branch.

The code that has been specially created or modified for this branch is stored in src / include and plugins.

  • smalltalksrc: includes the tonel repository with the code in Slang.
  • generated: here VMMaker will generate the VM code.
  • includes: All non generated includes required by headless mode
  • src: All non generated code required by headless mode.
  • extracted: This code is literally the same code base used in the normal OpenSmalltalk-VM build.
  • plugins: The code of the different plugins developed for headless mode.

Editing the VM code in your image

You can load the Pharo code of the VM using Pharo's git client Iceberg. You can do so by cloning directly this repository from Iceberg, or by adding an already existing clone to it.

Alternatively, if you're building the VM using the instructions above, the build process does already generate a Pharo image with the VM code loaded. You'll find such Image in the build/vmmaker directory inside your build directory.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].