opensmalltalk-vm

Cross-platform virtual machine for Squeak, Pharo, Cuis, and Newspeak.

OTHER License

Stars
539
Committers
76

Bot releases are visible (Hide)

opensmalltalk-vm - 202312181441 Latest Release

Published by github-actions[bot] 10 months ago

Release (Candidate) Version 2023.12 (for updated Squeak 6.0 and 5.3 bundles)

  • 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
opensmalltalk-vm - 202311211431

Published by github-actions[bot] 11 months ago

Release candidate for OSVM 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
opensmalltalk-vm - 202206021410

Published by github-actions[bot] over 2 years ago

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

opensmalltalk-vm - 202205110711

Published by github-actions[bot] over 2 years ago

📢 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)
opensmalltalk-vm - 202204190959

Published by github-actions[bot] over 2 years ago

opensmalltalk-vm - 202112201228

Published by github-actions[bot] almost 3 years ago

opensmalltalk-vm - 202112022203

Published by github-actions[bot] almost 3 years ago

opensmalltalk-vm - latest-build

Published by github-actions[bot] about 3 years ago

CogVM source as per VMMaker.oscog-eem.3339

Now the MT vm is using C intrinsics there are no trampolines for the COGMTVM
configuration.

First mostly stable version of the Threaded FFI.

Most important changes are:

  1. Use C11 atomic instructions for the vmOwner.
    This simplifies the CPXCHG instruction and should make this a lot more resistant to breaking due to compiler optimizations.

  2. Fix a critical bug when reentering the threadSchedulingLoop
    Previously this used the wrong jmp_buf, therefore a thread that tried to return to its threadSchedulingLoop might end up in the threadSchedulingLoop of ANOTHER thread!

With these two changes in place, the VM runs mostly stable whilst switching between two threads in the spurreader image.
There are still some bugs to fix, especially in the scheduler, as well as synchronizing access to the threads variable.
But this is good progress for now.

Rename CoInterpreterMT's processHasThreadId inst var to processHasThreadAffinity in the wake of Kernel-eem.1523.

First commit of Leon Matthes' work to revive the threaded FFI (committed by eem on behalf of LM cuz of Monticello permissions on source.squeak.org).

Fix simulation so that the current processor register state reflects the current Smalltalk process. Eliot's first attempt was a bit broken. This approach of manually switching register states in tryLockVMOwnerTo: preserves fast simulation because we're not changing register state on every send to the processor object as was the case with the original MultiProcessor wrapper. Check for a missing register state by setting the register state for stack, frame & pc pointers to zero. Label the processes spawned by the simulation so they show up nicely in the process browser.

releaseVM was used several places where disownVM: should have been used.

Simplify cedeToHigherPriorityThreads; the VM can't be unowned when invoked.

Nuke some unneeded halts.

minor clean-up/commentary.

Help myself by documenting what the snapshotPrimitive answers (false for snapshot, true for resume).

Simplify SpurMemoryManager>>#sufficientSpaceAfterGC:. Nuke an unused link reg related utility in the Cogit. Add the CogVMSimulator's fklush method to the STackInterpreterSimulator to ensure that GC progress is printed immediately while simulating.

Build: upgrade the 64=bit macos Makefilews so they can build MT VMs. mvm in
squeak..spur dirs now takes a -T arg and builds with -DCOGMTVM=1 in build??mt
to SqueakMT
.app

opensmalltalk-vm - latest-assert-build

Published by github-actions[bot] about 3 years ago

CogVM source as per VMMaker.oscog-eem.3339

Now the MT vm is using C intrinsics there are no trampolines for the COGMTVM
configuration.

First mostly stable version of the Threaded FFI.

Most important changes are:

  1. Use C11 atomic instructions for the vmOwner.
    This simplifies the CPXCHG instruction and should make this a lot more resistant to breaking due to compiler optimizations.

  2. Fix a critical bug when reentering the threadSchedulingLoop
    Previously this used the wrong jmp_buf, therefore a thread that tried to return to its threadSchedulingLoop might end up in the threadSchedulingLoop of ANOTHER thread!

With these two changes in place, the VM runs mostly stable whilst switching between two threads in the spurreader image.
There are still some bugs to fix, especially in the scheduler, as well as synchronizing access to the threads variable.
But this is good progress for now.

Rename CoInterpreterMT's processHasThreadId inst var to processHasThreadAffinity in the wake of Kernel-eem.1523.

First commit of Leon Matthes' work to revive the threaded FFI (committed by eem on behalf of LM cuz of Monticello permissions on source.squeak.org).

