Hi all,

We wanted to share a new VM release, aimed at Pharo 14 images.

https://github.com/pharo-project/pharo-vm/releases/tag/v12.0.2-beta

Besides many cleanups and small improvements, this enables a soon-to-come stack 
overflow support.
For those interested in more details, I allowed myself to generate a digested 
changes log with some AI.

Those using zeroconf will see this change effective immediately.
Launcher users, do not forget to update your VMs.

Please consider this is a beta release.
Do not hesitate to communicate any issues you may find.

Cheers,
G

Highlights

This is a major release featuring:

Frame unification and stack management improvements, delivering substantial 
interpreter and execution engine cleanups.
RISC-V JIT support, expanding platform coverage and future-proofing VM 
development.
New memory management capabilities, including direct old-space allocation and 
numerous GC and allocation improvements.
Extensive compiler and Slang/C translation work, with many correctness fixes, 
new tests, and improved inspection tools.
Platform and build modernization, including SDL updates, improved CI, 
cross-build support, and updated third-party dependencies.
Large-scale cleanup and refactoring efforts across the VM, interpreter, Cogit, 
PICs, and infrastructure.
VM Runtime, Interpreter & JIT

Frame unification (#602 <https://github.com/pharo-project/pharo-vm/pull/602>)
Improvements in stack management (#710 
<https://github.com/pharo-project/pharo-vm/pull/710>)
Initialize stack pages during simulation (#853 
<https://github.com/pharo-project/pharo-vm/pull/853>)
Robust cannotInterpret: in the interpreter (#641 
<https://github.com/pharo-project/pharo-vm/pull/641>)
Simplify stack-to-register mapping API (#627 
<https://github.com/pharo-project/pharo-vm/pull/627>)
Improve and use unreachable (#630 
<https://github.com/pharo-project/pharo-vm/pull/630>)
Clean up Interpreter State (#658 
<https://github.com/pharo-project/pharo-vm/pull/658>)
Void the instructionPointer systematically when creating a base frame (#914 
<https://github.com/pharo-project/pharo-vm/pull/914>)
Cleanup make base frame when compacting code (#943 
<https://github.com/pharo-project/pharo-vm/pull/943>)
Fix meta try primitive (#968 
<https://github.com/pharo-project/pharo-vm/pull/968>)
Feature: thisProcess JIT (#1037 
<https://github.com/pharo-project/pharo-vm/pull/1037>)
OpenPIC / Megamorphic IC work (#1067 
<https://github.com/pharo-project/pharo-vm/pull/1067>)
PIC Cleanup (#889 <https://github.com/pharo-project/pharo-vm/pull/889>)
Cleanup PIC (#1021 <https://github.com/pharo-project/pharo-vm/pull/1021>)
Allow Cogit>>#mnuMethodOrNilFor: to return non-CompiledMethod oops (#936 
<https://github.com/pharo-project/pharo-vm/pull/936>)
Remove entry alignment (#934 
<https://github.com/pharo-project/pharo-vm/pull/934>)
Mark debugging overrides in Cogit as #debuggerCompleteToSender (#1035 
<https://github.com/pharo-project/pharo-vm/pull/1035>)
Memory Management & Garbage Collection

Do not unlink all sends on GC (#503 
<https://github.com/pharo-project/pharo-vm/pull/503>)
Improving perm space P12 (#621 
<https://github.com/pharo-project/pharo-vm/pull/621>)
Added new primitive for allocating directly in the old space (#701 
<https://github.com/pharo-project/pharo-vm/pull/701>)
Adding test to test Ephemerons in the Old Space (#702 
<https://github.com/pharo-project/pharo-vm/pull/702>)
Clean special object array a little (#640 
<https://github.com/pharo-project/pharo-vm/pull/640>)
Collapse allocation logs (#913 
<https://github.com/pharo-project/pharo-vm/pull/913>)
Only scan the class table if become: was performed to an active class object 
(#1023 <https://github.com/pharo-project/pharo-vm/pull/1023>)
Set the size of larger indexable objects allocated in young space (#976 
<https://github.com/pharo-project/pharo-vm/pull/976>)
Fix LargeIntegers segfault on allocation failure (#1040 
<https://github.com/pharo-project/pharo-vm/pull/1040>)
Compiler, Slang & Code Generation

Reject reserved words (#613 
<https://github.com/pharo-project/pharo-vm/pull/613>)
Rename reserved words: selectors, locals and instance variables (#624 
<https://github.com/pharo-project/pharo-vm/pull/624>)
Rename conflicting identifiers (#646 
<https://github.com/pharo-project/pharo-vm/pull/646>)
Validate if locals/args exist when adding a type declaration (#603 
<https://github.com/pharo-project/pharo-vm/pull/603>)
Check structs' instance variable type declarations (#607 
<https://github.com/pharo-project/pharo-vm/pull/607>)
Redundant type declaration linter rule (#662 
<https://github.com/pharo-project/pharo-vm/pull/662>)
Fix cast tests (#660 <https://github.com/pharo-project/pharo-vm/pull/660>)
Fix and test inlinings with ifs and right shifts not translated (#667 
<https://github.com/pharo-project/pharo-vm/pull/667>)
Add tests and fix incorrectly generated inlined C code from CCodeGenerator 
(#666 <https://github.com/pharo-project/pharo-vm/pull/666>)
C AST translation right-side parenthesis in expression (#685 
<https://github.com/pharo-project/pharo-vm/pull/685>)
Add a palette with the C translation of any inspected C node (#686 
<https://github.com/pharo-project/pharo-vm/pull/686>)
Add C source code inspection tab for TParseNode (#687 
<https://github.com/pharo-project/pharo-vm/pull/687>)
Created new package CAST-Tests (#679 
<https://github.com/pharo-project/pharo-vm/pull/679>)
Better dead code elimination (#915 
<https://github.com/pharo-project/pharo-vm/pull/915>)
Fix issue #822 <https://github.com/pharo-project/pharo-vm/issues/822>: remove 
unused argument for functionPointerFor:inClass: (#956 
<https://github.com/pharo-project/pharo-vm/pull/956>)
Fix CASTParserTests>>#testParseSizeofTypeInt (#965 
<https://github.com/pharo-project/pharo-vm/pull/965>)
Refactor inlining code and add tests for it (#987 
<https://github.com/pharo-project/pharo-vm/pull/987>)
Suppress the old inlining implementation (#1000 
<https://github.com/pharo-project/pharo-vm/pull/1000>)
Fix small bug related to method inlining and comments (#957 
<https://github.com/pharo-project/pharo-vm/pull/957>)
Remove the idea that we might have a different bytecode set (#927 
<https://github.com/pharo-project/pharo-vm/pull/927>)
Add a dumb isNotNil implementation (same as notNil) (#890 
<https://github.com/pharo-project/pharo-vm/pull/890>)
Platform Support & Portability

RISC-V JIT Support (#932 <https://github.com/pharo-project/pharo-vm/pull/932>)
Initial work on W^X for Linux systems (#905 
<https://github.com/pharo-project/pharo-vm/pull/905>)
Add Windows support for non-ASCII filenames in basicImageFileExists (#922 
<https://github.com/pharo-project/pharo-vm/pull/922>)
Fix the Windows build (#938 
<https://github.com/pharo-project/pharo-vm/pull/938>)
Windows improvements (#1062 
<https://github.com/pharo-project/pharo-vm/pull/1062>)
Make next non-blocking on Linux (#1065 
<https://github.com/pharo-project/pharo-vm/pull/1065>)
Support x86_64 musl cross-build smoke testing with QEMU (#1069 
<https://github.com/pharo-project/pharo-vm/pull/1069>)
Updating versions for OSX (ARM / Intel) (#937 
<https://github.com/pharo-project/pharo-vm/pull/937>)
Build System, CI & Dependencies

Update SDL (#615 <https://github.com/pharo-project/pharo-vm/pull/615>)
Remove strange SDL2_copy CMake target (#620 
<https://github.com/pharo-project/pharo-vm/pull/620>)
Forward VM build parameters from CMake (#654 
<https://github.com/pharo-project/pharo-vm/pull/654>)
Use Pharo 11 on CI (#669 <https://github.com/pharo-project/pharo-vm/pull/669>)
Use Pharo file server @ Inria (#868 
<https://github.com/pharo-project/pharo-vm/pull/868>)
Extract full semantic version from git (#870 
<https://github.com/pharo-project/pharo-vm/pull/870>)
Remove old versions of libgit in new builds (#902 
<https://github.com/pharo-project/pharo-vm/pull/902>)
Update CMake minimal version for recent CMake compatibility (#945 
<https://github.com/pharo-project/pharo-vm/pull/945>)
Updating LibGit2 build to use new OpenSSL and libssh2 (#1033 
<https://github.com/pharo-project/pharo-vm/pull/1033>)
SDL2 2.32.6 update for Windows and macOS (#978 
<https://github.com/pharo-project/pharo-vm/pull/978>)
Fix OBS build (#981 <https://github.com/pharo-project/pharo-vm/pull/981>)
Add FEATURE_JIT_SIMD option (#966 
<https://github.com/pharo-project/pharo-vm/pull/966>)
Fix Linux compilation error (#1053 
<https://github.com/pharo-project/pharo-vm/pull/1053>)
Plugins, I/O & Networking

New file plugin (#1024 <https://github.com/pharo-project/pharo-vm/pull/1024>)
Fix missing socket accept on Pharo 12 (#1005 
<https://github.com/pharo-project/pharo-vm/pull/1005>)
Move warnings to debug when loading plugins (#675 
<https://github.com/pharo-project/pharo-vm/pull/675>)
Testing & Simulation

Small stack interpreter tests (#690 
<https://github.com/pharo-project/pharo-vm/pull/690>)
Simulator fixes (#1025 <https://github.com/pharo-project/pharo-vm/pull/1025>)
Fix VM tests: specialObjectsArrayAddress (#1056 
<https://github.com/pharo-project/pharo-vm/pull/1056>)
Fix broken GC tests (#917 <https://github.com/pharo-project/pharo-vm/pull/917>)
Fix some Slang tests (#891 <https://github.com/pharo-project/pharo-vm/pull/891>)
Redo ML localization test fixes (#1064 
<https://github.com/pharo-project/pharo-vm/pull/1064>)
Bug Fixes

Resolved UUID primitive bug (#610 
<https://github.com/pharo-project/pharo-vm/pull/610>)
Make instantiateClass more robust when format is missing (#629 
<https://github.com/pharo-project/pharo-vm/pull/629>)
Revert #629 <https://github.com/pharo-project/pharo-vm/pull/629> (#631 
<https://github.com/pharo-project/pharo-vm/pull/631>)
Revert the revert and restore primitive failure handling (#634 
<https://github.com/pharo-project/pharo-vm/pull/634>)
Add getClass for Pharo 12 compatibility (#651 
<https://github.com/pharo-project/pharo-vm/pull/651>)
Fix warning absolute value (#782 
<https://github.com/pharo-project/pharo-vm/pull/782>)
Fix load 32 bits (#920 <https://github.com/pharo-project/pharo-vm/pull/920>)
Fix headerAt:put: (#919 <https://github.com/pharo-project/pharo-vm/pull/919>)
Fix sign coercion warnings (#950 
<https://github.com/pharo-project/pharo-vm/pull/950>)
Fix int boxing/loading (#1066 
<https://github.com/pharo-project/pharo-vm/pull/1066>)
VM version primitive (#1050 
<https://github.com/pharo-project/pharo-vm/pull/1050>)
Profile data extraction from PIC cache tags (#969 
<https://github.com/pharo-project/pharo-vm/pull/969>)
Refactoring, Cleanup & Maintenance

Added comments and renamed methods during dojo (#623 
<https://github.com/pharo-project/pharo-vm/pull/623>)
Fixing categorization P12 (#626 
<https://github.com/pharo-project/pharo-vm/pull/626>)
Updating P12 with changes from P10 branch (#733 
<https://github.com/pharo-project/pharo-vm/pull/733>)
Forward porting P10 → P12 (#851 
<https://github.com/pharo-project/pharo-vm/pull/851>)
Forward port 10 → 12 (#893 <https://github.com/pharo-project/pharo-vm/pull/893>)
Forward port 10.3.3 → Pharo 12 (#903 
<https://github.com/pharo-project/pharo-vm/pull/903>)
Realign P12 branch to P10 (#1057 
<https://github.com/pharo-project/pharo-vm/pull/1057>)
Removing duplicated code (#857 
<https://github.com/pharo-project/pharo-vm/pull/857>)
Cleanups and improvements (#871 
<https://github.com/pharo-project/pharo-vm/pull/871>)
Lots of cleanups (#874 <https://github.com/pharo-project/pharo-vm/pull/874>)
Cleaning (#881 <https://github.com/pharo-project/pharo-vm/pull/881>)
Cleanup dead code (#961 <https://github.com/pharo-project/pharo-vm/pull/961>)
Cleanup warnings (#906 <https://github.com/pharo-project/pharo-vm/pull/906>)
Fix warnings (#1034 <https://github.com/pharo-project/pharo-vm/pull/1034>)
Remove debugging code (#911 
<https://github.com/pharo-project/pharo-vm/pull/911>)
Remove unused variables (#930 
<https://github.com/pharo-project/pharo-vm/pull/930>)
Normalize variable (#897 <https://github.com/pharo-project/pharo-vm/pull/897>)
Remove gcMode because getGCMode is used (#963 
<https://github.com/pharo-project/pharo-vm/pull/963>)
Remove ceShortCutTraceStore: and simulation guard users (#960 
<https://github.com/pharo-project/pharo-vm/pull/960>)
Simplify signal handler space calculation using POSIX SIGSTKSZ (#910 
<https://github.com/pharo-project/pharo-vm/pull/910>)
Documentation & Developer Experience

README: Developer documentation is not a link (#637 
<https://github.com/pharo-project/pharo-vm/pull/637>)
Update README (#878 <https://github.com/pharo-project/pharo-vm/pull/878>)
Add default values to --help parameters (#872 
<https://github.com/pharo-project/pharo-vm/pull/872>)
Fix typos in comments (#958 
<https://github.com/pharo-project/pharo-vm/pull/958>)
New Contributors

@Mathilde411 <https://github.com/Mathilde411>
@LucFabresse <https://github.com/LucFabresse>
@ivojawer <https://github.com/ivojawer>
@Gabriel-Darbord <https://github.com/Gabriel-Darbord>
@iglosiggio <https://github.com/iglosiggio>
@rolandbernard <https://github.com/rolandbernard>
@fouziray <https://github.com/fouziray>
@kilian-kier <https://github.com/kilian-kier>
@NathanMalenge <https://github.com/NathanMalenge>
@FedeLoch <https://github.com/FedeLoch>
@Ducasse <https://github.com/Ducasse>
@takano32 <https://github.com/takano32>

Reply via email to