Pharo – New VM Release

Tomte1 pts0 comments

Pharo - [VM] New VM Release

[VM] New VM Release

Hi all,<br>We wanted to share a new VM release, aimed at Pharo 14 images.<br>https://github.com/pharo-project/pharo-vm/releases/tag/v12.0.2-beta<br>Besides many cleanups and small improvements, this enables a soon-to-come stack overflow support.<br>For those interested in more details, I allowed myself to generate a digested changes log with some AI.<br>Those using zeroconf will see this change effective immediately.<br>Launcher users, do not forget to update your VMs.<br>Please consider this is a beta release.<br>Do not hesitate to communicate any issues you may find.<br>Cheers,<br>Guille Polito<br>Highlights<br>This is a major release featuring:<br>Frame unification and stack management improvements, delivering substantial interpreter and execution engine cleanups.<br>RISC-V JIT support, expanding platform coverage and future-proofing VM development.<br>New memory management capabilities, including direct old-space allocation and numerous GC and allocation improvements.<br>Extensive compiler and Slang/C translation work, with many correctness fixes, new tests, and improved inspection tools.<br>Platform and build modernization, including SDL updates, improved CI, cross-build support, and updated third-party dependencies.<br>Large-scale cleanup and refactoring efforts across the VM, interpreter, Cogit, PICs, and infrastructure.<br>VM Runtime, Interpreter & JIT<br>Frame unification (#602)<br>Improvements in stack management (#710)<br>Initialize stack pages during simulation (#853)<br>Robust cannotInterpret: in the interpreter (#641)<br>Simplify stack-to-register mapping API (#627)<br>Improve and use unreachable (#630)<br>Clean up Interpreter State (#658)<br>Void the instructionPointer systematically when creating a base frame (#914)<br>Cleanup make base frame when compacting code (#943)<br>Fix meta try primitive (#968)<br>Feature: thisProcess JIT (#1037)<br>OpenPIC / Megamorphic IC work (#1067)<br>PIC Cleanup (#889)<br>Cleanup PIC (#1021)<br>Allow Cogit>>#mnuMethodOrNilFor: to return non-CompiledMethod oops (#936)<br>Remove entry alignment (#934)<br>Mark debugging overrides in Cogit as #debuggerCompleteToSender (#1035)<br>Memory Management & Garbage Collection<br>Do not unlink all sends on GC (#503)<br>Improving perm space P12 (#621)<br>Added new primitive for allocating directly in the old space (#701)<br>Adding test to test Ephemerons in the Old Space (#702)<br>Clean special object array a little (#640)<br>Collapse allocation logs (#913)<br>Only scan the class table if become: was performed to an active class object (#1023)<br>Set the size of larger indexable objects allocated in young space (#976)<br>Fix LargeIntegers segfault on allocation failure (#1040)<br>Compiler, Slang & Code Generation<br>Reject reserved words (#613)<br>Rename reserved words: selectors, locals and instance variables (#624)<br>Rename conflicting identifiers (#646)<br>Validate if locals/args exist when adding a type declaration (#603)<br>Check structs' instance variable type declarations (#607)<br>Redundant type declaration linter rule (#662)<br>Fix cast tests (#660)<br>Fix and test inlinings with ifs and right shifts not translated (#667)<br>Add tests and fix incorrectly generated inlined C code from CCodeGenerator (#666)<br>C AST translation right-side parenthesis in expression (#685)<br>Add a palette with the C translation of any inspected C node (#686)<br>Add C source code inspection tab for TParseNode (#687)<br>Created new package CAST-Tests (#679)<br>Better dead code elimination (#915)<br>Fix issue #822: remove unused argument for functionPointerFor:inClass: (#956)<br>Fix CASTParserTests>>#testParseSizeofTypeInt (#965)<br>Refactor inlining code and add tests for it (#987)<br>Suppress the old inlining implementation (#1000)<br>Fix small bug related to method inlining and comments (#957)<br>Remove the idea that we might have a different bytecode set (#927)<br>Add a dumb isNotNil implementation (same as notNil) (#890)<br>Platform Support & Portability<br>RISC-V JIT Support (#932)<br>Initial work on W^X for Linux systems (#905)<br>Add Windows support for non-ASCII filenames in basicImageFileExists (#922)<br>Fix the Windows build (#938)<br>Windows improvements (#1062)<br>Make next non-blocking on Linux (#1065)<br>Support x86_64 musl cross-build smoke testing with QEMU (#1069)<br>Updating versions for OSX (ARM / Intel) (#937)<br>Build System, CI & Dependencies<br>Update SDL (#615)<br>Remove strange SDL2_copy CMake target (#620)<br>Forward VM build parameters from CMake (#654)<br>Use Pharo 11 on CI (#669)<br>Use Pharo file server @ Inria (#868)<br>Extract full semantic version from git (#870)<br>Remove old versions of libgit in new builds (#902)<br>Update CMake minimal version for recent CMake compatibility (#945)<br>Updating LibGit2 build to use new OpenSSL and libssh2 (#1033)<br>SDL2 2.32.6 update for Windows and macOS (#978)<br>Fix OBS build (#981)<br>Add FEATUREJITSIMD option (#966)<br>Fix Linux compilation error (#1053)<br>Plugins, I/O & Networking<br>New file plugin (#1024)<br>Fix missing socket accept on Pharo 12 (#1005)<br>Move warnings to debug when loading plugins (#675)<br>Testing & Simulation<br>Small stack interpreter tests (#690)<br>Simulator fixes...

pharo build support release stack interpreter

Related Articles