Fix simulation so that the current processor register state reflects the current Smalltalk process. Eliot's first attempt was a bit broken. This approach of manually switching register states in tryLockVMOwnerTo: preserves fast simulation because we're not changing register state on every send to the processor object as was the case with the original MultiProcessor wrapper. Check for a missing register state by setting the register state for stack, frame & pc pointers to zero. Label the processes spawned by the simulation so they show up nicely in the process browser.

releaseVM was used several places where disownVM: should have been used.

Simplify cedeToHigherPriorityThreads; the VM can't be unowned when invoked.

Nuke some unneeded halts.

minor clean-up/commentary.

Help myself by documenting what the snapshotPrimitive answers (false for snapshot, true for resume).

Simplify SpurMemoryManager>>#sufficientSpaceAfterGC:. Nuke an unused link reg related utility in the Cogit. Add the CogVMSimulator's fklush method to the STackInterpreterSimulator to ensure that GC progress is printed immediately while simulating.

Build: upgrade the 64=bit macos Makefilews so they can build MT VMs. mvm in
squeak..spur dirs now takes a -T arg and builds with -DCOGMTVM=1 in build??mt
to SqueakMT
.app

opensmalltalk-vm - latest-debug-build

Published by github-actions[bot] about 3 years ago

CogVM source as per VMMaker.oscog-eem.3339

Now the MT vm is using C intrinsics there are no trampolines for the COGMTVM
configuration.

First mostly stable version of the Threaded FFI.

Most important changes are:

  1. Use C11 atomic instructions for the vmOwner.
    This simplifies the CPXCHG instruction and should make this a lot more resistant to breaking due to compiler optimizations.

  2. Fix a critical bug when reentering the threadSchedulingLoop
    Previously this used the wrong jmp_buf, therefore a thread that tried to return to its threadSchedulingLoop might end up in the threadSchedulingLoop of ANOTHER thread!

With these two changes in place, the VM runs mostly stable whilst switching between two threads in the spurreader image.
There are still some bugs to fix, especially in the scheduler, as well as synchronizing access to the threads variable.
But this is good progress for now.

Rename CoInterpreterMT's processHasThreadId inst var to processHasThreadAffinity in the wake of Kernel-eem.1523.

First commit of Leon Matthes' work to revive the threaded FFI (committed by eem on behalf of LM cuz of Monticello permissions on source.squeak.org).

Fix simulation so that the current processor register state reflects the current Smalltalk process. Eliot's first attempt was a bit broken. This approach of manually switching register states in tryLockVMOwnerTo: preserves fast simulation because we're not changing register state on every send to the processor object as was the case with the original MultiProcessor wrapper. Check for a missing register state by setting the register state for stack, frame & pc pointers to zero. Label the processes spawned by the simulation so they show up nicely in the process browser.

releaseVM was used several places where disownVM: should have been used.

Simplify cedeToHigherPriorityThreads; the VM can't be unowned when invoked.

Nuke some unneeded halts.

minor clean-up/commentary.

Help myself by documenting what the snapshotPrimitive answers (false for snapshot, true for resume).

Simplify SpurMemoryManager>>#sufficientSpaceAfterGC:. Nuke an unused link reg related utility in the Cogit. Add the CogVMSimulator's fklush method to the STackInterpreterSimulator to ensure that GC progress is printed immediately while simulating.

Build: upgrade the 64=bit macos Makefilews so they can build MT VMs. mvm in
squeak..spur dirs now takes a -T arg and builds with -DCOGMTVM=1 in build??mt
to SqueakMT
.app

opensmalltalk-vm -

Published by fniephaus over 3 years ago

Intermediate release before deprecation of Bintray. Binaries copied over from Bintray.

opensmalltalk-vm -

Published by fniephaus over 4 years ago

Release for Squeak 5.3

opensmalltalk-vm - https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/202002240037

Published by fniephaus over 4 years ago

opensmalltalk-vm - https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201912311458

Published by fniephaus almost 5 years ago

opensmalltalk-vm - 201804182009

Published by fniephaus almost 5 years ago

Release for Newspeak

opensmalltalk-vm - https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201911282316

Published by fniephaus almost 5 years ago

opensmalltalk-vm - https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201911012148

Published by fniephaus almost 5 years ago

opensmalltalk-vm - https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201901172323

Published by fniephaus over 5 years ago

opensmalltalk-vm - https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201810190412

Published by fniephaus almost 6 years ago

opensmalltalk-vm - https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201810071412

Published by fniephaus about 6 years ago