Squeak 5.0 Release Notes
Last updated at 6:25 pm UTC on 12 March 2018
A New Memory Model and Virtual Machine
17th August 2015
Squeak 5 introduces a new object model and VM known as "Spur" . Presented by Eliot Miranda and Clément Béra at the International Symposium on Memory Management in year 2015, this new VM retains the direct-pointer representation of objects in previous Squeak versions but now without requiring a full scan of the heap for become. This is done by introducing hidden forwarding objects which allow references to be updated lazily as they are encountered. Spur's innovation is in avoiding explicit read barriers in all common cases.
Additional Immediate Types
The new Spur memory model supports immediate Characters, so that Characters with unicode greater than 255 can be tested via #==, and wide string access is much faster. The 64-bit version, still under development, also provides immediate floats, occupying the middle 8th of the double precision exponent range.
Simplified and Ready for 64-bit
Internally Spur uses a 64-bit object header, a representation shared between the 32-bit and 64-bit versions, and one that is significantly simpler than the three different header sizes used in the previous version. This simplicity means that the JIT now generates code to implement more primitives, in particular new and new:, resulting in significantly higher performance, at the cost of a 15% increase in image size.
Enhanced Memory Management
Spur has a segmented heap, allowing the heap to grow and shrink a segment at a time. It provides per-object pinning to ensure specific objects will not be moved by the garbage collector, hence simplifying the FFI. Spur provides Ephemerons which allow for per-object finalization and the prevention of uncollectable cycles, for example in global property lists like DependentsFields (although this support has yet to be applied to the system).
Squeak now runs on ARM
As a natural output of the Scratch application on Rasberry Pi project, the Spur VM can now run on the Raspberry Pi.
The Future of Spur
Work is underway on an innovative adaptive optimizer/speculative inliner, and a 64-bit JIT for x64, and a global incremental mark-sweep collector is planned.