This repository holds the code of the Pharo Virtual Machine. This implementation started as a fork of OpenSmalltalk-vm. The current project could not have been possible with all their previous work.
The current implementation presents the following core features:
- an indirect threaded bytecode compiler using GNU extensions
 - a generational scavenger garbage collector: semi-space + nursery for the young generation, a mark-compact collecting for the old generation
 - a space for permanent objects that need not to be scanned by the GC
 - a baseline JIT compiler that
- translates primitive operations using IR templates
 - translates bytecode methods using a simple abstract interpretation approach to reduce memory pressure (less loads/stores)
 
 - FFI through the well-known libFFI, and support for non-blocking FFI using worker threads
 
For more details about the whole Pharo VM project refer to our wiki.
- Building the Virtual Machine
- Flavors
 - Different VM Configurations
 - Build Options
 - Building in Different Platforms
- General Build Information
 - Detailed Build Guide
 - Detailed Development Guide
 - Windows Build Information
 - OSX Build Information
 - Linux Build Information
- Open Build Service
 - Installing Pharo into Linux Distributions
 - Cross Compiling ARM64 in Ubuntu
 - Cross Compiling ARM32 in Ubuntu
 - Compiling in Manjaro ARM64
 - Compiling in Fedora
 - Compiling in Debian
 - Compiling in Ubuntu/Mint
 - Compiling i686 third party dependencies
 - Compiling ARM64 third party dependencies
 - Compiling ARM32 third party dependencies
 
 
 - Troubleshooting
 
 - Continuous Integration
 - Developer documentation
 - How to contribute
 - Glossary