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