Releases: OpenSmalltalk/opensmalltalk-vm
202601200834
Release Candidate Version 2026 (for updated Squeak 6.0/5.3 bundles; prospectively also Cuis 7 and the upcoming Squeak 6.1)
This is a patch release. Also see the update notes of OSVM Version 2025.12.
Update notes are based on the commit messages since Cog-eem.504 and VMMaker.oscog-eem.3705. Also see update map update.oscog-mt.17, which corresponds to this tag (which is based on Cog-eem.507 and VMMaker.oscog-eem.3728).
- Adds
XorCq:R:to JIT (32/64-bit cog.spur) - Adds
primitiveSlotAtPutto JIT (32-bit cog.spur) - Adds recursion guard to
primitiveTruncated(boxed float, 32-bit spur) - Updates
genDivR:R:Quo:Rem:in JIT (ARMv6) - Fixes crashes when deleting a file as big as a typical Smalltalk image (ARMv8 on Pi,
addToOpenPICList:) - Fixes machine-code (JIT) bug in
primitiveAtPutforDoubleWordArray(32-bit cog.spur) - Fixes recent regression in
bindErrorReaper:flags:calloutState:(threaded-ffi, error reaping) - Fixes another regression in Threaded-FFI
🔧 VMMaker Dev Notes
- Fixes printing disassembly in some cases
- Fixes simulation of
signed32BitIntegerFor: - Fixes simulation of SmartSyntax plugin methods
- ...
🚧 Compatibility notes
- Pre-built Linux binaries require
GLIBC_2.35, which means Ubuntu 22.04 or later- For older systems, please try linux64x64_ubuntu-20.04 or build the VM on your own
- We will happily help out; just ask on the vm-dev mailing list
- On macOS, a restart of the VM is required after installing SqueakFFI for the first time
- Otherwise, modules and function addresses cannot be loaded
- On macOS, the Smalltalk interpreter now runs on a non-GUI thread, which might affect some GUI-related FFI callouts in third-party projects. We plan to provide an option so that FFI can be used again in these cases. For GUI-related VM primitives, we made sure to choose the correct thread.
- On Windows, the CameraPlugin is now part of the release because we now build with the Windowns 10 SDK, not mingw-w64. Both ways are still supported for custom builds.
- (VMMaker)
RawBitsArray >> byteAt:is now expected in the base Squeak image (i.e. Squeak 6.1alpha and later) because it was removed fromVMMaker-Simulationpackage
ℹ️ Info on VM flavors
- cog.spur (32/64-bit, has JIT, ARM or Intel, Squeak 5.0 and later)
- stack.spur (32/64-bit, no JIT, ARM or Intel, Squeak 5.0 and later)
- LEGACY
- cog.v3 (32-bit, has JIT, ARM or Intel, Squeak 4.6 and before)
- stack.v3 (32-bit, no JIT, ARM or Intel, Squeak 4.6 and before)
- COMPATIBILITY
- cog.spur for Ubuntu 22.04 (requires
GLIBC_2.35or later; Ubuntu Pro LTS support lasts until 2032) - cog.spur for Ubuntu 20.04 (requires
GLIBC_2.31or later; Ubuntu Pro LTS support lasts until 2030)
- cog.spur for Ubuntu 22.04 (requires
If you want to compile the sources that are attached here, put the sqSCCSVersion.h from here into platforms/Cross/vm.
202512161609
📢 Please use the more recent release candidate OSVM Version 2026
Release Candidate Version 2025.12 (for updated Squeak 6.0/5.3 bundles; prospectively also Cuis 7 and the upcoming Squeak 6.1)
This is a patch release. Also see the update notes of OSVM Version 2025.
Update notes are based on the commit messages since Cog-eem.502 and VMMaker.oscog-eem.3662. Also see update map update.oscog-mt.16, which corresponds to this tag (which is based on Cog-eem.504 and VMMaker.oscog-eem.3705).
- Removes obsolete window-manipulation primitives from VM core because they have long been part of the
HostWindowPlugin - Adds mutability checks for graphics primitives
- Adds feature to indicate errors after FFI call-outs (as image-header flag)
- Adds "error reaping" feature for FFI calls
- Fixes issue in
primitiveDoPrimitiveWithArgs - Fixes issue in BitBltPlugin (clipping bug)
- Fixes issue in
CogARMv8Compiler - Fixes issue in primitives for
AndreasSystemProfiler - Fixes failure to set upper 32-bits in jitted
DoubleWordArray at:put:on 32-bit platforms - Fixes truncated result bug in
BitBltPlugin rgbMulrule on 32-bit platforms - On macOS, fixes issue with the full-screen primitive 233
- On macOS, fixes issue with setting the Squeak window size via HostWindowPlugin
- On Windows, fixes issue with an in-image exception while processing the StartupList
🔧 VMMaker Dev Notes
- Adds primitives to access performance counters (processor-simulator plugins)
- Fixes printing decorated register address expressions for Intel (like it is for ARM)
- Fixes simulation of
ceActivateFailingPrimitiveMethod: - Fixes simulation of
primitiveScanCharacters - Fixes simulation of
primitiveGetWorkingDirectory(used in Cuis) - Fixes simulation via
BitBltSimulationplugin - Fixes simulation of V3
StackInterpreter - Fixes simulation via
Matrix2x3PluginSimulator(asserts fixed) - Fixes for opening the recent instructions log
- On ARMv8/Pi, crashes when deleting a file as big as a typical Smalltalk image
🚧 Compatibility notes
- Pre-built Linux binaries require
GLIBC_2.35, which means Ubuntu 22.04 or later- For older systems, please build the VM on your own
- We will happily help out; just ask on the vm-dev mailing list
- On macOS, a restart of the VM is required after installing SqueakFFI for the first time
- Otherwise, modules and function addresses cannot be loaded
- On macOS, the Smalltalk interpreter now runs on a non-GUI thread, which might affect some GUI-related FFI callouts in third-party projects. We plan to provide an option so that FFI can be used again in these cases. For GUI-related VM primitives, we made sure to choose the correct thread.
- On Windows, the CameraPlugin is now part of the release because we now build with the Windowns 10 SDK, not mingw-w64. Both ways are still supported for custom builds.
- (VMMaker)
RawBitsArray >> byteAt:is now expected in the base Squeak image (i.e. Squeak 6.1alpha and later) because it was removed fromVMMaker-Simulationpackage
ℹ️ Info on VM flavors
- cog.spur (32/64-bit, has JIT, ARM or Intel, Squeak 5.0 and later)
- stack.spur (32/64-bit, no JIT, ARM or Intel, Squeak 5.0 and later)
- LEGACY: cog.v3 (32-bit, has JIT, ARM or Intel, Squeak 4.6 and before)
- LEGACY: stack.v3 (32-bit, no JIT, ARM or Intel, Squeak 4.6 and before)
If you want to compile the sources that are attached here, put the sqSCCSVersion.h from here into platforms/Cross/vm.
202509300044
📢 Please use the more recent release candidate OSVM Version 2025.12
Release Candidate Version 2025 (for updated Squeak 6.0/5.3 bundles; prospectively also Cuis 7 and the upcoming Squeak 6.1)
Update notes are based on the commit messages since Cog-eem.455 and VMMaker.oscog-eem.3347. Also see update map update.oscog-mt.13, which corresponds to this tag (which is based on Cog-eem.502 and VMMaker.oscog-eem.3662).
- Adds support for ARMv8 JIT on Windows platforms
- Adds VM parameter 51; a set of bit flags describing the load-status of the such as "swizzled/relocated" and "embedded" (parameter is read-only; later Cog VMs only; otherwise nil)
- Adds primitive 150 (BoxedFloat64>>primitiveCosine)
- Adds primitive 560 (SmallFloat64>>primitiveCosine)
- Adds #primitiveRenderAllScanlines and #primitiveGetAllStats to speed-up font rendering (BalloonEngine)
- Adds #primitiveGetWorkingDirectory and #primitiveSetWorkingDirectory (FilePlugin)
- Adds #primitiveCogitMethod for method introspection (custom VM build via #VMInvestigations option)
- Adds #primitiveMethodIsCogged for method introspection (custom VM build via #VMInvestigations option)
- Fixes memory growing when the first attempt fails
- Fixes issue in BMPReadWriterPlugin
- Fixes issue in #primitiveShowDisplayRect when using bad arguments
- Fixed issue in FFI plugin / ThreadedFFIPlugin on Apple (ARM64) silicon regarding varargs
- Fixes issue in FFI plugin / IA32ABIPlugin (#primAllocateExecutablePage)
- Fixes issue in FFI plugin regarding two-register-struct return convention (SysV x86_64 ABI)
- Fixes and improvements in several Slang translation rules
- Fixes an older regression regarding large-integer support in V3 images (i.e. Squeak 4.6 and before)
- Fixes an older regression regarding #primitiveFullGC (garbage collection)
- Fixes issues around ephemeron support
- Fixes issue in primitive 83 (#perform: etc.; jitted version)
- Fixes issue in primitive 60 (#digitAt:; 64-bit Spur)
- Fixes issues in JIT code generation (64-bit and 32-bit ARM)
- Fixes range issue in primitive 51 (#truncated in BoxedFloat64)
- Fixes issues in support for AndreasSystemProfiler
- Fixes issue where
#primitiveScreenScaleFactorreported0in certain cases on Windows platforms - Updates VectorEnginePlugin (Cuis 7 support)
- Updates ImmX11Plugin (no effect)
- Updates support for threaded FFI callouts (only multi-threaded VM)
- Updates support for embedded images (i.e. embedded in the VM executable)
- Updates FloatMathPlugin primitives (no production effects expected)
- Updates BoxedFloat64 primitives 51 to 58 for increased performance
- Updates in AsynchFilePlugin
- Updates in FilePlugin
- Updates in BitBltPlugin
- Updates in Sista interpreter (inlining)
- Updates and improves primitive 176 (maxIdentityHash) in Cogit for better performance, e.g., in dictionary lookup
- Updates and improves identity hash pseudo-random number generator for object hashes (old: variation on D.H. Lehmer's linear congruential generator; new: Marsagalia/Brent xor & shift linear feedback shift register)
- Updates and improves method-cache flushing (Spur only)
🔧 VMMaker Dev Notes
- Adds support for deferred disassembly, i.e. from data exported by #primitiveCogitMethod; allows display of the contents of a method jitted in the production VM rather than the simulator
- Adds support for breakpointing the creation of TMethods
- Adds more robustness in simulated plugin loading
- Adds support for simulating more FFI-related things (e.g. arg marshalling, callout)
- Adds variant of CoInterpreter with LiveTyping support (for custom builds)
- Adds #findClassNamed: (Spur only)
- Adds #essential: pragma complementing #option: and #nonOption:
- Fixes regression in CogMethod header printing
- Fixes simulation of system attribute 1003 (processor name)
- Fixes simulation of several interpreter methods
- Fixes simulation of #firstIndexableField: uses (issues noticeable in font rendering)
- Fixes simulation of BalloonEnginePlugin (B2DPlugin)
- Fixes simulation of VectorEnginePlugin
- Fixes regression in Slang regarding method inlining (only threaded VM)
- Fixes type inference in Slang
- Updates ProcessorSimulatorPlugin with new disassembly primitives
GdbARMv8Alien - Updates disassembly in CogProcessorAliens
- Updates disassembly of CogMethod
- Updates assembly tokenizer (for all processor simulators)
- Updates Spur32to64BitImageConverter
- Updates tooling for inspecting recent CPU registers
- Updates dev tooling for simulating ARM-based processors
- Updates dev tooling for Ephemerons and Weaklings (print-strings)
- Updates dev tooling to use ARM Ltd. standard terminology in debugging tools
- Updates dev tooling around Sista
- Updates simulation of #getAttributeString:
- Updates simulation of high-dpi images to make #ioScreenScaleFactor configurable
- Updates overall commentary
- Updates Slang tests
- Updates and partially rewrites Slang transpiling and inlining strategies (e.g. makes
<inline: #always>effect foreseeable, adds<inline: #first>) - Updates and improves Pragmatizer
- Updates and improves high-dpi support for VMMakerTool
- Updates and generalizes process-logging support (i.e. push up from CoInterpreter to StackInterpreter)
🚧 Compatibility notes
- Pre-built Linux binaries require
GLIBC_2.35, which means Ubuntu 22.04 or later- For older systems, please build the VM on your own
- We will happily help out; just ask on the vm-dev mailing list
- On macOS, a restart of the VM is required after installing SqueakFFI for the first time
- Otherwise, modules and function addresses cannot be loaded
- On macOS, the Smalltalk interpreter now runs on a non-GUI thread, which might affect some GUI-related FFI callouts in third-party projects. We plan to provide an option so that FFI can be used again in these cases. For GUI-related VM primitives, we made sure to choose the correct thread.
- On Windows, the CameraPlugin is now part of the release because we now build with the Windowns 10 SDK, not mingw-w64. Both ways are still supported for custom builds.
- (VMMaker)
RawBitsArray >> byteAt:is now expected in the base Squeak image (i.e. Squeak 6.1alpha and later) because it was removed fromVMMaker-Simulationpackage
- On macOS, the full-screen primitive 233 will crash the VM because a corresponding platform call is made from the wrong thread. See Compatibility Notes above. Will be fixed in next release candidate.
- On macOS, setting the Squeak window size via HostWindowPlugin will result in strange behavior on Retina displays because of a regression in the plugin. Will be fixed in next release candidate.
- On Windows, an in-image exception while processing the StartupList can cause a VM crash reporting "Aborting!!!! Color depth 0 not supported", which can be fixed with an immediate
Display beDisplayon start-up. Will be fixed in next release candidate.
ℹ️ Info on VM flavors
- cog.spur (32/64-bit, has JIT, ARM or Intel, Squeak 5.0 and later)
- stack.spur (32/64-bit, no JIT, ARM or Intel, Squeak 5.0 and later)
- cog.v3 (32-bit, has JIT, ARM or Intel, Squeak 4.6 and before)
- stack.v3 (32-bit, no JIT, ARM or Intel, Squeak 4.6 and before)
If you want to compile the sources that are attached here, put the sqSCCSVersion.h from here into platforms/Cross/vm.
202312181441
Release Version 2023.12 (for updated Squeak 6.0/5.3 bundles and Cuis 6)
- Fixes file drop from OS into the image on macOS
- Fixes pass-through of command-line arguments on macOS
- Fixes warning about
applicationSupportsSecureRestorableStateon macOS 12.0+
This is a patch release. Also see the release notes of OSVM Version 2023.
🚧 Compatibility notes
- Pre-built Linux binaries require
GLIBC_2.29, which means Ubuntu 20.04 or later- For older systems, please build on your own
- We will happily help out; just ask on the vm-dev mailing list
- On macOS, a restart of the VM is required after installing SqueakFFI for the first time
- Otherwise, modules and function addresses cannot be loaded
- On Ubuntu 22.04 within VirtualBox 7.0, screen contents stop refreshing after some keyboard input until mouse cursor is moved again
- On Ubuntu/Linux, many SqueakSSL tests fail on Squeak 6.0+ ... might be an image-related issue w/ old certificates
- Occasional crashes (or lock-ups) on RaspPi4 and RaspPi5; we are investigating
- The platform subtype can be
'aarch64', which means that (at least in Squeak) the detection of#isLowerPerformancefails and thus lots of tests are timing out. SeeTestCase >> #defaultTimeout
- The platform subtype can be
202311211431
📢 Please use the more recent release candidate OSVM Version 2023.12
Release Candidate Version 2023
- Adds error codes for ImageSegment storage primitive fail
- Adds error codes for primitiveFileClose on Linux, macOS, and Windows
- Adds machine-code primitive for #primitiveHighResClock on 64-bit platforms
- Adds machine-code primitive for #perform:withArguments: (84)
- Adds VM parameter 50 for maxLiteralCountForCompile
- Adds primitive 96 (primitiveObjectsAccessibleFromRoots) to be used on an array of objects; internally part of primitive 98 (primitiveStoreImageSegment)
- Adds support for multi-byte data to ClipboardExtendedPlugin
- Adds support for various data types to ClipboardExtendedPlugin on Windows
- Adds support for UTF8 Unicode to ClipboardExtendedPlugin on Windows
- Adds flag #upscaleDisplayIfHighDPI to be set via command line or stored in image header; true by default
- Adds support for -eventtrace on Linux and Windows
- Fixes memory leak related to scale-factor lookup on Linux (X11)
- Fixes potential GDI leak in getDpiSystem on Windows
- Fixes failure of Spur image segment loading due to not having enough memory
- Fixes path lookup for "." (i.e., current directory) on Windows
- Fixes JIT issue around frameless block activation
- Fixes JIT issue around cache flushing on ARMv8
- Fixes bug in primitive 105 (primitiveSpurStringReplace)
- Fixes bug in SpurSegmentManager
- Fixes bug in BitBlt rgbMul combination
- Fixes structure argument passing for ARMv8 FFI call-outs
- Fixes float conversions for FFI call-outs
- Fixes float arguments for FFI call-outs on RiscV64
- Fixes #become: on compiled methods for Spur flavors
- Fixes jitted #perform: primitive by adding argument-count check
- Fixes MoveCqR on ARMv8 for certain bit patterns (in the JIT)
- Fixes crash on ARMv8 when toggling fail/succeed primitives for mixed mode arithmetic
- Fixes accessor-depth calculation in SocketPlugin and other places
- Fixes type-declaration problem in DeflatePlugin for 64-bit RiscV
- Fixes other issues around SmartSyntaxInterpreterPlugins (e.g., JPEGReadWriter2Plugin, BitBltSimulation, SocketPlugin)
- Updates support for compilation on RiscV64 (including FFI plugin)
- Updates VectorEnginePlugin to 2022-10-28 (89cc00e86...) from Cuis
- Updates BitBltPlugin to be faster for noSource/noHalftone setup
- Updates joystick support on Linux
🚧 Compatibility notes
- Pre-built Linux binaries require
GLIBC_2.29, which means Ubuntu 20.04 or later- For older systems, please build on your own
- We will happily help out; just ask on the vm-dev mailing list
- On macOS, a restart of the VM is required after installing SqueakFFI for the first time
- Otherwise, modules and function addresses cannot be loaded
- On Ubuntu 22.04 within VirtualBox 7.0, screen contents stop refreshing after some keyboard input until mouse cursor is moved again
- On Ubuntu/Linux, many SqueakSSL tests fail on Squeak 6.0+ ... might be an image-related issue
- On macOS, command-line arguments are not passed to the image (see #668)
- Fixed via 1b15c7e
- On macOS, file-drop crashes the VM
- Fixed via cc2dd90
- Crashes on RaspPi4; we are investigating
- The platform subtype can be
'aarch64', which means that (at least in Squeak) the detection of#isLowerPerformancefails and thus lots of tests are timing out. SeeTestCase >> #defaultTimeout
- The platform subtype can be
202206021410
Release Version 2022.06 (for Squeak 6.0 and updated 5.3 bundles)
- Adds joystick/gamepad support on Linux
- Fixes support for OpenSSL3 on Linux
- Fixes resolution of fully-qualified domain names (FQDNs) longer than 64 characters on Linux
This is a patch release. Also see the release notes of OSVM Version 2022.
- Memory leak on X11 (Linux) related to scale-factor lookup
- 100-200 KiB every 3-6 seconds
- See issue #642
- Workaround via environment variable
SQUEAK_DISPLAY_PER_MONITOR_SCALE=1 - Does not affect
-headless-vm-display-X11 -headless-nodisplay-vm-display-null(i.e., smalltalkCI is fine)
202205110711
📢 Please use the more recent patch release OSVM Version 2022.06
Release Version 2022
- Adds ARMv8/Aarch64/ARM64 JIT incl. support for Apple M1
- Adds "fast C primitives" via #FastCPrimitiveFlag
- Adds support for catching exceptions in FFI callouts
- Adds #primitiveScreenScaleFactor (for DPI-aware images)
- Adds primitives 568 and 578 complementing 88 (primitiveSuspend)
- Adds #primitiveMultipleBytecodeSetsActive to update image format for SistaV1
- Adds VectorEnginePlugin
- Fixes regressions in ARMv6 support
- Fixes performance regressions of -metal and -opengl backends on macOS
- Fixes -core-graphics backend on macOS
- Fixes Retina scaling on macOS, i.e., support "backing scale factor"
- Fixes primitive 126 to fail on graphics backends w/o composition buffer
- Fixes regressions in vm-display-fbdev on Linux
- Fixes time sync (e.g., for DST) on Windows
- Fixes UDP binding on Windows
- No support for OpenSSL3 (e.g., on Ubuntu 22.04)
202204190959
Release Candidate 3
202112201228
Release Candidate 2
202112022203
CogVm source as per VMMaker.oscog-eem.3117 Cog ARMv8: Since id_aa64isar0_el1 is a priviledged instruction use getauxval on linux to derive the value(s) derived there-from, currenty whether atomic instructions are available or not. This addresses opensmalltalk-vm Issue #608.