Skip to content

Releases: OpenSmalltalk/opensmalltalk-vm

202601200834

20 Jan 10:03
1c4b7ea

Choose a tag to compare

202601200834 Pre-release
Pre-release

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 primitiveSlotAtPut to 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 primitiveAtPut for DoubleWordArray (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

⚠️ Known issues

  • ...

🚧 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 from VMMaker-Simulation package

ℹ️ 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.35 or later; Ubuntu Pro LTS support lasts until 2032)
    • cog.spur for Ubuntu 20.04 (requires GLIBC_2.31 or later; Ubuntu Pro LTS support lasts until 2030)

If you want to compile the sources that are attached here, put the sqSCCSVersion.h from here into platforms/Cross/vm.

202512161609

16 Dec 16:55

Choose a tag to compare

202512161609 Pre-release
Pre-release

📢 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 rgbMul rule 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 BitBltSimulation plugin
  • Fixes simulation of V3 StackInterpreter
  • Fixes simulation via Matrix2x3PluginSimulator (asserts fixed)
  • Fixes for opening the recent instructions log

⚠️ Known issues

  • 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 from VMMaker-Simulation package

ℹ️ 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

07 Oct 07:40

Choose a tag to compare

202509300044 Pre-release
Pre-release

📢 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 #primitiveScreenScaleFactor reported 0 in 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 from VMMaker-Simulation package

⚠️ Known issues

  • 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 beDisplay on 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

20 Dec 14:15

Choose a tag to compare

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 applicationSupportsSecureRestorableState on 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

⚠️ Known issues

  • 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 #isLowerPerformance fails and thus lots of tests are timing out. See TestCase >> #defaultTimeout

202311211431

21 Nov 14:46

Choose a tag to compare

202311211431 Pre-release
Pre-release

📢 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

⚠️ Known issues

  • 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)
  • On macOS, file-drop crashes the VM
  • Crashes on RaspPi4; we are investigating
    • The platform subtype can be 'aarch64', which means that (at least in Squeak) the detection of #isLowerPerformance fails and thus lots of tests are timing out. See TestCase >> #defaultTimeout

202206021410

02 Jun 15:10
c9fd365

Choose a tag to compare

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.

⚠️ Known Issues

  • 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

11 May 07:34

Choose a tag to compare

📢 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

⚠️ Known Issues

  • No support for OpenSSL3 (e.g., on Ubuntu 22.04)

202204190959

19 Apr 11:41

Choose a tag to compare

202204190959 Pre-release
Pre-release
Release Candidate 3

202112201228

20 Dec 12:45

Choose a tag to compare

202112201228 Pre-release
Pre-release
Release Candidate 2

202112022203

08 Dec 17:44

Choose a tag to compare

202112022203 Pre-release
Pre-release
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.